Merge commit '6453ecf2f0dff1ec1306c8c5c1e4f81a27755431' from release-0.9.4-pre-rc
Change-Id: I6baed7a75ec38755d6e040f2b7f1ede54c191f0f
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
index a82e780..60d4d3d 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
@@ -528,11 +528,6 @@
}
}
- if (primaryIndexPostProccessingIsNeeded) {
- Arrays.fill(lowKeyInclusive, true);
- Arrays.fill(highKeyInclusive, true);
- }
-
// determine cases when prefix search could be applied
for (int i = 1; i < lowKeyExprs.length; i++) {
if (lowKeyLimits[0] == null && lowKeyLimits[i] != null || lowKeyLimits[0] != null && lowKeyLimits[i] == null
@@ -542,6 +537,12 @@
primaryIndexPostProccessingIsNeeded = true;
}
}
+
+ if (primaryIndexPostProccessingIsNeeded) {
+ Arrays.fill(lowKeyInclusive, true);
+ Arrays.fill(highKeyInclusive, true);
+ }
+
if (lowKeyLimits[0] == null) {
lowKeyInclusive[0] = true;
}
@@ -563,8 +564,10 @@
BTreeJobGenParams jobGenParams = new BTreeJobGenParams(chosenIndex.getIndexName(), IndexType.BTREE,
dataset.getDataverseName(), dataset.getDatasetName(), retainInput, requiresBroadcast);
- jobGenParams.setLowKeyInclusive(lowKeyInclusive[0]);
- jobGenParams.setHighKeyInclusive(highKeyInclusive[0]);
+ jobGenParams
+ .setLowKeyInclusive(lowKeyInclusive[primaryIndexPostProccessingIsNeeded ? 0 : numSecondaryKeys - 1]);
+ jobGenParams
+ .setHighKeyInclusive(highKeyInclusive[primaryIndexPostProccessingIsNeeded ? 0 : numSecondaryKeys - 1]);
jobGenParams.setIsEqCondition(isEqCondition);
jobGenParams.setLowKeyVarList(keyVarList, 0, numLowKeys);
jobGenParams.setHighKeyVarList(keyVarList, numLowKeys, numHighKeys);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index 3564736..a420efc 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -154,13 +154,13 @@
}
@Override
- protected void handleExecuteStatementException(Throwable t, RequestExecutionState execution) {
- if (t instanceof TimeoutException
+ protected void handleExecuteStatementException(Throwable t, RequestExecutionState state, RequestParameters param) {
+ if (t instanceof TimeoutException // TODO(mblow): I don't think t can ever been an instance of TimeoutException
|| ExceptionUtils.matchingCause(t, candidate -> candidate instanceof IPCException)) {
GlobalConfig.ASTERIX_LOGGER.log(Level.WARN, t.toString(), t);
- execution.setStatus(ResultStatus.FAILED, HttpResponseStatus.SERVICE_UNAVAILABLE);
+ state.setStatus(ResultStatus.FAILED, HttpResponseStatus.SERVICE_UNAVAILABLE);
} else {
- super.handleExecuteStatementException(t, execution);
+ super.handleExecuteStatementException(t, state, param);
}
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index 1057a73..56359e3 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -18,6 +18,11 @@
*/
package org.apache.asterix.api.http.server;
+import static org.apache.asterix.common.exceptions.ErrorCode.ASTERIX;
+import static org.apache.asterix.common.exceptions.ErrorCode.QUERY_TIMEOUT;
+import static org.apache.asterix.common.exceptions.ErrorCode.REJECT_BAD_CLUSTER_STATE;
+import static org.apache.asterix.common.exceptions.ErrorCode.REJECT_NODE_UNREGISTERED;
+
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
@@ -35,7 +40,6 @@
import org.apache.asterix.common.context.IStorageComponentProvider;
import org.apache.asterix.common.dataflow.ICcApplicationContext;
import org.apache.asterix.common.exceptions.AsterixException;
-import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.compiler.provider.ILangCompilationProvider;
import org.apache.asterix.lang.aql.parser.TokenMgrError;
import org.apache.asterix.lang.common.base.IParser;
@@ -69,7 +73,6 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
-
import io.netty.handler.codec.http.HttpResponseStatus;
public class QueryServiceServlet extends AbstractQueryApiServlet {
@@ -212,7 +215,8 @@
on.put("maxResultReads", maxResultReads);
return om.writer(new MinimalPrettyPrinter()).writeValueAsString(on);
} catch (JsonProcessingException e) { // NOSONAR
- return e.getMessage();
+ LOGGER.debug("unexpected exception marshalling {} instance to json", getClass(), e);
+ return e.toString();
}
}
}
@@ -447,7 +451,7 @@
private void handleRequest(IServletRequest request, IServletResponse response) throws IOException {
RequestParameters param = getRequestParameters(request);
- LOGGER.info(param.toString());
+ LOGGER.info("handleRequest: {}", param);
long elapsedStart = System.nanoTime();
final PrintWriter httpWriter = response.writer();
@@ -492,7 +496,7 @@
}
errorCount = 0;
} catch (Exception | TokenMgrError | org.apache.asterix.aqlplus.parser.TokenMgrError e) {
- handleExecuteStatementException(e, execution);
+ handleExecuteStatementException(e, execution, param);
response.setStatus(execution.getHttpStatus());
ResultUtil.printError(sessionOutput.out(), e);
ResultUtil.printStatus(sessionOutput, execution.getResultStatus());
@@ -531,21 +535,35 @@
execution.end();
}
- protected void handleExecuteStatementException(Throwable t, RequestExecutionState execution) {
+ protected void handleExecuteStatementException(Throwable t, RequestExecutionState state, RequestParameters param) {
if (t instanceof org.apache.asterix.aqlplus.parser.TokenMgrError || t instanceof TokenMgrError
|| t instanceof AlgebricksException) {
- GlobalConfig.ASTERIX_LOGGER.log(Level.INFO, t.getMessage(), t);
- execution.setStatus(ResultStatus.FATAL, HttpResponseStatus.BAD_REQUEST);
- } else if (t instanceof HyracksException) {
- GlobalConfig.ASTERIX_LOGGER.log(Level.WARN, t.getMessage(), t);
- if (((HyracksException) t).getErrorCode() == ErrorCode.QUERY_TIMEOUT) {
- execution.setStatus(ResultStatus.TIMEOUT, HttpResponseStatus.OK);
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("handleException: {}: {}", t.getMessage(), param, t);
} else {
- execution.setStatus(ResultStatus.FATAL, HttpResponseStatus.INTERNAL_SERVER_ERROR);
+ LOGGER.info("handleException: {}: {}", t.getMessage(), param);
+ }
+ state.setStatus(ResultStatus.FATAL, HttpResponseStatus.BAD_REQUEST);
+ } else if (t instanceof HyracksException) {
+ HyracksException he = (HyracksException) t;
+ switch (he.getComponent() + he.getErrorCode()) {
+ case ASTERIX + QUERY_TIMEOUT:
+ LOGGER.info("handleException: query execution timed out: {}", param);
+ state.setStatus(ResultStatus.TIMEOUT, HttpResponseStatus.OK);
+ break;
+ case ASTERIX + REJECT_BAD_CLUSTER_STATE:
+ case ASTERIX + REJECT_NODE_UNREGISTERED:
+ LOGGER.warn("handleException: {}: {}", he.getMessage(), param);
+ state.setStatus(ResultStatus.FATAL, HttpResponseStatus.SERVICE_UNAVAILABLE);
+ break;
+ default:
+ LOGGER.warn("handleException: unexpected exception {}: {}", he.getMessage(), param, he);
+ state.setStatus(ResultStatus.FATAL, HttpResponseStatus.INTERNAL_SERVER_ERROR);
+ break;
}
} else {
- GlobalConfig.ASTERIX_LOGGER.log(Level.WARN, "Unexpected exception", t);
- execution.setStatus(ResultStatus.FATAL, HttpResponseStatus.INTERNAL_SERVER_ERROR);
+ LOGGER.warn("handleException: unexpected exception: {}", param, t);
+ state.setStatus(ResultStatus.FATAL, HttpResponseStatus.INTERNAL_SERVER_ERROR);
}
}
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
index 31b213e..53d4f3f 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
@@ -34,6 +34,8 @@
import org.apache.asterix.common.config.GlobalConfig;
import org.apache.asterix.common.context.IStorageComponentProvider;
import org.apache.asterix.common.dataflow.ICcApplicationContext;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
import org.apache.asterix.common.messaging.api.ICcAddressedMessage;
import org.apache.asterix.compiler.provider.ILangCompilationProvider;
import org.apache.asterix.hyracks.bootstrap.CCApplication;
@@ -95,7 +97,7 @@
ClusterControllerService ccSrv = (ClusterControllerService) ccSrvContext.getControllerService();
CCApplication ccApp = (CCApplication) ccSrv.getApplication();
CCMessageBroker messageBroker = (CCMessageBroker) ccSrvContext.getMessageBroker();
- final String rejectionReason = getRejectionReason(ccSrv);
+ final RuntimeDataException rejectionReason = getRejectionReason(ccSrv);
if (rejectionReason != null) {
sendRejection(rejectionReason, messageBroker);
return;
@@ -145,22 +147,22 @@
}
}
- private String getRejectionReason(ClusterControllerService ccSrv) {
+ private RuntimeDataException getRejectionReason(ClusterControllerService ccSrv) {
if (ccSrv.getNodeManager().getNodeControllerState(requestNodeId) == null) {
- return "Node is not registerted with the CC";
+ return new RuntimeDataException(ErrorCode.REJECT_NODE_UNREGISTERED);
}
ICcApplicationContext appCtx = (ICcApplicationContext) ccSrv.getApplicationContext();
IClusterStateManager csm = appCtx.getClusterStateManager();
final IClusterManagementWork.ClusterState clusterState = csm.getState();
if (clusterState != IClusterManagementWork.ClusterState.ACTIVE) {
- return "Cannot execute request, cluster is " + clusterState;
+ return new RuntimeDataException(ErrorCode.REJECT_BAD_CLUSTER_STATE, clusterState);
}
return null;
}
- private void sendRejection(String reason, CCMessageBroker messageBroker) {
+ private void sendRejection(RuntimeDataException reason, CCMessageBroker messageBroker) {
ExecuteStatementResponseMessage responseMsg = new ExecuteStatementResponseMessage(requestMessageId);
- responseMsg.setError(new Exception(reason));
+ responseMsg.setError(reason);
try {
messageBroker.sendApplicationMessageToNC(responseMsg, requestNodeId);
} catch (Exception e) {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
index 4b14a9c..d4e652d 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
@@ -50,6 +50,7 @@
import org.apache.asterix.common.exceptions.ACIDException;
import org.apache.asterix.common.ioopcallbacks.AbstractLSMIOOperationCallback;
import org.apache.asterix.common.storage.DatasetResourceReference;
+import org.apache.asterix.common.storage.IIndexCheckpointManager;
import org.apache.asterix.common.storage.IIndexCheckpointManagerProvider;
import org.apache.asterix.common.transactions.Checkpoint;
import org.apache.asterix.common.transactions.ICheckpointManager;
@@ -93,6 +94,7 @@
public class RecoveryManager implements IRecoveryManager, ILifeCycleComponent {
public static final boolean IS_DEBUG_MODE = false;
+ private static final long SMALLEST_POSSIBLE_LSN = 0;
private static final Logger LOGGER = org.apache.logging.log4j.LogManager.getLogger();
private final ITransactionSubsystem txnSubsystem;
private final LogManager logMgr;
@@ -499,8 +501,17 @@
return dsResource.getPartition() == partition;
}).values().stream().map(DatasetResourceReference::of).collect(Collectors.toList());
for (DatasetResourceReference indexRef : partitionResources) {
- long remoteIndexMaxLSN = idxCheckpointMgrProvider.get(indexRef).getLowWatermark();
- minRemoteLSN = Math.min(minRemoteLSN, remoteIndexMaxLSN);
+ try {
+ final IIndexCheckpointManager idxCheckpointMgr = idxCheckpointMgrProvider.get(indexRef);
+ if (idxCheckpointMgr.getCheckpointCount() > 0) {
+ long remoteIndexMaxLSN = idxCheckpointMgrProvider.get(indexRef).getLowWatermark();
+ minRemoteLSN = Math.min(minRemoteLSN, remoteIndexMaxLSN);
+ }
+ } catch (Exception e) {
+ LOGGER.warn("Failed to get min LSN of resource {}", indexRef, e);
+ // ensure no logs will be deleted in case of unexpected failures
+ return SMALLEST_POSSIBLE_LSN;
+ }
}
}
return minRemoteLSN;
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
index c821c56..5c5ce93 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
@@ -57,6 +57,7 @@
* current replicas
*/
private final Map<ReplicaIdentifier, PartitionReplica> replicas = new HashMap<>();
+ private final Object replicaSyncLock = new Object();
public ReplicaManager(INcApplicationContext appCtx, Set<Integer> partitions) {
this.appCtx = appCtx;
@@ -126,6 +127,11 @@
partitions.remove(partition);
}
+ @Override
+ public Object getReplicaSyncLock() {
+ return replicaSyncLock;
+ }
+
private void closePartitionResources(int partition) throws HyracksDataException {
final PersistentLocalResourceRepository resourceRepository =
(PersistentLocalResourceRepository) appCtx.getLocalResourceRepository();
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResultPrinter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResultPrinter.java
index c8d25f1..a6d2da9 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResultPrinter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResultPrinter.java
@@ -123,7 +123,7 @@
try {
output.resultPrefix(new AlgebricksAppendable(output.out()));
} catch (AlgebricksException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
if (conf.is(SessionConfig.FORMAT_WRAPPER_ARRAY)) {
@@ -155,7 +155,7 @@
try {
output.resultPostfix(new AlgebricksAppendable(output.out()));
} catch (AlgebricksException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
if (conf.is(SessionConfig.FORMAT_HTML)) {
output.out().println("</pre>");
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index aabb7c2..453bcb5 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -2015,7 +2015,7 @@
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
} catch (RemoteException | ACIDException e) {
abort(e, e, mdTxnCtx);
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
} finally {
metadataProvider.getLocks().unlock();
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java
index 57d080e..494198b 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java
@@ -211,7 +211,6 @@
? getCurrentSystemState() : SystemState.HEALTHY;
RegistrationTasksRequestMessage.send(ccId, (NodeControllerService) ncServiceCtx.getControllerService(),
currentStatus, systemState);
- ncs.notifyRegistrationCompleted(ccId);
}
@Override
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/ParseDurationTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/ParseDurationTest.java
index f2fb580..d20d72d 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/ParseDurationTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/ParseDurationTest.java
@@ -136,7 +136,7 @@
public void testDurationFormatNanos() throws Exception {
Assert.assertEquals("123.456789012s", Duration.formatNanos(123456789012l));
Assert.assertEquals("12.345678901s", Duration.formatNanos(12345678901l));
- Assert.assertEquals("1.234567890s", Duration.formatNanos(1234567890l));
+ Assert.assertEquals("1.23456789s", Duration.formatNanos(1234567890l));
Assert.assertEquals("123.456789ms", Duration.formatNanos(123456789l));
Assert.assertEquals("12.345678ms", Duration.formatNanos(12345678l));
Assert.assertEquals("1.234567ms", Duration.formatNanos(1234567l));
@@ -147,7 +147,7 @@
Assert.assertEquals("12ns", Duration.formatNanos(12l));
Assert.assertEquals("1ns", Duration.formatNanos(1l));
Assert.assertEquals("-123.456789012s", Duration.formatNanos(-123456789012l));
- Assert.assertEquals("120.000000000s", Duration.formatNanos(120000000000l));
+ Assert.assertEquals("120s", Duration.formatNanos(120000000000l));
Assert.assertEquals("-12ns", Duration.formatNanos(-12l));
}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.1.ddl.sqlpp
new file mode 100644
index 0000000..ad1c308
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.1.ddl.sqlpp
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*
+ * Description : This test case is to verify composite key prefix search
+ * Expected Res : Success
+ * Date : 23 March 2018
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type PointType as closed {
+x:int,
+y:int
+};
+
+create dataset Points(PointType) primary key x, y;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.2.update.sqlpp
new file mode 100644
index 0000000..122b5a8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.2.update.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use test;
+
+insert into Points {"x": 1, "y": 1};
+insert into Points {"x": 2, "y": 1};
+insert into Points {"x": 2, "y": 2};
+insert into Points {"x": 2, "y": 3};
+insert into Points {"x": 2, "y": 4};
+insert into Points {"x": 2, "y": 5};
+insert into Points {"x": 3, "y": 1};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.3.query.sqlpp
new file mode 100644
index 0000000..c37d492
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-prefix/composite-prefix.3.query.sqlpp
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+use test;
+
+select value p
+from Points p
+where p.x=2
+and p.y>=2 and p.y<4
+order by p.x,p.y;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.1.ddl.sqlpp
new file mode 100644
index 0000000..0e7bad9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.1.ddl.sqlpp
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*
+ * Description : This test case is to verify the fix for ASTERIXDB-2334
+ : https://issues.apache.org/jira/browse/ASTERIXDB-2334
+ * Expected Res : Success
+ * Date : 23 March 2018
+ */
+
+DROP DATAVERSE earthquake IF EXISTS;
+CREATE DATAVERSE earthquake;
+USE earthquake;
+
+CREATE TYPE QzExternalTypeNew AS {
+stationid: string,
+pointid: string,
+itemid: string,
+samplerate: string,
+startdate: string,
+obsvalue: string
+};
+
+CREATE DATASET qz9130all(QzExternalTypeNew) PRIMARY KEY stationid,pointid,itemid,samplerate,startdate;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.2.update.sqlpp
new file mode 100644
index 0000000..e2d6046
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.2.update.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use earthquake;
+
+INSERT INTO qz9130all( {"stationid":"01","pointid":"5","itemid":"9130","samplerate":"01","startdate":"20080509","obsvalue":"9"} );
+INSERT INTO qz9130all( {"stationid":"01","pointid":"5","itemid":"9130","samplerate":"01","startdate":"20080510","obsvalue":"9"} );
+INSERT INTO qz9130all( {"stationid":"01","pointid":"5","itemid":"9130","samplerate":"01","startdate":"20080511","obsvalue":"9"} );
+INSERT INTO qz9130all( {"stationid":"01","pointid":"5","itemid":"9130","samplerate":"01","startdate":"20080512","obsvalue":"9"} );
+INSERT INTO qz9130all( {"stationid":"01","pointid":"5","itemid":"9130","samplerate":"01","startdate":"20080513","obsvalue":"9"} );
+INSERT INTO qz9130all( {"stationid":"01","pointid":"5","itemid":"9130","samplerate":"01","startdate":"20080514","obsvalue":"9"} );
+INSERT INTO qz9130all( {"stationid":"01","pointid":"5","itemid":"9130","samplerate":"01","startdate":"20080515","obsvalue":"9"} );
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-920.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-920.3.query.sqlpp
new file mode 100644
index 0000000..622937e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-920.3.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+use earthquake;
+
+SELECT startdate
+FROM qz9130all
+WHERE samplerate='01' and stationid='01' and pointid='5' and itemid='9130' and startdate >= '20080510' and startdate < '20080513'
+ORDER BY startdate;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
index c5ff15b..507e276 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
@@ -108,6 +108,16 @@
</compilation-unit>
</test-case>
<test-case FilePath="objects">
+ <compilation-unit name="object_length">
+ <output-dir compare="Text">object_length</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="objects">
+ <compilation-unit name="object_names">
+ <output-dir compare="Text">object_names</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="objects">
<compilation-unit name="object_pairs">
<output-dir compare="Text">object_pairs</output-dir>
</compilation-unit>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.1.ddl.sqlpp
new file mode 100644
index 0000000..a50bf21
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.1.ddl.sqlpp
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description : Testing object_length under different queries.
+ * Expected Res : Success
+ */
+
+drop dataverse TinySocial if exists;
+create dataverse TinySocial;
+
+use TinySocial;
+
+create type TinySocial.TwitterUserType as
+{
+ `screen-name` : string,
+ lang : string,
+ friends_count : bigint,
+ statuses_count : bigint
+};
+
+create type TinySocial.TweetMessageType as closed {
+ tweetid : string,
+ user : TwitterUserType,
+ `sender-location` : point?,
+ `send-time` : datetime,
+ `referred-topics` : {{string}},
+ `message-text` : string
+};
+
+create dataset TwitterUsers(TwitterUserType) primary key `screen-name`;
+
+create dataset TweetMessages(TweetMessageType) primary key tweetid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.2.update.sqlpp
new file mode 100644
index 0000000..1bd2260
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.2.update.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description : Testing object_length under different queries.
+ * Expected Res : Success
+ */
+
+use TinySocial;
+
+load dataset TwitterUsers using localfs ((`path`=`asterix_nc1://data/tinysocial/twu.adm`),(`format`=`adm`));
+
+load dataset TweetMessages using localfs ((`path`=`asterix_nc1://data/tinysocial/twm.adm`),(`format`=`adm`));
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.3.query.sqlpp
new file mode 100644
index 0000000..67d88d9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_length/object_length.3.query.sqlpp
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description : Testing object_length under different queries.
+ * Expected Res : Success
+ */
+
+use TinySocial;
+
+{
+ "t1": [
+ object_length(missing) is missing,
+ object_length(null) is null,
+ object_length("{}") is null,
+ object_length(0) is null,
+ is_number(object_length({}))
+ ],
+
+ "t2": [ object_length({}), object_length({"a":1}), object_length({"a":1, "b": 2}) ],
+
+ "t3": (
+ select value object_length(o)
+ from (
+ select x, current_datetime() y from range(1, 3) x
+ ) o
+ ),
+
+ /* open type */
+ "t4": (
+ select distinct value object_length(t)
+ from TwitterUsers as t
+ ),
+
+ /* closed type */
+ "t5": (
+ select distinct value object_length(user)
+ from TweetMessages as t
+ )
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.1.ddl.sqlpp
new file mode 100644
index 0000000..4f507b1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.1.ddl.sqlpp
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description : Testing object_names under different queries.
+ * Expected Res : Success
+ */
+
+drop dataverse TinySocial if exists;
+create dataverse TinySocial;
+
+use TinySocial;
+
+create type TinySocial.TwitterUserType as
+{
+ `screen-name` : string,
+ lang : string,
+ friends_count : bigint,
+ statuses_count : bigint
+};
+
+create type TinySocial.TweetMessageType as closed {
+ tweetid : string,
+ user : TwitterUserType,
+ `sender-location` : point?,
+ `send-time` : datetime,
+ `referred-topics` : {{string}},
+ `message-text` : string
+};
+
+create dataset TwitterUsers(TwitterUserType) primary key `screen-name`;
+
+create dataset TweetMessages(TweetMessageType) primary key tweetid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.2.update.sqlpp
new file mode 100644
index 0000000..cf03bed
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.2.update.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description : Testing object_names under different queries.
+ * Expected Res : Success
+ */
+
+use TinySocial;
+
+load dataset TwitterUsers using localfs ((`path`=`asterix_nc1://data/tinysocial/twu.adm`),(`format`=`adm`));
+
+load dataset TweetMessages using localfs ((`path`=`asterix_nc1://data/tinysocial/twm.adm`),(`format`=`adm`));
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.3.query.sqlpp
new file mode 100644
index 0000000..ae20bb0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_names/object_names.3.query.sqlpp
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description : Testing object_names under different queries.
+ * Expected Res : Success
+ */
+
+use TinySocial;
+
+{
+ "t1": [
+ object_names(missing) is missing,
+ object_names(null) is null,
+ object_names("{}") is null,
+ object_names(0) is null,
+ is_array(object_names({}))
+ ],
+
+ "t2": [ object_names({}), object_names({"a":1}), object_names({"a":1, "b": 2}),
+ object_names({"a":1, "b": 2, "c": 3}) ],
+
+ "t3": (
+ select value object_names(o)
+ from (
+ select x, current_datetime() y from range(1, 3) x
+ ) o
+ ),
+
+ /* open type */
+ "t4": (
+ select distinct string_join((select value f from g order by f), ",") res
+ from TwitterUsers as t, object_names(t) f
+ group by t.`screen-name` group as g
+ ),
+
+ /* closed type */
+ "t5": (
+ select distinct string_join((select value f from g order by f), ",") res
+ from TweetMessages as t, object_names(t) f
+ group by t.tweetid group as g
+ )
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-low-high/composite-low-high.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-low-high/composite-low-high.1.adm
index 8c4166d..625f0fd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-low-high/composite-low-high.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-low-high/composite-low-high.1.adm
@@ -1,3 +1,3 @@
{ "x": 15, "y": 40 }
{ "x": 20, "y": 50 }
-{ "x": 60, "y": 40 }
\ No newline at end of file
+{ "x": 60, "y": 40 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-prefix/composite-prefix.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-prefix/composite-prefix.1.adm
new file mode 100644
index 0000000..dbf0ba7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-prefix/composite-prefix.1.adm
@@ -0,0 +1,2 @@
+{ "x": 2, "y": 2 }
+{ "x": 2, "y": 3 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.1.adm
new file mode 100644
index 0000000..41da74e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/query-ASTERIXDB-2334/query-ASTERIXDB-2334.1.adm
@@ -0,0 +1,3 @@
+{ "startdate": "20080510" }
+{ "startdate": "20080511" }
+{ "startdate": "20080512" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/object_length/object_length.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/object_length/object_length.3.adm
new file mode 100644
index 0000000..f03b7d5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/object_length/object_length.3.adm
@@ -0,0 +1 @@
+{ "t1": [ true, true, true, true, true ], "t2": [ 0, 1, 2 ], "t3": [ 2, 2, 2 ], "t4": [ 6 ], "t5": [ 6 ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/object_names/object_names.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/object_names/object_names.3.adm
new file mode 100644
index 0000000..04441f8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/object_names/object_names.3.adm
@@ -0,0 +1 @@
+{ "t1": [ true, true, true, true, true ], "t2": [ [ ], [ "a" ], [ "a", "b" ], [ "a", "b", "c" ] ], "t3": [ [ "x", "y" ], [ "x", "y" ], [ "x", "y" ] ], "t4": [ { "res": "followers_count,friends_count,lang,name,screen-name,statuses_count" } ], "t5": [ { "res": "message-text,referred-topics,send-time,sender-location,tweetid,user" } ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
index a2108be..5c6b100 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -1689,13 +1689,13 @@
<test-case FilePath="dml">
<compilation-unit name="load-with-autogenerated-pk_adm_02">
<output-dir compare="Text">load-with-autogenerated-pk_adm_02</output-dir>
- <expected-error>org.apache.asterix.external.parser.ADMDataParser$ParseException</expected-error>
+ <expected-error>ASX3058: This record is closed, you can not add extra fields! new field name: id [HyracksDataException]</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
<compilation-unit name="load-with-autogenerated-pk_adm_03">
<output-dir compare="Text">load-with-autogenerated-pk_adm_03</output-dir>
- <expected-error>org.apache.asterix.external.parser.ADMDataParser$ParseException</expected-error>
+ <expected-error>ASX3058: This record is closed, you can not add extra fields! new field name: id [HyracksDataException]</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 6292e2d..95c059d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -9744,11 +9744,21 @@
<output-dir compare="Text">query-ASTERIXDB-920</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="composite-key">
+ <compilation-unit name="query-ASTERIXDB-2334">
+ <output-dir compare="Text">query-ASTERIXDB-2334</output-dir>
+ </compilation-unit>
+ </test-case>
<test-case FilePath="composite-key">
<compilation-unit name="composite-low-high">
<output-dir compare="Text">composite-low-high</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="composite-key">
+ <compilation-unit name="composite-prefix">
+ <output-dir compare="Text">composite-prefix</output-dir>
+ </compilation-unit>
+ </test-case>
</test-group>
&GeoQueries;
</test-suite>
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/Duration.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/Duration.java
index 4338222..a8b43b7 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/Duration.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/Duration.java
@@ -30,6 +30,8 @@
MICRO("µs", 3),
NANO("ns", 0);
+ static final Duration[] VALUES = values();
+
static final long NANOSECONDS = 1;
static final long MICROSECONDS = 1000 * NANOSECONDS;
static final long MILLISECONDS = 1000 * MICROSECONDS;
@@ -46,16 +48,29 @@
}
public static String formatNanos(long nanoTime) {
- final String strTime = String.valueOf(nanoTime);
+ StringBuilder sb = new StringBuilder();
+ formatNanos(nanoTime, sb);
+ return sb.toString();
+ }
+
+ public static void formatNanos(long nanoTime, StringBuilder out) {
+ final String strTime = String.valueOf(Math.abs(nanoTime));
final int len = strTime.length();
- for (Duration tu : Duration.values()) {
- if (len > tu.nanoDigits) {
- final String integer = strTime.substring(0, len - tu.nanoDigits);
- final String fractional = strTime.substring(len - tu.nanoDigits);
- return integer + (fractional.length() > 0 ? "." + fractional : "") + tu.unit;
+ for (Duration tu : VALUES) {
+ int n = len - tu.nanoDigits;
+ if (n > 0) {
+ if (nanoTime < 0) {
+ out.append('-');
+ }
+ out.append(strTime, 0, n);
+ int k = lastIndexOf(strTime, n, '1', '9');
+ if (k > 0) {
+ out.append('.').append(strTime, n, k + 1);
+ }
+ out.append(tu.unit);
+ break;
}
}
- return "illegal string value: " + strTime;
}
// ParseDuration parses a duration string.
@@ -233,4 +248,14 @@
}
return Triple.of(x, scale, s.substring(i));
}
+
+ private static int lastIndexOf(CharSequence seq, int fromIndex, char rangeStart, char rangeEnd) {
+ for (int i = seq.length() - 1; i >= fromIndex; i--) {
+ char c = seq.charAt(i);
+ if (c >= rangeStart && c <= rangeEnd) {
+ return i;
+ }
+ }
+ return -1;
+ }
}
\ No newline at end of file
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/AsterixProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/AsterixProperties.java
index 2c981c9..d192b49 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/AsterixProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/AsterixProperties.java
@@ -44,7 +44,7 @@
try {
PropertiesAccessor.getInstance(configManager.getAppConfig());
} catch (AsterixException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
});
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java
index 47f7ae8..74848d5 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java
@@ -148,7 +148,7 @@
try {
logManager.log(logRecord);
} catch (ACIDException e) {
- throw new HyracksDataException("could not write flush log", e);
+ throw new IllegalStateException("could not write flush log", e);
}
flushLogCreated = true;
} else {
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
index 3879fb8..b3936de 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
@@ -100,7 +100,7 @@
(INcApplicationContext) ctx.getJobletContext().getServiceContext().getApplicationContext();
LSMIndexUtil.checkAndSetFirstLSN(lsmIndex, runtimeCtx.getTransactionSubsystem().getLogManager());
} catch (Throwable th) {
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
}
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
index 04054f1..8146797 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
@@ -72,6 +72,8 @@
public static final int UNKNOWN_DURATION_UNIT = 29;
public static final int QUERY_TIMEOUT = 30;
public static final int INVALID_TYPE_CASTING_MATH_FUNCTION = 31;
+ public static final int REJECT_BAD_CLUSTER_STATE = 32;
+ public static final int REJECT_NODE_UNREGISTERED = 33;
public static final int INSTANTIATION_ERROR = 100;
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IReplicaManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IReplicaManager.java
index b2deb1e..1b8ec53 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IReplicaManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IReplicaManager.java
@@ -71,4 +71,12 @@
* @throws HyracksDataException
*/
void release(int partition) throws HyracksDataException;
+
+ /**
+ * A lock that can be used to ensure a single replica is being synchronized at a time
+ * by this {@link IReplicaManager}
+ *
+ * @return the synchronization lock
+ */
+ Object getReplicaSyncLock();
}
diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index 1fb8480..f9188b8 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -65,6 +65,8 @@
29 = Unknown duration unit %1$s
30 = Query timed out and will be cancelled
31 = Invalid type-casting math function: %1$s for converting %2$s to %3$s
+32 = Cannot execute request, cluster is %1$s
+33 = Node is not registered with the CC
100 = Unable to instantiate class %1$s
diff --git a/asterixdb/asterix-doc/src/main/markdown/builtins/8_record.md b/asterixdb/asterix-doc/src/main/markdown/builtins/8_record.md
index d7ec35b..fefdb7b 100644
--- a/asterixdb/asterix-doc/src/main/markdown/builtins/8_record.md
+++ b/asterixdb/asterix-doc/src/main/markdown/builtins/8_record.md
@@ -233,3 +233,57 @@
"id": 1
}
+### object_length ###
+ * Syntax:
+
+ object_length(input_object)
+
+ * Returns number of top-level fields in the given object
+ * Arguments:
+ * `input_object` : an object value.
+ * Return Value:
+ * an integer that represents the number of top-level fields in the given object,
+ * `missing` if the argument is a `missing` value,
+ * `null` if the argument is a `null` value or any other non-object value
+
+ * Example:
+
+ object_length(
+ {
+ "id": 1,
+ "project": "AsterixDB",
+ "address": {"city": "Irvine", "state": "CA"},
+ }
+ );
+
+ * The expected result is:
+
+ 3
+
+### object_names ###
+ * Syntax:
+
+ object_names(input_object)
+
+ * Returns names of top-level fields in the given object
+ * Arguments:
+ * `input_object` : an object value.
+ * Return Value:
+ * an array with top-level field names of the given object,
+ * `missing` if the argument is a `missing` value,
+ * `null` if the argument is a `null` value or any other non-object value
+
+ * Example:
+
+ object_names(
+ {
+ "id": 1,
+ "project": "AsterixDB",
+ "address": {"city": "Irvine", "state": "CA"},
+ }
+ );
+
+ * The expected result is:
+
+ [ "id", "project", "address" ]
+
diff --git a/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md b/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
index bcf3094..56103e5 100644
--- a/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
+++ b/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
@@ -1200,13 +1200,14 @@
GROUP AS `$1`(msg AS msg);
### <a id="Column_aliases">Column Aliases</a>
-SQL++ also allows column aliases to be used as `GROUP BY` keys or `ORDER BY` keys.
+SQL++ also allows column aliases to be used as `ORDER BY` keys.
##### Example
SELECT msg.authorId AS aid, COUNT(*)
FROM GleambookMessages msg
- GROUP BY aid;
+ GROUP BY msg.authorId;
+ ORDER BY aid;
This query returns:
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedStreamDataFlowController.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedStreamDataFlowController.java
index ffa42e5..4deb422 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedStreamDataFlowController.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedStreamDataFlowController.java
@@ -77,7 +77,7 @@
}
stream.close();
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
return false;
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RecordDataFlowController.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RecordDataFlowController.java
index aebdefb..9d72581 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RecordDataFlowController.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RecordDataFlowController.java
@@ -56,7 +56,7 @@
tupleForwarder.complete();
recordReader.close();
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/StreamDataFlowController.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/StreamDataFlowController.java
index a28c484..8275953 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/StreamDataFlowController.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/StreamDataFlowController.java
@@ -47,7 +47,7 @@
}
tupleForwarder.complete();
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataset/adapter/LookupAdapter.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataset/adapter/LookupAdapter.java
index aeeb04d..82e9bba 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataset/adapter/LookupAdapter.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataset/adapter/LookupAdapter.java
@@ -98,7 +98,7 @@
try {
recordReader.fail();
} catch (Throwable th) {
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
} finally {
writer.fail();
}
@@ -138,7 +138,7 @@
tupleIndex++;
}
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameSpiller.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameSpiller.java
index e3630d3..c3aa36f 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameSpiller.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameSpiller.java
@@ -79,7 +79,7 @@
this.bis = new BufferedInputStream(new FileInputStream(currentReadFile));
} catch (Exception e) {
LOGGER.fatal("Unable to create spill file", e);
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -129,7 +129,7 @@
}
return frame.getBuffer();
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
} finally {
synchronized (this) {
notify();
@@ -160,7 +160,7 @@
return true;
} catch (IOException e) {
close();
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileOffsetIndexer.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileOffsetIndexer.java
index a5bff74..34c8795 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileOffsetIndexer.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileOffsetIndexer.java
@@ -56,7 +56,7 @@
recordReader = dataSource.getReader();
offset.setValue(recordReader.getPos());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -68,7 +68,7 @@
// Get position for next index(tb) call
offset.setValue(recordReader.getPos());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/IndexingScheduler.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/IndexingScheduler.java
index a788a29..edac0fa 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/IndexingScheduler.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/IndexingScheduler.java
@@ -68,7 +68,7 @@
this.ncNameToNcInfos = hcc.getNodeControllerInfos();
loadIPAddressToNCMap(ncNameToNcInfos);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -136,7 +136,7 @@
scheduleNonLocalSlots(splits, workloads, locations, upperBoundSlots, scheduled, locationToNumOfAssignement);
return locations;
} catch (IOException e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -325,7 +325,7 @@
ncNameToIndex.put(NCs[i], i);
}
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/RecordColumnarIndexer.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/RecordColumnarIndexer.java
index e6146d4..6cecc20 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/RecordColumnarIndexer.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/RecordColumnarIndexer.java
@@ -64,7 +64,7 @@
nextOffset = offset.getLongValue();
rowNumber.setValue(0);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -82,7 +82,7 @@
tb.addField(intSerde, rowNumber);
rowNumber.setValue(rowNumber.getIntegerValue() + 1);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java
index 982cf5b..f830376 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java
@@ -215,7 +215,7 @@
restoreConfig(ctx);
return new HDFSRecordReader<>(read, inputSplits, readSchedule, nodeName, conf, files, indexer);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/hdfs/HDFSRecordReader.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/hdfs/HDFSRecordReader.java
index 3500d32..5b3d04f 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/hdfs/HDFSRecordReader.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/hdfs/HDFSRecordReader.java
@@ -145,7 +145,7 @@
try {
indexer.reset(this);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
return reader;
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/rss/RSSRecordReaderFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/rss/RSSRecordReaderFactory.java
index 6291ba1..2c07c35 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/rss/RSSRecordReaderFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/rss/RSSRecordReaderFactory.java
@@ -93,7 +93,7 @@
try {
return new RSSRecordReader(urls.get(partition));
} catch (MalformedURLException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/stream/StreamRecordReaderFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/stream/StreamRecordReaderFactory.java
index 776aa0c..f8cf648 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/stream/StreamRecordReaderFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/stream/StreamRecordReaderFactory.java
@@ -24,10 +24,8 @@
import java.util.List;
import java.util.Map;
-import org.apache.asterix.common.exceptions.AsterixException;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.external.api.AsterixInputStream;
import org.apache.asterix.external.api.IInputStreamFactory;
import org.apache.asterix.external.api.IRecordReader;
import org.apache.asterix.external.api.IRecordReaderFactory;
@@ -100,7 +98,7 @@
return streamRecordReader;
} catch (InstantiationException | IllegalAccessException | InvocationTargetException
| NoSuchMethodException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/twitter/TwitterPullRecordReader.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/twitter/TwitterPullRecordReader.java
index bb9d8c9..2cf5396 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/twitter/TwitterPullRecordReader.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/twitter/TwitterPullRecordReader.java
@@ -72,7 +72,7 @@
try {
result = twitter.search(query);
} catch (TwitterException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
nextTweetIndex = 0;
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/twitter/TwitterRecordReaderFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/twitter/TwitterRecordReaderFactory.java
index 8182dcd..8774762 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/twitter/TwitterRecordReaderFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/twitter/TwitterRecordReaderFactory.java
@@ -146,7 +146,7 @@
: new TwitterPushRecordReader(TwitterUtil.getTwitterStream(configuration),
TwitterUtil.getTweetListener(), query);
} catch (AsterixException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
break;
case ExternalDataConstants.READER_USER_STREAM_TWITTER:
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/HDFSInputStream.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/HDFSInputStream.java
index 997c254..4cbfaa3 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/HDFSInputStream.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/HDFSInputStream.java
@@ -206,7 +206,7 @@
try {
indexer.reset(this);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
return reader;
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
index 9e8b9b7..05124dd 100755
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
@@ -57,7 +57,7 @@
try {
initialize(functionHelper);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -69,7 +69,7 @@
result.set(resultBuffer.getByteArray(), resultBuffer.getStartOffset(), resultBuffer.getLength());
functionHelper.reset();
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -82,7 +82,7 @@
throw new RuntimeDataException(ErrorCode.EXTERNAL_UDF_RESULT_TYPE_ERROR);
}
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JObject.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JObject.java
index 7338b31..411da33 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JObject.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JObject.java
@@ -49,7 +49,7 @@
try {
dataOutput.writeByte(typeTag.serialize());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
index 2792cb4..7fa9d0b 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
@@ -147,7 +147,7 @@
}
}
} catch (IOException ae) {
- throw new HyracksDataException(ae);
+ throw HyracksDataException.create(ae);
}
recordBuilder.write(output, writeTypeTag);
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/AbstractExternalDatasetIndexesOperatorDescriptor.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/AbstractExternalDatasetIndexesOperatorDescriptor.java
index 8d83b9a..4a7635c 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/AbstractExternalDatasetIndexesOperatorDescriptor.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/AbstractExternalDatasetIndexesOperatorDescriptor.java
@@ -68,7 +68,7 @@
performOpOnIndex(indexHelper, ctx);
}
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalBTreeSearchOperatorNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalBTreeSearchOperatorNodePushable.java
index a966bbe..80ebb4c 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalBTreeSearchOperatorNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalBTreeSearchOperatorNodePushable.java
@@ -87,7 +87,7 @@
frameTuple = new FrameTupleReference();
}
} catch (Throwable th) {
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
}
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalIndexBulkModifyOperatorNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalIndexBulkModifyOperatorNodePushable.java
index 242773e..aaca3f1 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalIndexBulkModifyOperatorNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalIndexBulkModifyOperatorNodePushable.java
@@ -69,7 +69,7 @@
((ITwoPCIndexBulkLoader) bulkLoader).delete(deleteTuple);
}
} catch (Throwable e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalLookupOperatorDescriptor.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalLookupOperatorDescriptor.java
index c096f69..e54b3d2 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalLookupOperatorDescriptor.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalLookupOperatorDescriptor.java
@@ -78,7 +78,7 @@
indexOpen = true;
adapter.open();
} catch (Throwable th) {
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
}
}
@@ -111,7 +111,7 @@
try {
adapter.fail();
} catch (Throwable th) {
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
}
}
@@ -120,7 +120,7 @@
try {
adapter.nextFrame(buffer);
} catch (Throwable th) {
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalRTreeSearchOperatorNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalRTreeSearchOperatorNodePushable.java
index 4c02b16..0b294de 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalRTreeSearchOperatorNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalRTreeSearchOperatorNodePushable.java
@@ -65,7 +65,7 @@
try {
nonMatchWriter.writeMissing(out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
nonMatchTupleBuild.addFieldEndOffset();
}
@@ -88,7 +88,7 @@
frameTuple = new FrameTupleReference();
}
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalScanOperatorDescriptor.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalScanOperatorDescriptor.java
index 93acb26..081d49ec 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalScanOperatorDescriptor.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/ExternalScanOperatorDescriptor.java
@@ -62,7 +62,7 @@
adapter.start(partition, writer);
} catch (Exception e) {
writer.fail();
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
} finally {
writer.close();
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedCollectOperatorNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedCollectOperatorNodePushable.java
index 121d262..4ea282f 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedCollectOperatorNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedCollectOperatorNodePushable.java
@@ -68,7 +68,7 @@
writer = new SyncFeedRuntimeInputHandler(ctx, writer, tAccessor);
}
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
index 477a777..6d95d26 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
@@ -121,7 +121,7 @@
writer.open();
} catch (Exception e) {
e.printStackTrace();
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -144,7 +144,7 @@
writer.nextFrame(buffer);
} catch (Exception e) {
LOGGER.log(Level.WARN, e.getMessage(), e);
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
index ecd28be..b9cfac4 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
@@ -120,7 +120,7 @@
insertOperator.open();
} catch (Exception e) {
LOGGER.log(Level.WARN, "Failed to open feed store operator", e);
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
index a7dbc30..a770671 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
@@ -114,7 +114,7 @@
}
return false;
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -129,7 +129,7 @@
break;
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
fieldValueBuffer.reset();
@@ -162,7 +162,7 @@
recBuilder.addField(fldIds[i], fieldValueBuffer);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
@@ -172,7 +172,7 @@
try {
cursor.nextRecord(record.get(), record.size());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
parseRecord();
if (!areAllNullFields) {
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java
index ffeb941..1a88d08 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java
@@ -104,7 +104,7 @@
Exception e)
{
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -130,7 +130,7 @@
}
recBuilder.write(out, true);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -187,7 +187,7 @@
throw new RuntimeDataException(ErrorCode.PARSER_HIVE_FIELD_TYPE, itemType.getTypeTag());
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java
index c92ee12..6c9298e 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java
@@ -82,7 +82,7 @@
recordParser.parse(rwm.getRecord(), out);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -102,7 +102,7 @@
metaBuilder.write(out, true);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithPKDataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithPKDataParser.java
index 1f9fef2..aa0db53 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithPKDataParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithPKDataParser.java
@@ -42,7 +42,7 @@
try {
out.writeByte(ATypeTag.SERIALIZED_NULL_TYPE_TAG);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
} else {
recordParser.parse(record, out);
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
index e1c961a..0183196 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
@@ -259,7 +259,7 @@
ObjectMapper om = new ObjectMapper();
writeRecord(om.readTree(record.get()), out, recordType);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java
index 3e53b52..f9b012e 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java
@@ -108,7 +108,7 @@
dataSourceFactory.getDataSourceType());
}
} catch (IOException | AsterixException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/FeedLogManager.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/FeedLogManager.java
index 42ebbd4..57c9e2c 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/FeedLogManager.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/FeedLogManager.java
@@ -71,7 +71,7 @@
}
open();
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/FileSystemWatcher.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/FileSystemWatcher.java
index 74a20f5..919b74f 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/FileSystemWatcher.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/FileSystemWatcher.java
@@ -101,7 +101,7 @@
}
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/classad/ClassAd.java b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/classad/ClassAd.java
index bc24227..2b04bac 100644
--- a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/classad/ClassAd.java
+++ b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/classad/ClassAd.java
@@ -839,7 +839,7 @@
successfully_evaluated = false;
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
return successfully_evaluated;
}
diff --git a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
index 2f9faed..d19f89f 100644
--- a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
+++ b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
@@ -582,7 +582,7 @@
aDuration.setValue(0, duration.getTimeVal().getRelativeTime());
durationSerde.serialize(aDuration, out);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -1770,7 +1770,7 @@
}
parseRecord(recordType, rootAd, out);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java
index dece292..4cc4975 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java
@@ -86,7 +86,7 @@
editDistance = computeResult(argPtr1, argPtr2, firstTypeTag);
writeResult(editDistance);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java
index 85fd334..c3af387 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java
@@ -91,7 +91,7 @@
try {
writeResult(editDistance);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java
index ef727c9..d60c311 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java
@@ -88,7 +88,7 @@
}
listBuilder.write(out, true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java
index 60b5592..19f7869 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java
@@ -93,7 +93,7 @@
try {
writeResult(jaccSim);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
index 1e5ad3c..29d5eb3 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
@@ -129,7 +129,7 @@
try {
writeResult(jaccSim);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java
index b70c6ad0..23b9d50 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java
@@ -218,7 +218,7 @@
try {
writeResult();
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java
index e51d5cf..2ee5a96 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java
@@ -64,7 +64,7 @@
}
listBuilder.write(out, true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java
index 0f4ebee..70903cb 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java
@@ -141,7 +141,7 @@
booleanSerde.serialize(ABoolean.TRUE, output);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java
index 0509f51..708c282 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java
@@ -114,7 +114,7 @@
booleanSerde.serialize(ABoolean.TRUE, output);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java
index c9a865b..17637bc 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java
@@ -124,7 +124,7 @@
try {
int32Serde.serialize(res, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java
index 25d4be3..52bd8b1 100644
--- a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java
+++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java
@@ -109,7 +109,7 @@
try {
int32Serde.serialize(res, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java
index 2aaf08f..3116521 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java
@@ -32,66 +32,66 @@
private static final Map<String, String> FUNCTION_NAME_MAP = new HashMap<>();
static {
- FUNCTION_NAME_MAP.put("ceil", "ceiling"); //ceil, internal: ceiling
- FUNCTION_NAME_MAP.put("length", "string-length"); // length, internal: string-length
- FUNCTION_NAME_MAP.put("lower", "lowercase"); // lower, internal: lowercase
- FUNCTION_NAME_MAP.put("substr", "substring"); // substr, internal: substring
- FUNCTION_NAME_MAP.put("upper", "uppercase"); // upper, internal: uppercase
- FUNCTION_NAME_MAP.put("title", "initcap"); // title, internal: initcap
- FUNCTION_NAME_MAP.put("regexp_contains", "matches"); // regexp_contains, internal: matches
- FUNCTION_NAME_MAP.put("power", "caret"); //pow, internal: caret
- FUNCTION_NAME_MAP.put("int", "integer"); // int, internal: integer
+ addFunctionMapping("ceil", "ceiling"); //ceil, internal: ceiling
+ addFunctionMapping("length", "string-length"); // length, internal: string-length
+ addFunctionMapping("lower", "lowercase"); // lower, internal: lowercase
+ addFunctionMapping("substr", "substring"); // substr, internal: substring
+ addFunctionMapping("upper", "uppercase"); // upper, internal: uppercase
+ addFunctionMapping("title", "initcap"); // title, internal: initcap
+ addFunctionMapping("regexp_contains", "matches"); // regexp_contains, internal: matches
+ addFunctionMapping("power", "caret"); //pow, internal: caret
+ addFunctionMapping("int", "integer"); // int, internal: integer
// The "mapped-to" names are to be deprecated.
- FUNCTION_NAME_MAP.put("tinyint", "int8"); // tinyint, internal: int8
- FUNCTION_NAME_MAP.put("smallint", "int16"); // smallint, internal: int16
- FUNCTION_NAME_MAP.put("integer", "int32"); // integer, internal: int32
- FUNCTION_NAME_MAP.put("bigint", "int64"); // bigint, internal: int64
+ addFunctionMapping("tinyint", "int8"); // tinyint, internal: int8
+ addFunctionMapping("smallint", "int16"); // smallint, internal: int16
+ addFunctionMapping("integer", "int32"); // integer, internal: int32
+ addFunctionMapping("bigint", "int64"); // bigint, internal: int64
// Type functions.
- FUNCTION_NAME_MAP.put("isnull", "is-null"); // isnull, internal: is-null
- FUNCTION_NAME_MAP.put("ismissing", "is-missing"); // ismissing, internal: is-missing
- FUNCTION_NAME_MAP.put("isunknown", "is-unknown"); // isunknown, internal: is-unknown
- FUNCTION_NAME_MAP.put("isatomic", "is-atomic"); // isatomic, internal: is-atomic
- FUNCTION_NAME_MAP.put("isatom", "is-atomic"); // isatom, internal: is-atomic
- FUNCTION_NAME_MAP.put("isboolean", "is-boolean"); // isboolean, internal: is-boolean
- FUNCTION_NAME_MAP.put("isbool", "is-boolean"); // isbool, internal: is-boolean
- FUNCTION_NAME_MAP.put("isnumber", "is-number"); // isnumber, internal: is-number
- FUNCTION_NAME_MAP.put("isnum", "is-number"); // isnum, internal: is-number
- FUNCTION_NAME_MAP.put("isstring", "is-string"); // isstring, internal: is-string
- FUNCTION_NAME_MAP.put("isstr", "is-string"); // isstr, internal: is-string
- FUNCTION_NAME_MAP.put("isarray", "is-array"); // isarray, internal: is-array
- FUNCTION_NAME_MAP.put("isobject", "is-object"); // isobject, internal: is-object
- FUNCTION_NAME_MAP.put("isobj", "is-object"); // isobj, internal: is-object
- FUNCTION_NAME_MAP.put("ifmissing", "if-missing"); // ifmissing, internal: if-missing
- FUNCTION_NAME_MAP.put("ifnull", "if-null"); // ifnull, internal: if-null
- FUNCTION_NAME_MAP.put("ifmissingornull", "if-missing-or-null"); // ifmissingornull, internal: if-missing-or-null
- FUNCTION_NAME_MAP.put("ifinf", "if-inf"); // ifinf, internal: if-inf
- FUNCTION_NAME_MAP.put("ifnan", "if-nan"); // ifnan, internal: if-nan
- FUNCTION_NAME_MAP.put("ifnanorinf", "if-nan-or-inf"); // ifnanorinf, internal: if-nan-or-inf
- FUNCTION_NAME_MAP.put("toboolean", "to-boolean"); // toboolean, internal: to-boolean
- FUNCTION_NAME_MAP.put("tostring", "to-string"); // tostring, internal: to-string
- FUNCTION_NAME_MAP.put("todouble", "to-double"); // todouble, internal: to-double
- FUNCTION_NAME_MAP.put("tobigint", "to-bigint"); // tobigint, internal: to-bigint
- FUNCTION_NAME_MAP.put("tonumber", "to-number"); // tonumber, internal: to-number
- FUNCTION_NAME_MAP.put("tonum", "to-number"); // tonum, internal: to-number
+ addFunctionMapping("isnull", "is-null"); // isnull, internal: is-null
+ addFunctionMapping("ismissing", "is-missing"); // ismissing, internal: is-missing
+ addFunctionMapping("isunknown", "is-unknown"); // isunknown, internal: is-unknown
+ addFunctionMapping("isatomic", "is-atomic"); // isatomic, internal: is-atomic
+ addFunctionMapping("isatom", "is-atomic"); // isatom, internal: is-atomic
+ addFunctionMapping("isboolean", "is-boolean"); // isboolean, internal: is-boolean
+ addFunctionMapping("isbool", "is-boolean"); // isbool, internal: is-boolean
+ addFunctionMapping("isnumber", "is-number"); // isnumber, internal: is-number
+ addFunctionMapping("isnum", "is-number"); // isnum, internal: is-number
+ addFunctionMapping("isstring", "is-string"); // isstring, internal: is-string
+ addFunctionMapping("isstr", "is-string"); // isstr, internal: is-string
+ addFunctionMapping("isarray", "is-array"); // isarray, internal: is-array
+ addFunctionMapping("isobject", "is-object"); // isobject, internal: is-object
+ addFunctionMapping("isobj", "is-object"); // isobj, internal: is-object
+ addFunctionMapping("ifmissing", "if-missing"); // ifmissing, internal: if-missing
+ addFunctionMapping("ifnull", "if-null"); // ifnull, internal: if-null
+ addFunctionMapping("ifmissingornull", "if-missing-or-null"); // ifmissingornull, internal: if-missing-or-null
+ addFunctionMapping("ifinf", "if-inf"); // ifinf, internal: if-inf
+ addFunctionMapping("ifnan", "if-nan"); // ifnan, internal: if-nan
+ addFunctionMapping("ifnanorinf", "if-nan-or-inf"); // ifnanorinf, internal: if-nan-or-inf
+ addFunctionMapping("toboolean", "to-boolean"); // toboolean, internal: to-boolean
+ addFunctionMapping("tostring", "to-string"); // tostring, internal: to-string
+ addFunctionMapping("todouble", "to-double"); // todouble, internal: to-double
+ addFunctionMapping("tobigint", "to-bigint"); // tobigint, internal: to-bigint
+ addFunctionMapping("tonumber", "to-number"); // tonumber, internal: to-number
+ addFunctionMapping("tonum", "to-number"); // tonum, internal: to-number
// Object functions
// record-merge, internal: object-merge
- FUNCTION_NAME_MAP.put("record-merge", "object-merge");
+ addFunctionMapping("record-merge", "object-merge");
// record-concat, internal: object-concat
- FUNCTION_NAME_MAP.put("record-concat", "object-concat");
+ addFunctionMapping("record-concat", "object-concat");
// record-get-fields, internal: object-get-fields
- FUNCTION_NAME_MAP.put("record-get-fields", "object-get-fields");
+ addFunctionMapping("record-get-fields", "object-get-fields");
// record-get-field-value, internal: object-get-field-value
- FUNCTION_NAME_MAP.put("record-get-field-value", "object-get-field-value");
+ addFunctionMapping("record-get-field-value", "object-get-field-value");
// record-add-fields, internal: object-add-fields
- FUNCTION_NAME_MAP.put("record-add-fields", "object-add-fields");
+ addFunctionMapping("record-add-fields", "object-add-fields");
// record-remove-fields, internal: object-remove-fields
- FUNCTION_NAME_MAP.put("record-remove-fields", "object-remove-fields");
+ addFunctionMapping("record-remove-fields", "object-remove-fields");
// Array/Mutliset functions
- FUNCTION_NAME_MAP.put("array_length", "len");
+ addFunctionMapping("array_length", "len");
}
private CommonFunctionMapUtil() {
@@ -118,4 +118,8 @@
FunctionSignature newFs = new FunctionSignature(fs.getNamespace(), understoreName, fs.getArity());
return BuiltinFunctions.isBuiltinCompilerFunction(newFs, true) ? newFs : fs;
}
+
+ public static void addFunctionMapping(String alias, String functionName) {
+ FUNCTION_NAME_MAP.put(alias, functionName);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatatypeTupleTranslator.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatatypeTupleTranslator.java
index 6d7e25f..d0d7b00 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatatypeTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatatypeTupleTranslator.java
@@ -382,7 +382,7 @@
// TODO: This should not be a HyracksDataException. Can't
// fix this currently because of BTree exception model whose
// fixes must get in.
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
return typeName;
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java
index f15b1e5..35f6170 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java
@@ -136,7 +136,7 @@
out.write(offsetArray, 0, metadataInfoSize);
out.write(outputStorage.getByteArray(), 0, outputStorage.getLength());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java
index 10863cd..95aef79 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java
@@ -296,7 +296,7 @@
out.write(openPartOutputStream.getByteArray(), 0, openPartOutputStream.getLength());
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/MissingWriterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/MissingWriterFactory.java
index db1cb95..c1950df 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/MissingWriterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/MissingWriterFactory.java
@@ -43,7 +43,7 @@
try {
out.writeByte(ATypeTag.SERIALIZED_MISSING_TYPE_TAG);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/hash/ListItemBinaryHashFunctionFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/hash/ListItemBinaryHashFunctionFactory.java
index a3a826e..e5e7467 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/hash/ListItemBinaryHashFunctionFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/hash/ListItemBinaryHashFunctionFactory.java
@@ -81,7 +81,7 @@
resetTaggedBytes(bytes, offset, length);
return genericBinaryHash.hash(taggedBytes.getByteArray(), 0, length + 1);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
} else {
return genericBinaryHash.hash(bytes, offset, length);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java
index 8d05f0f..b8e1b43 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java
@@ -44,7 +44,7 @@
gCalInstance.getExtendStringRepUntilField(chrononTime, 0, ps, GregorianCalendarSystem.Fields.YEAR,
GregorianCalendarSystem.Fields.DAY, false);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -55,7 +55,7 @@
gCalInstance.getExtendStringRepUntilField(chrononTime, 0, ps, GregorianCalendarSystem.Fields.YEAR,
GregorianCalendarSystem.Fields.MILLISECOND, true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -106,7 +106,7 @@
ps.print("S");
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -139,7 +139,7 @@
ps.print("M");
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -202,7 +202,7 @@
ps.print("S");
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -213,7 +213,7 @@
gCalInstance.getExtendStringRepUntilField(time, 0, ps, GregorianCalendarSystem.Fields.HOUR,
GregorianCalendarSystem.Fields.MILLISECOND, true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/ABinaryHexPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/ABinaryHexPrinterFactory.java
index b5ac617..a2a3e3b 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/ABinaryHexPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/ABinaryHexPrinterFactory.java
@@ -44,7 +44,7 @@
HexPrinter.printHexString(b, start, validLength, ps);
ps.print("\")");
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt16PrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt16PrinterFactory.java
index a7830e3..222e896 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt16PrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt16PrinterFactory.java
@@ -36,7 +36,7 @@
try {
WriteValueTools.writeInt(AInt16SerializerDeserializer.getShort(b, s + 1), ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt32PrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt32PrinterFactory.java
index fcba832..c539902 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt32PrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt32PrinterFactory.java
@@ -36,7 +36,7 @@
try {
WriteValueTools.writeInt(AInt32SerializerDeserializer.getInt(b, s + 1), ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt64PrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt64PrinterFactory.java
index 0c00cee..f5d0401 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt64PrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt64PrinterFactory.java
@@ -36,7 +36,7 @@
try {
WriteValueTools.writeLong(AInt64SerializerDeserializer.getLong(b, s + 1), ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt8PrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt8PrinterFactory.java
index 67b0827..db35cf8 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt8PrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AInt8PrinterFactory.java
@@ -36,7 +36,7 @@
try {
WriteValueTools.writeInt(AInt8SerializerDeserializer.getByte(b, s + 1), ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AStringPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AStringPrinterFactory.java
index c24b5bc..89a5b91 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AStringPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AStringPrinterFactory.java
@@ -36,7 +36,7 @@
// ADM uses same escape semantics as JSON for strings
PrintTools.writeUTF8StringAsJSON(b, s + 1, l - 1, ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/ABinaryHexPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/ABinaryHexPrinterFactory.java
index ad9de14..df6f1b7 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/ABinaryHexPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/ABinaryHexPrinterFactory.java
@@ -42,7 +42,7 @@
try {
HexPrinter.printHexString(b, start, validLength, ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AStringPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AStringPrinterFactory.java
index 85925c9..c217203 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AStringPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AStringPrinterFactory.java
@@ -35,7 +35,7 @@
try {
PrintTools.writeUTF8StringAsCSV(b, s + 1, l - 1, ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ABinaryHexPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ABinaryHexPrinterFactory.java
index 072f52f..971f8ed 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ABinaryHexPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ABinaryHexPrinterFactory.java
@@ -44,7 +44,7 @@
HexPrinter.printHexString(b, start, validLength, ps);
ps.print("\"");
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AStringPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AStringPrinterFactory.java
index f06b743..0e5d68e 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AStringPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AStringPrinterFactory.java
@@ -35,7 +35,7 @@
try {
PrintTools.writeUTF8StringAsJSON(b, s + 1, l - 1, ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AUnorderedlistPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AUnorderedlistPrinterFactory.java
index ec15236..3a54a9f 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AUnorderedlistPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AUnorderedlistPrinterFactory.java
@@ -63,7 +63,7 @@
arg.first = ps;
listAccessor.accept(printVisitor, arg);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/ABinaryHexPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/ABinaryHexPrinterFactory.java
index 153574c..255bf20 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/ABinaryHexPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/ABinaryHexPrinterFactory.java
@@ -41,7 +41,7 @@
HexPrinter.printHexString(b, start, validLength, ps);
ps.print("\"");
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AStringPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AStringPrinterFactory.java
index b5cf503..46f6fe4 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AStringPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AStringPrinterFactory.java
@@ -35,7 +35,7 @@
try {
PrintTools.writeUTF8StringAsJSON(b, s + 1, l - 1, ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AUnorderedlistPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AUnorderedlistPrinterFactory.java
index 1121075..77f67da 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AUnorderedlistPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AUnorderedlistPrinterFactory.java
@@ -63,7 +63,7 @@
arg.first = ps;
listAccessor.accept(printVisitor, arg);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AGeometrySerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AGeometrySerializerDeserializer.java
index 14450b3..0a74ab7 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AGeometrySerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AGeometrySerializerDeserializer.java
@@ -18,19 +18,20 @@
*/
package org.apache.asterix.dataflow.data.nontagged.serde;
-import com.esri.core.geometry.OperatorImportFromWkb;
-import com.esri.core.geometry.SpatialReference;
-import com.esri.core.geometry.WkbImportFlags;
-import com.esri.core.geometry.ogc.OGCGeometry;
-import org.apache.asterix.om.base.AGeometry;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.nio.ByteBuffer;
+import org.apache.asterix.om.base.AGeometry;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import com.esri.core.geometry.OperatorImportFromWkb;
+import com.esri.core.geometry.SpatialReference;
+import com.esri.core.geometry.WkbImportFlags;
+import com.esri.core.geometry.ogc.OGCGeometry;
+
public class AGeometrySerializerDeserializer implements ISerializerDeserializer<AGeometry> {
private static final long serialVersionUID = 1L;
@@ -55,7 +56,7 @@
DEFAULT_CRS);
return new AGeometry(geometry);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java
index 7ede216..d66673d 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java
@@ -189,7 +189,7 @@
return ANull.NULL;
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
return (IAObject) nonTaggedSerde.deserialize(in);
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUUID.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUUID.java
index 433ff8b..10c2157 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUUID.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUUID.java
@@ -113,7 +113,7 @@
try {
out.write(uuidBytes);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -122,7 +122,7 @@
try {
in.readFully(instance.uuidBytes);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
return instance;
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADateParserFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADateParserFactory.java
index 6897cb6..ed118f9 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADateParserFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADateParserFactory.java
@@ -47,7 +47,7 @@
try {
out.writeInt((int) (parseDatePart(buffer, start, length) / GregorianCalendarSystem.CHRONON_OF_DAY));
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADateTimeParserFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADateTimeParserFactory.java
index 9cee5869..2e32692 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADateTimeParserFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADateTimeParserFactory.java
@@ -65,7 +65,7 @@
try {
out.writeLong(chrononTimeInMs);
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADurationParserFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADurationParserFactory.java
index 6e7721f..995a1ec 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADurationParserFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ADurationParserFactory.java
@@ -58,7 +58,7 @@
out.writeInt(aMutableDuration.getMonths());
out.writeLong(aMutableDuration.getMilliseconds());
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ATimeParserFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ATimeParserFactory.java
index e14720a..291d963 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ATimeParserFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/ATimeParserFactory.java
@@ -47,7 +47,7 @@
try {
out.writeInt(parseTimePart(buffer, start, length));
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
}
};
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
index 300d696..f837e36 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
@@ -20,10 +20,14 @@
import java.io.IOException;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Comparator;
import java.util.TimeZone;
+import org.apache.asterix.om.base.AMutableInt32;
+import org.apache.asterix.om.base.AMutableInt64;
+import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.api.exceptions.HyracksDataException;
/**
@@ -53,7 +57,7 @@
private static final GregorianCalendarSystem CAL = GregorianCalendarSystem.getInstance();
- private static final Charset ENCODING = Charset.forName("UTF-8");
+ private static final Charset ENCODING = StandardCharsets.UTF_8;
// For time
private static final char HOUR_CHAR = 'h';
@@ -71,7 +75,6 @@
private static final int MAX_TIMEZONE_CHARS = 1;
private enum DateTimeProcessState {
- INIT,
YEAR,
MONTH,
DAY,
@@ -124,13 +127,8 @@
private static final char SKIPPER_CHAR = 'O';
private static final int MAX_SKIPPER_CHAR = 1;
- private static final int MS_PER_MINUTE = 60 * 1000;
- private static final int MS_PER_HOUR = 60 * MS_PER_MINUTE;
-
private static final byte TO_LOWER_OFFSET = 'A' - 'a';
- private static final String[] TZ_IDS = TimeZone.getAvailableIDs();
-
private static Comparator<byte[]> byteArrayComparator = new Comparator<byte[]>() {
@Override
public int compare(byte[] o1, byte[] o2) {
@@ -149,33 +147,31 @@
}
};
- private static final byte[][] TIMEZONE_IDS = new byte[TZ_IDS.length][];
+ private static final byte[][] TIMEZONE_IDS;
+ private static final int[] TIMEZONE_OFFSETS;
+
static {
- for (int i = 0; i < TIMEZONE_IDS.length; i++) {
- TIMEZONE_IDS[i] = TZ_IDS[i].getBytes(ENCODING);
+ String[] tzIds = TimeZone.getAvailableIDs();
+ int tzCount = tzIds.length;
+ TIMEZONE_IDS = new byte[tzCount][];
+ TIMEZONE_OFFSETS = new int[tzCount];
+
+ for (int i = 0; i < tzCount; i++) {
+ TIMEZONE_IDS[i] = tzIds[i].getBytes(ENCODING);
}
Arrays.sort(TIMEZONE_IDS, byteArrayComparator);
- }
-
- private static final int[] TIMEZONE_OFFSETS = new int[TIMEZONE_IDS.length];
- static {
- for (int i = 0; i < TIMEZONE_IDS.length; i++) {
+ for (int i = 0; i < tzCount; i++) {
TIMEZONE_OFFSETS[i] = TimeZone.getTimeZone(new String(TIMEZONE_IDS[i], ENCODING)).getRawOffset();
}
}
- private DateTimeFormatUtils() {
- }
-
- private static class DateTimeFormatUtilsHolder {
- private static final DateTimeFormatUtils INSTANCE = new DateTimeFormatUtils();
-
- private DateTimeFormatUtilsHolder() {
- }
- }
+ private static final DateTimeFormatUtils INSTANCE = new DateTimeFormatUtils();
public static DateTimeFormatUtils getInstance() {
- return DateTimeFormatUtilsHolder.INSTANCE;
+ return INSTANCE;
+ }
+
+ private DateTimeFormatUtils() {
}
private int parseFormatField(byte[] format, int formatStart, int formatLength, int formatPointer, char formatChar,
@@ -274,20 +270,30 @@
return b;
}
- public long parseDateTime(byte[] data, int dataStart, int dataLength, byte[] format, int formatStart,
- int formatLength, DateTimeParseMode parseMode) throws AsterixTemporalTypeParseException {
+ public boolean parseDateTime(AMutableInt64 outChronon, byte[] data, int dataStart, int dataLength, byte[] format,
+ int formatStart, int formatLength, DateTimeParseMode parseMode, boolean raiseParseDataError)
+ throws AsterixTemporalTypeParseException {
+ return parseDateTime(outChronon, null, null, data, dataStart, dataLength, format, formatStart, formatLength,
+ parseMode, raiseParseDataError, (byte) '\0');
+ }
+
+ public boolean parseDateTime(AMutableInt64 outChronon, Mutable<Boolean> outTimeZoneExists,
+ AMutableInt32 outTimeZone, byte[] data, int dataStart, int dataLength, byte[] format, int formatStart,
+ int formatLength, DateTimeParseMode parseMode, boolean raiseParseDataError, byte altSeparatorChar)
+ throws AsterixTemporalTypeParseException {
int year = 0, month = 0, day = 0, hour = 0, min = 0, sec = 0, ms = 0, timezone = 0;
+ boolean timezoneExists = false;
boolean negativeYear = false;
- int formatCharCopies = 0;
+ int formatCharCopies;
int dataStringPointer = 0, formatPointer = 0;
byte separatorChar = '\0';
- DateTimeProcessState processState = DateTimeProcessState.INIT;
+ DateTimeProcessState processState;
- int pointerMove = 0;
+ int pointerMove;
while (dataStringPointer < dataLength && formatPointer < formatLength) {
formatCharCopies = 0;
@@ -421,8 +427,6 @@
}
switch (processState) {
- case INIT:
- break;
case YEAR:
if (dataStringPointer < dataLength && data[dataStart + dataStringPointer] == HYPHEN_CHAR) {
negativeYear = true;
@@ -435,8 +439,12 @@
int processedFieldsCount = 0;
for (int i = 0; i < formatCharCopies; i++) {
if (data[dataStart + dataStringPointer] < '0' || data[dataStart + dataStringPointer] > '9') {
- throw new AsterixTemporalTypeParseException("Unexpected char for year field at "
- + (dataStart + dataStringPointer) + ": " + data[dataStart + dataStringPointer]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException("Unexpected char for year field at "
+ + (dataStart + dataStringPointer) + ": " + data[dataStart + dataStringPointer]);
+ } else {
+ return false;
+ }
}
parsedValue = parsedValue * 10 + (data[dataStart + dataStringPointer] - '0');
dataStringPointer++;
@@ -467,24 +475,38 @@
month = monthNameMatch + 1;
dataStringPointer += 3;
} else {
- throw new AsterixTemporalTypeParseException(
- "Unrecognizable month string " + (char) data[dataStart + dataStringPointer] + " "
- + (char) data[dataStart + dataStringPointer + 1] + " "
- + (char) data[dataStart + dataStringPointer + 2]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Unrecognizable month string " + (char) data[dataStart + dataStringPointer]
+ + " " + (char) data[dataStart + dataStringPointer + 1] + " "
+ + (char) data[dataStart + dataStringPointer + 2]);
+ } else {
+ return false;
+ }
}
} else {
int processedMonthFieldsCount = 0;
for (int i = 0; i < formatCharCopies; i++) {
if (data[dataStart + dataStringPointer] < '0'
|| data[dataStart + dataStringPointer] > '9') {
- throw new AsterixTemporalTypeParseException("Unexpected char for month field at "
- + (dataStart + dataStringPointer) + ": " + data[dataStart + dataStringPointer]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Unexpected char for month field at " + (dataStart + dataStringPointer)
+ + ": " + data[dataStart + dataStringPointer]);
+ } else {
+ return false;
+ }
}
month = month * 10 + (data[dataStart + dataStringPointer] - '0');
dataStringPointer++;
if (processedMonthFieldsCount++ > 2) {
- throw new AsterixTemporalTypeParseException("Unexpected char for month field at "
- + (dataStart + dataStringPointer) + ": " + data[dataStart + dataStringPointer]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Unexpected char for month field at " + (dataStart + dataStringPointer)
+ + ": " + data[dataStart + dataStringPointer]);
+ } else {
+ return false;
+ }
}
}
// if there are more than 2 digits for the day string
@@ -507,9 +529,13 @@
}
// match the weekday name
if (weekdayIDSearch(data, dataStart + dataStringPointer, processedWeekdayFieldsCount) < 0) {
- throw new AsterixTemporalTypeParseException("Unexpected string for day-of-week: "
- + (new String(Arrays.copyOfRange(data, dataStart + dataStringPointer,
- dataStart + dataStringPointer + processedWeekdayFieldsCount))));
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException("Unexpected string for day-of-week: "
+ + new String(data, dataStart + dataStringPointer,
+ dataStart + dataStringPointer + processedWeekdayFieldsCount, ENCODING));
+ } else {
+ return false;
+ }
}
dataStringPointer += processedWeekdayFieldsCount;
break;
@@ -522,15 +548,25 @@
parsedValue = 0;
for (int i = 0; i < formatCharCopies; i++) {
if (data[dataStart + dataStringPointer] < '0' || data[dataStart + dataStringPointer] > '9') {
- throw new AsterixTemporalTypeParseException("Unexpected char for " + processState.name()
- + " field at " + (dataStart + dataStringPointer) + ": "
- + data[dataStart + dataStringPointer]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException("Unexpected char for " + processState.name()
+ + " field at " + (dataStart + dataStringPointer) + ": "
+ + data[dataStart + dataStringPointer]);
+ } else {
+ return false;
+ }
+
}
parsedValue = parsedValue * 10 + (data[dataStart + dataStringPointer] - '0');
dataStringPointer++;
if (processFieldsCount++ > expectedMaxCount) {
- throw new AsterixTemporalTypeParseException("Unexpected char for " + processState.name()
- + " field at " + dataStringPointer + ": " + data[dataStart + dataStringPointer]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Unexpected char for " + processState.name() + " field at " + dataStringPointer
+ + ": " + data[dataStart + dataStringPointer]);
+ } else {
+ return false;
+ }
}
}
// if there are more than formatCharCopies digits for the hour string
@@ -581,20 +617,29 @@
} else if (data[dataStart + dataStringPointer] == '+') {
dataStringPointer++;
} else {
- throw new AsterixTemporalTypeParseException(
- "Incorrect timezone hour field: expecting sign + or - but got: "
- + data[dataStart + dataStringPointer]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Incorrect timezone hour field: expecting sign + or - but got: "
+ + data[dataStart + dataStringPointer]);
+ } else {
+ return false;
+ }
}
+ parsedValue = 0;
// timezone hours
for (int i = 0; i < 2; i++) {
if (data[dataStart + dataStringPointer + i] >= '0'
&& data[dataStart + dataStringPointer + i] <= '9') {
- timezone += (data[dataStart + dataStringPointer + i] - '0') * MS_PER_HOUR;
+ parsedValue = parsedValue * 10 + (data[dataStart + dataStringPointer + i] - '0');
} else {
- throw new AsterixTemporalTypeParseException(
- "Unexpected character for timezone hour field at "
- + (dataStart + dataStringPointer) + ": "
- + data[dataStart + dataStringPointer]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Unexpected character for timezone hour field at "
+ + (dataStart + dataStringPointer) + ": "
+ + data[dataStart + dataStringPointer]);
+ } else {
+ return false;
+ }
}
}
dataStringPointer += 2;
@@ -602,18 +647,25 @@
if (data[dataStart + dataStringPointer] == ':') {
dataStringPointer++;
}
+ timezone = (int) (parsedValue * GregorianCalendarSystem.CHRONON_OF_HOUR);
+ parsedValue = 0;
// timezone minutes
for (int i = 0; i < 2; i++) {
if (data[dataStart + dataStringPointer + i] >= '0'
&& data[dataStart + dataStringPointer + i] <= '9') {
- timezone += (data[dataStart + dataStringPointer + i] - '0') * MS_PER_MINUTE;
+ parsedValue = parsedValue * 10 + (data[dataStart + dataStringPointer + i] - '0');
} else {
- throw new AsterixTemporalTypeParseException(
- "Unexpected character for timezone minute field at "
- + (dataStart + dataStringPointer) + ": "
- + data[dataStart + dataStringPointer]);
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Unexpected character for timezone minute field at "
+ + (dataStart + dataStringPointer) + ": "
+ + data[dataStart + dataStringPointer]);
+ } else {
+ return false;
+ }
}
}
+ timezone += (int) (parsedValue * GregorianCalendarSystem.CHRONON_OF_MINUTE);
dataStringPointer += 2;
if (!negativeTimeZone) {
timezone *= -1;
@@ -636,17 +688,26 @@
if (searchIdx >= 0) {
timezone = TIMEZONE_OFFSETS[searchIdx];
} else {
- throw new AsterixTemporalTypeParseException(
- "Unexpected timezone string: " + new String(Arrays.copyOfRange(data,
- dataStart + dataStringPointer, dataStart + timezoneEndField)));
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException("Unexpected timezone string: " + new String(
+ data, dataStart + dataStringPointer, dataStart + timezoneEndField, ENCODING));
+ } else {
+ return false;
+ }
}
dataStringPointer = timezoneEndField;
}
+ timezoneExists = true;
break;
case AMPM:
if (dataStringPointer + 1 < dataLength) {
if (hour > 12 || hour <= 0) {
- throw new IllegalStateException("Hour " + hour + " cannot be a time for AM.");
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Hour " + hour + " cannot be a time for AM/PM.");
+ } else {
+ return false;
+ }
}
if (byteArrayEqualToString(data, dataStart + dataStringPointer, 2, AM_BYTEARRAY)) {
// do nothing
@@ -656,13 +717,21 @@
hour = 0;
}
} else {
- throw new AsterixTemporalTypeParseException(
- "Unexpected string for AM/PM marker " + new String(Arrays.copyOfRange(data,
- dataStart + dataStringPointer, dataStart + dataStringPointer + 2)));
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException("Unexpected string for AM/PM marker "
+ + new String(data, dataStart + dataStringPointer,
+ dataStart + dataStringPointer + 2, ENCODING));
+ } else {
+ return false;
+ }
}
dataStringPointer += 2;
} else {
- throw new AsterixTemporalTypeParseException("Cannot find valid AM/PM marker.");
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException("Cannot find valid AM/PM marker.");
+ } else {
+ return false;
+ }
}
break;
case SKIPPER:
@@ -676,14 +745,16 @@
}
break;
case SEPARATOR:
- if (separatorChar == '\0') {
- throw new AsterixTemporalTypeParseException(
- "Incorrect separator char in date string as " + data[dataStart + dataStringPointer]);
- }
for (int i = 0; i < formatCharCopies; i++) {
- if (data[dataStart + dataStringPointer] != separatorChar) {
- throw new AsterixTemporalTypeParseException("Expecting separator " + separatorChar
- + " but got " + data[dataStart + dataStringPointer]);
+ byte b = data[dataStart + dataStringPointer];
+ boolean match = b == separatorChar || (altSeparatorChar != '\0' && b == altSeparatorChar);
+ if (!match) {
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "Expecting separator " + separatorChar + " but got " + b);
+ } else {
+ return false;
+ }
}
dataStringPointer++;
}
@@ -695,19 +766,33 @@
}
if (dataStringPointer < dataLength) {
- throw new AsterixTemporalTypeParseException(
- "The given data string is not fully parsed by the given format string");
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "The given data string is not fully parsed by the given format string");
+ } else {
+ return false;
+ }
}
if (formatPointer < formatLength) {
- throw new AsterixTemporalTypeParseException(
- "The given format string is not fully used for the given format string");
+ if (raiseParseDataError) {
+ throw new AsterixTemporalTypeParseException(
+ "The given format string is not fully used for the given data string");
+ } else {
+ return false;
+ }
}
- if (parseMode == DateTimeParseMode.TIME_ONLY) {
- return CAL.getChronon(hour, min, sec, ms, timezone);
+ long chronon = parseMode == DateTimeParseMode.TIME_ONLY ? CAL.getChronon(hour, min, sec, ms, timezone)
+ : CAL.getChronon(year, month, day, hour, min, sec, ms, timezone);
+ outChronon.setValue(chronon);
+ if (outTimeZoneExists != null) {
+ outTimeZoneExists.setValue(timezoneExists);
}
- return CAL.getChronon(year, month, day, hour, min, sec, ms, timezone);
+ if (outTimeZone != null) {
+ outTimeZone.setValue(timezone);
+ }
+ return true;
}
public void printDateTime(long chronon, int timezone, byte[] format, int formatStart, int formatLength,
@@ -720,15 +805,15 @@
int sec = CAL.getSecOfMin(chronon);
int ms = CAL.getMillisOfSec(chronon);
- int formatCharCopies = 0;
+ int formatCharCopies;
int formatPointer = 0;
byte separatorChar = '\0';
- DateTimeProcessState processState = DateTimeProcessState.INIT;
+ DateTimeProcessState processState;
- int pointerMove = 0;
+ int pointerMove;
boolean usePM = false;
if (indexOf(format, formatStart, formatLength, 'a') >= 0) {
@@ -860,8 +945,6 @@
try {
switch (processState) {
- case INIT:
- break;
case YEAR:
if (year < 0) {
appender.append('-');
@@ -945,12 +1028,13 @@
appender.append('-');
timezone *= -1;
}
- int timezoneField = timezone / MS_PER_HOUR;
+ int timezoneField = (int) (timezone / GregorianCalendarSystem.CHRONON_OF_HOUR);
if (timezoneField < 10) {
appender.append('0');
}
appender.append(String.valueOf(timezoneField));
- timezoneField = timezone % MS_PER_HOUR / MS_PER_MINUTE;
+ timezoneField = (int) (timezone % GregorianCalendarSystem.CHRONON_OF_HOUR
+ / GregorianCalendarSystem.CHRONON_OF_MINUTE);
if (timezoneField < 10) {
appender.append('0');
}
@@ -976,7 +1060,7 @@
throw new HyracksDataException("Unexpected time state when printing a date value");
}
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DurationArithmeticOperations.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DurationArithmeticOperations.java
index 2e32378..a50adc6 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DurationArithmeticOperations.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DurationArithmeticOperations.java
@@ -69,14 +69,14 @@
int ms = GREG_CAL.getMillisOfSec(pointChronon);
// Apply the year-month duration
- int carry = yearMonthDuration / 12;
- month += (yearMonthDuration % 12);
+ int carry = yearMonthDuration / GregorianCalendarSystem.MONTHS_IN_A_YEAR;
+ month += (yearMonthDuration % GregorianCalendarSystem.MONTHS_IN_A_YEAR);
if (month < 1) {
- month += 12;
+ month += GregorianCalendarSystem.MONTHS_IN_A_YEAR;
carry -= 1;
- } else if (month > 12) {
- month -= 12;
+ } else if (month > GregorianCalendarSystem.MONTHS_IN_A_YEAR) {
+ month -= GregorianCalendarSystem.MONTHS_IN_A_YEAR;
carry += 1;
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/GregorianCalendarSystem.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/GregorianCalendarSystem.java
index dd711a8..ab07620 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/GregorianCalendarSystem.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/GregorianCalendarSystem.java
@@ -64,11 +64,14 @@
public static final int[] DAYS_SINCE_MONTH_BEGIN_ORDI = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
+ public static final int MONTHS_IN_A_YEAR = 12;
+ public static final int DAYS_IN_A_WEEK = 7;
+
public static final long CHRONON_OF_SECOND = 1000;
public static final long CHRONON_OF_MINUTE = 60 * CHRONON_OF_SECOND;
public static final long CHRONON_OF_HOUR = 60 * CHRONON_OF_MINUTE;
public static final long CHRONON_OF_DAY = 24 * CHRONON_OF_HOUR;
- public static final int MONTHS_IN_A_YEAR = 12;
+ public static final long CHRONON_OF_WEEK = DAYS_IN_A_WEEK * CHRONON_OF_DAY;
/**
* Minimum feasible value of each field
@@ -104,6 +107,9 @@
*/
private static final int DAYS_0000_TO_1970 = 719527;
+ // Fixed week day anchor: Thursday, 1 January 1970
+ private final static int ANCHOR_WEEKDAY = 4;
+
private static final GregorianCalendarSystem instance = new GregorianCalendarSystem();
private GregorianCalendarSystem() {
@@ -247,7 +253,7 @@
return chronon - timezone;
}
- public static int getChrononInDays(long chronon) {
+ public int getChrononInDays(long chronon) {
if (chronon >= 0) {
return (int) (chronon / CHRONON_OF_DAY);
} else {
@@ -274,6 +280,24 @@
*/
public void getExtendStringRepUntilField(long chrononTime, int timezone, Appendable sbder, Fields startField,
Fields untilField, boolean withTimezone) throws IOException {
+ getExtendStringRepUntilField(chrononTime, timezone, sbder, startField, untilField, withTimezone, 'T');
+ }
+
+ /**
+ * Get the extended string representation of the given UTC chronon time under the given time zone. Only fields
+ * before
+ * the given field index will be returned.
+ * <p/>
+ * The extended string representation is like:<br/>
+ * [-]YYYY-MM-DDThh:mm:ss.xxx[Z|[+|-]hh:mm]
+ *
+ * @param chrononTime
+ * @param timezone
+ * @param sbder
+ * @param untilField
+ */
+ public void getExtendStringRepUntilField(long chrononTime, int timezone, Appendable sbder, Fields startField,
+ Fields untilField, boolean withTimezone, char dateTimeSeparator) throws IOException {
int year = getYear(chrononTime);
int month = getMonthOfYear(chrononTime, year);
@@ -287,7 +311,7 @@
}
case MONTH:
if (startField != Fields.MONTH) {
- sbder.append("-");
+ sbder.append('-');
}
sbder.append(String.format("%02d", month));
if (untilField == Fields.MONTH) {
@@ -295,7 +319,7 @@
}
case DAY:
if (startField != Fields.DAY) {
- sbder.append("-");
+ sbder.append('-');
}
sbder.append(String.format("%02d", getDayOfMonthYear(chrononTime, year, month)));
if (untilField == Fields.DAY) {
@@ -303,7 +327,7 @@
}
case HOUR:
if (startField != Fields.HOUR) {
- sbder.append("T");
+ sbder.append(dateTimeSeparator);
}
sbder.append(String.format("%02d", getHourOfDay(chrononTime)));
if (untilField == Fields.HOUR) {
@@ -311,7 +335,7 @@
}
case MINUTE:
if (startField != Fields.MINUTE) {
- sbder.append(":");
+ sbder.append(':');
}
sbder.append(String.format("%02d", getMinOfHour(chrononTime)));
if (untilField == Fields.MINUTE) {
@@ -319,25 +343,29 @@
}
case SECOND:
if (startField != Fields.SECOND) {
- sbder.append(":");
+ sbder.append(':');
}
sbder.append(String.format("%02d", getSecOfMin(chrononTime)));
+ if (untilField == Fields.SECOND) {
+ break;
+ }
+ case MILLISECOND:
+ if (startField != Fields.MILLISECOND) {
+ sbder.append('.');
+ }
// add millisecond as the precision fields of a second
- sbder.append(".").append(String.format("%03d", getMillisOfSec(chrononTime)));
+ sbder.append(String.format("%03d", getMillisOfSec(chrononTime)));
break;
}
if (withTimezone) {
if (timezone == 0) {
- sbder.append("Z");
+ sbder.append('Z');
} else {
- int tzMin = (int) (timezone % CHRONON_OF_HOUR / CHRONON_OF_MINUTE);
- if (tzMin < 0) {
- tzMin = (short) (-1 * tzMin);
- }
+ int tzMin = (int) ((timezone % CHRONON_OF_HOUR) / CHRONON_OF_MINUTE);
int tzHr = (int) (timezone / CHRONON_OF_HOUR);
- sbder.append((tzHr >= 0 ? "-" : "+")).append(String.format("%02d", (tzHr < 0 ? -tzHr : tzHr)))
- .append(":").append(String.format("%02d", tzMin));
+ sbder.append(tzHr >= 0 ? '-' : '+').append(String.format("%02d", tzHr < 0 ? -tzHr : tzHr)).append(':')
+ .append(String.format("%02d", tzMin < 0 ? -tzMin : tzMin));
}
}
}
@@ -390,14 +418,14 @@
if (withTimezone) {
if (timezone == 0) {
- sbder.append("Z");
+ sbder.append('Z');
} else {
int tzMin = (int) (timezone % CHRONON_OF_HOUR / CHRONON_OF_MINUTE);
if (tzMin < 0) {
tzMin = (short) (-1 * tzMin);
}
int tzHr = (int) (timezone / CHRONON_OF_HOUR);
- sbder.append((tzHr >= 0 ? "-" : "+")).append(String.format("%02d", (tzHr < 0 ? -tzHr : tzHr)))
+ sbder.append((tzHr >= 0 ? '-' : '+')).append(String.format("%02d", (tzHr < 0 ? -tzHr : tzHr)))
.append(String.format("%02d", tzMin));
}
}
@@ -434,20 +462,36 @@
int day = getDurationDay(milliseconds);
if (!positive) {
- sbder.append("-");
+ sbder.append('-');
}
- sbder.append("P");
- sbder.append((year != 0) ? year + "Y" : "");
- sbder.append((month != 0) ? month + "M" : "");
- sbder.append((day != 0) ? day + "D" : "");
- sbder.append((hour != 0 || minute != 0 || second != 0 || millisecond != 0) ? "T" : "");
- sbder.append((hour != 0) ? hour + "H" : "");
- sbder.append((minute != 0) ? minute + "M" : "");
- sbder.append((second != 0 || millisecond != 0) ? second : "");
+ sbder.append('P');
+ if (year != 0) {
+ sbder.append(year).append('Y');
+ }
+ if (month != 0) {
+ sbder.append(month).append('M');
+ }
+ if (day != 0) {
+ sbder.append(day).append('D');
+ }
+ if (hour != 0 || minute != 0 || second != 0 || millisecond != 0) {
+ sbder.append('T');
+ }
+ if (hour != 0) {
+ sbder.append(hour).append('H');
+ }
+ if (minute != 0) {
+ sbder.append(minute).append('M');
+ }
+ if (second != 0 || millisecond != 0) {
+ sbder.append(second);
+ }
if (millisecond > 0) {
- sbder.append("." + millisecond);
+ sbder.append('.').append(millisecond);
}
- sbder.append((second != 0 || millisecond != 0) ? "S" : "");
+ if (second != 0 || millisecond != 0) {
+ sbder.append('S');
+ }
}
/**
@@ -617,6 +661,32 @@
}
/**
+ * Get the day number in the year for the input chronon time.
+ * @param millis
+ * @param year
+ * @return
+ */
+ public int getDayOfYear(long millis, int year) {
+ long dateMillis = chrononizeBeginningOfYear(year);
+ return (int) ((millis - dateMillis) / CHRONON_OF_DAY) + 1;
+ }
+
+ /**
+ * Get the week number in the year for the input chronon time.
+ * @param millis
+ * @param year
+ * @return
+ */
+ public int getWeekOfYear(long millis, int year) {
+ int doy = getDayOfYear(millis, year);
+ int week = doy / DAYS_IN_A_WEEK;
+ if (doy % DAYS_IN_A_WEEK > 0) {
+ week++;
+ }
+ return week;
+ }
+
+ /**
* Get the hour of the day for the given chronon time.
*
* @param millis
@@ -692,6 +762,26 @@
return ms;
}
+ /**
+ * Get the day of week for the given chronon time. 0 (Sunday) to 7 (Saturday)
+ *
+ * @param millis
+ * @return
+ */
+ public int getDayOfWeek(long millis) {
+ long daysSinceAnchor = getChrononInDays(millis);
+
+ // compute the weekday (0-based, and 0 = Sunday). Adjustment is needed as the anchor day is Thursday.
+ int weekday = (int) ((daysSinceAnchor + ANCHOR_WEEKDAY) % DAYS_IN_A_WEEK);
+
+ // handle the negative weekday
+ if (weekday < 0) {
+ weekday += DAYS_IN_A_WEEK;
+ }
+
+ return weekday;
+ }
+
public int getDurationMonth(int months) {
return (months % 12);
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index 03b5fc9..a15eefe 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
@@ -206,6 +206,10 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "get-object-fields", 1);
public static final FunctionIdentifier GET_RECORD_FIELD_VALUE =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "get-object-field-value", 2);
+ public static final FunctionIdentifier RECORD_LENGTH =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "object-length", 1);
+ public static final FunctionIdentifier RECORD_NAMES =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "object-names", 1);
public static final FunctionIdentifier RECORD_PAIRS =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "object-pairs", FunctionIdentifier.VARARGS);
public static final FunctionIdentifier GEOMETRY_CONSTRUCTOR =
@@ -1402,6 +1406,8 @@
addFunction(FIELD_ACCESS_BY_NAME, FieldAccessByNameResultType.INSTANCE, true);
addFunction(GET_RECORD_FIELDS, OrderedListOfAnyTypeComputer.INSTANCE, true);
addFunction(GET_RECORD_FIELD_VALUE, FieldAccessNestedResultType.INSTANCE, true);
+ addFunction(RECORD_LENGTH, AInt64TypeComputer.INSTANCE_NULLABLE, true);
+ addFunction(RECORD_NAMES, OrderedListOfAStringTypeComputer.INSTANCE_NULLABLE, true);
addFunction(RECORD_PAIRS, RecordPairsTypeComputer.INSTANCE, true);
addFunction(GEOMETRY_CONSTRUCTOR, AGeometryTypeComputer.INSTANCE, true);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AInt64TypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AInt64TypeComputer.java
index 9909c3d..d495acf 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AInt64TypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AInt64TypeComputer.java
@@ -19,6 +19,7 @@
package org.apache.asterix.om.typecomputer.impl;
import org.apache.asterix.om.typecomputer.base.AbstractResultTypeComputer;
+import org.apache.asterix.om.types.AUnionType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -26,14 +27,19 @@
public class AInt64TypeComputer extends AbstractResultTypeComputer {
- public static final AInt64TypeComputer INSTANCE = new AInt64TypeComputer();
+ public static final AInt64TypeComputer INSTANCE = new AInt64TypeComputer(false);
- private AInt64TypeComputer() {
+ public static final AInt64TypeComputer INSTANCE_NULLABLE = new AInt64TypeComputer(true);
+
+ private final IAType type;
+
+ private AInt64TypeComputer(boolean nullable) {
+ IAType t = BuiltinType.AINT64;
+ type = nullable ? AUnionType.createNullableType(t) : t;
}
@Override
protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException {
- return BuiltinType.AINT64;
+ return type;
}
-
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/OrderedListOfAStringTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/OrderedListOfAStringTypeComputer.java
index bd35872..1d315e2 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/OrderedListOfAStringTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/OrderedListOfAStringTypeComputer.java
@@ -20,6 +20,7 @@
import org.apache.asterix.om.typecomputer.base.AbstractResultTypeComputer;
import org.apache.asterix.om.types.AOrderedListType;
+import org.apache.asterix.om.types.AUnionType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -27,13 +28,19 @@
public class OrderedListOfAStringTypeComputer extends AbstractResultTypeComputer {
- public static final OrderedListOfAStringTypeComputer INSTANCE = new OrderedListOfAStringTypeComputer();
+ public static final OrderedListOfAStringTypeComputer INSTANCE = new OrderedListOfAStringTypeComputer(false);
- private OrderedListOfAStringTypeComputer() {
+ public static final OrderedListOfAStringTypeComputer INSTANCE_NULLABLE = new OrderedListOfAStringTypeComputer(true);
+
+ private final IAType type;
+
+ private OrderedListOfAStringTypeComputer(boolean nullable) {
+ IAType t = new AOrderedListType(BuiltinType.ASTRING, null);
+ type = nullable ? AUnionType.createNullableType(t) : t;
}
@Override
protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException {
- return new AOrderedListType(BuiltinType.ASTRING, null);
+ return type;
}
}
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
index bfac451..5c324b1 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
@@ -109,13 +109,12 @@
public synchronized void close() {
try {
- if (sc != null && sc.isOpen()) {
- ReplicationProtocol.sendGoodbye(sc);
- sc.close();
- sc = null;
+ if (sc != null) {
+ sendGoodBye();
+ NetworkUtil.closeQuietly(sc);
}
- } catch (IOException e) {
- LOGGER.warn("Failed to close channel", e);
+ } finally {
+ sc = null;
}
}
@@ -166,4 +165,12 @@
LOGGER.info(() -> "Replica " + this + " status changing: " + this.status + " -> " + status);
this.status = status;
}
+
+ private void sendGoodBye() {
+ try {
+ ReplicationProtocol.sendGoodbye(sc);
+ } catch (IOException e) {
+ LOGGER.warn("Failed to send good bye to {}", this, e);
+ }
+ }
}
\ No newline at end of file
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaFilesSynchronizer.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaFilesSynchronizer.java
index fae6ed6..0d97a7a 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaFilesSynchronizer.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaFilesSynchronizer.java
@@ -18,9 +18,12 @@
*/
package org.apache.asterix.replication.sync;
+import static org.apache.asterix.common.utils.StorageConstants.METADATA_FILE_NAME;
+
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
+import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -40,6 +43,13 @@
*/
public class ReplicaFilesSynchronizer {
+ private static final Comparator<String> REPLICATED_FILES_COMPARATOR = (file, anotherFile) -> {
+ if (file.endsWith(METADATA_FILE_NAME) && !anotherFile.endsWith(METADATA_FILE_NAME)) {
+ return -1;
+ }
+ return file.compareTo(anotherFile);
+ };
+
private final PartitionReplica replica;
private final INcApplicationContext appCtx;
@@ -79,6 +89,8 @@
private void replicateMissingFiles(List<String> files) {
final FileSynchronizer sync = new FileSynchronizer(appCtx, replica);
+ // sort files to ensure index metadata files are replicated first
+ files.sort(REPLICATED_FILES_COMPARATOR);
files.forEach(sync::replicate);
}
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaSynchronizer.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaSynchronizer.java
index 9f397d2..ef85977 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaSynchronizer.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaSynchronizer.java
@@ -22,9 +22,9 @@
import org.apache.asterix.common.api.INcApplicationContext;
import org.apache.asterix.common.replication.IReplicationStrategy;
-import org.apache.asterix.replication.messaging.ReplicationProtocol;
-import org.apache.asterix.replication.messaging.CheckpointPartitionIndexesTask;
import org.apache.asterix.replication.api.PartitionReplica;
+import org.apache.asterix.replication.messaging.CheckpointPartitionIndexesTask;
+import org.apache.asterix.replication.messaging.ReplicationProtocol;
/**
* Performs the steps required to ensure any newly added replica
@@ -41,9 +41,12 @@
}
public void sync() throws IOException {
- syncFiles();
- checkpointReplicaIndexes();
- appCtx.getReplicationManager().register(replica);
+ final Object syncLock = appCtx.getReplicaManager().getReplicaSyncLock();
+ synchronized (syncLock) {
+ syncFiles();
+ checkpointReplicaIndexes();
+ appCtx.getReplicationManager().register(replica);
+ }
}
private void syncFiles() throws IOException {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/collections/ListifyAggregateFunctionEvalFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/collections/ListifyAggregateFunctionEvalFactory.java
index 1f1d408..2bb9eb3 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/collections/ListifyAggregateFunctionEvalFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/collections/ListifyAggregateFunctionEvalFactory.java
@@ -64,7 +64,7 @@
eval.evaluate(tuple, inputVal);
builder.addItem(inputVal);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -74,7 +74,7 @@
try {
builder.write(resultStorage.getDataOutput(), true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableAvgAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableAvgAggregateFunction.java
index db12b85..9d4712b7 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableAvgAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableAvgAggregateFunction.java
@@ -102,7 +102,7 @@
state.writeLong(0);
state.writeByte(ATypeTag.SERIALIZED_SYSTEM_NULL_TYPE_TAG);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -210,7 +210,7 @@
result.write(avgBytes.getByteArray(), avgBytes.getStartOffset(), avgBytes.getLength());
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -268,7 +268,7 @@
doubleSerde.serialize(aDouble, result);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableCountAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableCountAggregateFunction.java
index 9a7cc98..a2a2d1f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableCountAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableCountAggregateFunction.java
@@ -66,7 +66,7 @@
state.writeBoolean(false);
state.writeLong(0);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -98,7 +98,7 @@
int64Serde.serialize(result, out);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSumAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSumAggregateFunction.java
index b034c6e..8ba3a05 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSumAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSumAggregateFunction.java
@@ -78,7 +78,7 @@
state.writeByte(ATypeTag.SERIALIZED_SYSTEM_NULL_TYPE_TAG);
state.writeDouble(0.0);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -209,7 +209,7 @@
throw new UnsupportedItemTypeException(BuiltinFunctions.SUM, aggType.serialize());
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractAvgAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractAvgAggregateFunction.java
index bf45c0b..37cf766 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractAvgAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractAvgAggregateFunction.java
@@ -200,7 +200,7 @@
result.set(avgBytes);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -249,7 +249,7 @@
doubleSerde.serialize(aDouble, resultStorage.getDataOutput());
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractCountAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractCountAggregateFunction.java
index 38e8d8b..6dc4759 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractCountAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractCountAggregateFunction.java
@@ -81,7 +81,7 @@
result.setValue(cnt);
int64Serde.serialize(result, resultStorage.getDataOutput());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
resultPointable.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractMinMaxAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractMinMaxAggregateFunction.java
index 32c40e6..0ba7c71 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractMinMaxAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractMinMaxAggregateFunction.java
@@ -108,7 +108,7 @@
tpc.convertType(outputVal.getByteArray(), outputVal.getStartOffset() + 1,
outputVal.getLength() - 1, tempValForCasting.getDataOutput());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
outputVal.assign(tempValForCasting);
}
@@ -125,7 +125,7 @@
tpc.convertType(inputVal.getByteArray(), inputVal.getStartOffset() + 1,
inputVal.getLength() - 1, tempValForCasting.getDataOutput());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
if (cmp.compare(tempValForCasting.getByteArray(), tempValForCasting.getStartOffset(),
tempValForCasting.getLength(), outputVal.getByteArray(), outputVal.getStartOffset(),
@@ -164,7 +164,7 @@
}
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSumAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSumAggregateFunction.java
index a4a9ce3..fd841e0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSumAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSumAggregateFunction.java
@@ -197,7 +197,7 @@
throw new UnsupportedItemTypeException(BuiltinFunctions.SUM, aggType.serialize());
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/CircleCenterAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/CircleCenterAccessor.java
index e10bd07..98943a4 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/CircleCenterAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/CircleCenterAccessor.java
@@ -97,7 +97,7 @@
ATypeTag.SERIALIZED_CIRCLE_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/CircleRadiusAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/CircleRadiusAccessor.java
index 2fc24e4..e7a3f02 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/CircleRadiusAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/CircleRadiusAccessor.java
@@ -92,7 +92,7 @@
ATypeTag.SERIALIZED_CIRCLE_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/LineRectanglePolygonAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/LineRectanglePolygonAccessor.java
index 66de80a..d3069ee 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/LineRectanglePolygonAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/LineRectanglePolygonAccessor.java
@@ -158,7 +158,7 @@
ATypeTag.SERIALIZED_POLYGON_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/PointXCoordinateAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/PointXCoordinateAccessor.java
index 0aa38f3..ad9dcda 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/PointXCoordinateAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/PointXCoordinateAccessor.java
@@ -92,7 +92,7 @@
ATypeTag.SERIALIZED_POINT_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/PointYCoordinateAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/PointYCoordinateAccessor.java
index cfaa5d5..6b96ddd 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/PointYCoordinateAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/PointYCoordinateAccessor.java
@@ -96,7 +96,7 @@
ATypeTag.SERIALIZED_POINT_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalDayAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalDayAccessor.java
index 4e62659..e9d7339 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalDayAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalDayAccessor.java
@@ -126,7 +126,7 @@
aMutableInt64.setValue(day);
intSerde.serialize(aMutableInt64, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalHourAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalHourAccessor.java
index 7ba57f9..d18864b 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalHourAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalHourAccessor.java
@@ -124,7 +124,7 @@
aMutableInt64.setValue(hour);
intSerde.serialize(aMutableInt64, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndAccessor.java
index 0d5d01c..c5ce56b 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndAccessor.java
@@ -117,7 +117,7 @@
ATypeTag.SERIALIZED_INTERVAL_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndDateAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndDateAccessor.java
index b83cbd1..777eb76 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndDateAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndDateAccessor.java
@@ -99,7 +99,7 @@
ATypeTag.SERIALIZED_INTERVAL_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndDatetimeAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndDatetimeAccessor.java
index c806db1..34161da 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndDatetimeAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndDatetimeAccessor.java
@@ -101,7 +101,7 @@
ATypeTag.SERIALIZED_INTERVAL_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndTimeAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndTimeAccessor.java
index 8131385..10a3612 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndTimeAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalEndTimeAccessor.java
@@ -98,7 +98,7 @@
ATypeTag.SERIALIZED_INTERVAL_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartAccessor.java
index 04da6d2..e858c68 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartAccessor.java
@@ -118,7 +118,7 @@
ATypeTag.SERIALIZED_INTERVAL_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartDateAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartDateAccessor.java
index 971fd13..84ed55f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartDateAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartDateAccessor.java
@@ -102,7 +102,7 @@
ATypeTag.SERIALIZED_INTERVAL_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartDatetimeAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartDatetimeAccessor.java
index d785e90..d847b52 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartDatetimeAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartDatetimeAccessor.java
@@ -99,7 +99,7 @@
ATypeTag.SERIALIZED_INTERVAL_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartTimeAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartTimeAccessor.java
index 2075b95..e59a3d2 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartTimeAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalIntervalStartTimeAccessor.java
@@ -100,7 +100,7 @@
ATypeTag.SERIALIZED_INTERVAL_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMillisecondAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMillisecondAccessor.java
index 292f410..fcfbed3 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMillisecondAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMillisecondAccessor.java
@@ -122,7 +122,7 @@
aMutableInt64.setValue(ms);
intSerde.serialize(aMutableInt64, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMinuteAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMinuteAccessor.java
index a92344b..2a84320 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMinuteAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMinuteAccessor.java
@@ -125,7 +125,7 @@
aMutableInt64.setValue(min);
intSerde.serialize(aMutableInt64, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMonthAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMonthAccessor.java
index bbdc9a0..4709171 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMonthAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalMonthAccessor.java
@@ -125,7 +125,7 @@
aMutableInt64.setValue(month);
intSerde.serialize(aMutableInt64, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalSecondAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalSecondAccessor.java
index ecee642..fe2bb39 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalSecondAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalSecondAccessor.java
@@ -122,7 +122,7 @@
aMutableInt64.setValue(sec);
intSerde.serialize(aMutableInt64, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalYearAccessor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalYearAccessor.java
index 49d841c..21dcc67 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalYearAccessor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/accessors/TemporalYearAccessor.java
@@ -144,7 +144,7 @@
intSerde.serialize(aMutableInt64, out);
result.set(resultStorage);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java
index 32196e5..c763d3c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/CreateMBREvalFactory.java
@@ -338,7 +338,7 @@
out.writeByte(ATypeTag.SERIALIZED_DOUBLE_TYPE_TAG);
out.writeDouble(value);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/FullTextContainsEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/FullTextContainsEvaluator.java
index 3bd2587..dafc034 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/FullTextContainsEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/FullTextContainsEvaluator.java
@@ -148,7 +148,7 @@
try {
nullSerde.serialize(ANull.NULL, out);
} catch (HyracksDataException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
return;
@@ -158,7 +158,7 @@
ABoolean b = fullTextContainsWithArg(typeTag2, argLeft, argRight) ? ABoolean.TRUE : ABoolean.FALSE;
serde.serialize(b, out);
} catch (HyracksDataException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalStartFromDateConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalStartFromDateConstructorDescriptor.java
index 0e1942ec..e2a3614 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalStartFromDateConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalStartFromDateConstructorDescriptor.java
@@ -87,6 +87,7 @@
private ISerializerDeserializer<AInterval> intervalSerde =
SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.AINTERVAL);
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
+ private final GregorianCalendarSystem cal = GregorianCalendarSystem.getInstance();
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
@@ -142,8 +143,8 @@
ATypeTag.SERIALIZED_DATE_TYPE_TAG, ATypeTag.SERIALIZED_STRING_TYPE_TAG);
}
- intervalStart = GregorianCalendarSystem.getChrononInDays(intervalStart);
- intervalEnd = GregorianCalendarSystem.getChrononInDays(intervalEnd);
+ intervalStart = cal.getChrononInDays(intervalStart);
+ intervalEnd = cal.getChrononInDays(intervalEnd);
if (intervalEnd < intervalStart) {
throw new InvalidDataFormatException(getIdentifier(),
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/OrderedListConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/OrderedListConstructorDescriptor.java
index 3a378de..a378c74 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/OrderedListConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/OrderedListConstructorDescriptor.java
@@ -114,7 +114,7 @@
builder.write(out, true);
result.set(resultStorage);
} catch (IOException ioe) {
- throw new HyracksDataException(ioe);
+ throw HyracksDataException.create(ioe);
}
}
@@ -127,7 +127,7 @@
}
} catch (IOException ioe) {
- throw new HyracksDataException(ioe);
+ throw HyracksDataException.create(ioe);
}
}
@@ -140,7 +140,7 @@
}
} catch (IOException ioe) {
- throw new HyracksDataException(ioe);
+ throw HyracksDataException.create(ioe);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/UnorderedListConstructorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/UnorderedListConstructorDescriptor.java
index 5f11acb..a23f998 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/UnorderedListConstructorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/UnorderedListConstructorDescriptor.java
@@ -117,7 +117,7 @@
builder.write(out, true);
result.set(resultStorage);
} catch (IOException ioe) {
- throw new HyracksDataException(ioe);
+ throw HyracksDataException.create(ioe);
}
}
@@ -129,7 +129,7 @@
builder.addItem(inputVal);
}
} catch (IOException ioe) {
- throw new HyracksDataException(ioe);
+ throw HyracksDataException.create(ioe);
}
}
@@ -141,7 +141,7 @@
builder.addItem(inputVal);
}
} catch (IOException ioe) {
- throw new HyracksDataException(ioe);
+ throw HyracksDataException.create(ioe);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractBinaryStringEval.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractBinaryStringEval.java
index 7c0ee6b..af0a819 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractBinaryStringEval.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractBinaryStringEval.java
@@ -94,7 +94,7 @@
try {
process(leftPtr, rightPtr, resultPointable);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractQuadStringStringEval.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractQuadStringStringEval.java
index 1b7c679..47c8d34 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractQuadStringStringEval.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractQuadStringStringEval.java
@@ -125,7 +125,7 @@
resultBuffer.setValue(res);
strSerde.serialize(resultBuffer, dout);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractUnaryNumericFunctionEval.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractUnaryNumericFunctionEval.java
index 06dcc17..61cd6f6 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractUnaryNumericFunctionEval.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractUnaryNumericFunctionEval.java
@@ -207,7 +207,7 @@
serde.serialize(result, dataOutput);
resultPointable.set(resultStorage);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractUnaryStringStringEval.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractUnaryStringStringEval.java
index 95b6ef6..a8853f1 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractUnaryStringStringEval.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractUnaryStringStringEval.java
@@ -73,7 +73,7 @@
process(stringPtr, resultPointable);
writeResult(resultPointable);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateCircleDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateCircleDescriptor.java
index 4866583..132c99e 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateCircleDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateCircleDescriptor.java
@@ -108,7 +108,7 @@
aCircle.setValue(aPoint, ADoubleSerializerDeserializer.getDouble(bytes1, offset1 + 1));
circleSerde.serialize(aCircle, out);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateLineDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateLineDescriptor.java
index 0c8c12f..6f79f97 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateLineDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateLineDescriptor.java
@@ -116,7 +116,7 @@
aLine.setValue(aPoint[0], aPoint[1]);
lineSerde.serialize(aLine, out);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreatePointDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreatePointDescriptor.java
index e34091b..d61d6f2 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreatePointDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreatePointDescriptor.java
@@ -98,7 +98,7 @@
ADoubleSerializerDeserializer.getDouble(bytes1, offset1 + 1));
pointSerde.serialize(aPoint, out);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateRectangleDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateRectangleDescriptor.java
index 59cc2c1..ad874f5 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateRectangleDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CreateRectangleDescriptor.java
@@ -124,7 +124,7 @@
rectangle2DSerde.serialize(aRectangle, out);
result.set(resultStorage);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DeepEqualityDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DeepEqualityDescriptor.java
index 79c63e7..c277159 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DeepEqualityDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DeepEqualityDescriptor.java
@@ -106,7 +106,7 @@
boolSerde.serialize(resultBit, out);
result.set(resultStorage);
} catch (Exception ioe) {
- throw new HyracksDataException(ioe);
+ throw HyracksDataException.create(ioe);
}
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/LenDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/LenDescriptor.java
index 4268fc7..7bae18b 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/LenDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/LenDescriptor.java
@@ -99,7 +99,7 @@
try {
int64Serde.serialize(res, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SleepDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SleepDescriptor.java
index 8bced98..c2a11bb 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SleepDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SleepDescriptor.java
@@ -57,7 +57,6 @@
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
- evalValue.evaluate(tuple, result);
evalTime.evaluate(tuple, argTime);
final byte[] bytes = argTime.getByteArray();
@@ -76,6 +75,8 @@
LOGGER.log(Level.INFO, ctx.getTaskAttemptId() + " done sleeping for " + time + " ms");
}
}
+
+ evalValue.evaluate(tuple, result);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialAreaDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialAreaDescriptor.java
index d49ce73..f3d0bd8 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialAreaDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialAreaDescriptor.java
@@ -123,7 +123,7 @@
ATypeTag.SERIALIZED_RECTANGLE_TYPE_TAG);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialCellDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialCellDescriptor.java
index 2a448e3..9b47b92 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialCellDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialCellDescriptor.java
@@ -146,7 +146,7 @@
}
result.set(resultStorage);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialDistanceDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialDistanceDescriptor.java
index b6b5aa3..ba47d3d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialDistanceDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialDistanceDescriptor.java
@@ -103,7 +103,7 @@
out.writeByte(ATypeTag.SERIALIZED_DOUBLE_TYPE_TAG);
out.writeDouble(distance);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLengthDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLengthDescriptor.java
index bf62316..b435025 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLengthDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLengthDescriptor.java
@@ -88,7 +88,7 @@
}
resultPointable.set(resultStorage);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRepeatDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRepeatDescriptor.java
index 77c4f20..4672c75 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRepeatDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRepeatDescriptor.java
@@ -114,7 +114,7 @@
out.write(bytes, inputStringStart, inputLen);
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringSplitDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringSplitDescriptor.java
index f788366..4cfb92d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringSplitDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringSplitDescriptor.java
@@ -141,7 +141,7 @@
listBuilder.write(out, true);
result.set(resultStorage);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
index fe5ad9f..63d474d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
@@ -108,7 +108,7 @@
}
result.set(resultStorage);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/Substring2Descriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/Substring2Descriptor.java
index 8ebfb94..53f73ae 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/Substring2Descriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/Substring2Descriptor.java
@@ -102,13 +102,13 @@
} catch (StringIndexOutOfBoundsException e) {
throw new RuntimeDataException(ErrorCode.OUT_OF_BOUND, getIdentifier(), 1, start);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
try {
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
out.write(array.getByteArray(), 0, array.getLength());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringAfterDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringAfterDescriptor.java
index af58f32..92e0c52 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringAfterDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringAfterDescriptor.java
@@ -98,7 +98,7 @@
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
out.write(array.getByteArray(), 0, array.getLength());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringBeforeDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringBeforeDescriptor.java
index 4be1cf6..fe6631c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringBeforeDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringBeforeDescriptor.java
@@ -99,7 +99,7 @@
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
out.write(array.getByteArray(), 0, array.getLength());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringDescriptor.java
index d2a1203..148d0a4 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SubstringDescriptor.java
@@ -114,14 +114,14 @@
} catch (StringIndexOutOfBoundsException e) {
throw new RuntimeDataException(ErrorCode.OUT_OF_BOUND, getIdentifier(), 1, start + len - 1);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
try {
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
out.write(array.getByteArray(), 0, array.getLength());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/binary/AbstractSubBinaryEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/binary/AbstractSubBinaryEvaluator.java
index fc049a4..6c84893 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/binary/AbstractSubBinaryEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/binary/AbstractSubBinaryEvaluator.java
@@ -96,7 +96,7 @@
dataOutput.write(byteArrayPointable.getByteArray(), byteArrayPointable.getContentStartOffset() + subStart,
subLength);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/binary/PrintBinaryDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/binary/PrintBinaryDescriptor.java
index 5a6cbd0..11b68d3 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/binary/PrintBinaryDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/binary/PrintBinaryDescriptor.java
@@ -106,7 +106,7 @@
dataOutput.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
writer.writeUTF8(stringBuilder.toString(), dataOutput);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldValueDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldValueDescriptor.java
index 631dd70..4c07e2d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldValueDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldValueDescriptor.java
@@ -38,7 +38,7 @@
@Override
public IFunctionTypeInferer createFunctionTypeInferer() {
- return new FunctionTypeInferers.GetRecordFieldValueTypeInferer();
+ return FunctionTypeInferers.RecordAccessorTypeInferer.INSTANCE_STRICT;
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldsDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldsDescriptor.java
index 273e3ca..57e98d0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldsDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldsDescriptor.java
@@ -38,7 +38,7 @@
@Override
public IFunctionTypeInferer createFunctionTypeInferer() {
- return new FunctionTypeInferers.GetRecordFieldsTypeInferer();
+ return FunctionTypeInferers.RecordAccessorTypeInferer.INSTANCE_STRICT;
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldsEvalFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldsEvalFactory.java
index 9a3f3b9..69ea1bc 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldsEvalFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/GetRecordFieldsEvalFactory.java
@@ -21,7 +21,6 @@
import java.io.DataOutput;
import java.io.IOException;
-import org.apache.asterix.common.exceptions.AsterixException;
import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.om.pointables.nonvisitor.ARecordPointable;
@@ -77,7 +76,7 @@
try {
rfu.processRecord(recordPointable, recordType, out, 0);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordConcatEvalFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordConcatEvalFactory.java
index 71f035e..82cc876 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordConcatEvalFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordConcatEvalFactory.java
@@ -186,7 +186,7 @@
try {
appendRecord(argPointables[i], argRecordPointables[i], castRequired.get(i));
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
outRecordBuilder.write(resultOutput, true);
@@ -238,7 +238,7 @@
try {
resultOutput.writeByte(typeTag);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordLengthDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordLengthDescriptor.java
new file mode 100644
index 0000000..cda069d
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordLengthDescriptor.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.evaluators.functions.records;
+
+import java.io.DataOutput;
+
+import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
+import org.apache.asterix.om.base.AInt64;
+import org.apache.asterix.om.base.AMutableInt64;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.om.functions.IFunctionTypeInferer;
+import org.apache.asterix.om.pointables.nonvisitor.ARecordPointable;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.asterix.runtime.evaluators.functions.PointableHelper;
+import org.apache.asterix.runtime.functions.FunctionTypeInferers;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+public class RecordLengthDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new RecordLengthDescriptor();
+ }
+
+ @Override
+ public IFunctionTypeInferer createFunctionTypeInferer() {
+ return FunctionTypeInferers.RecordAccessorTypeInferer.INSTANCE_LAX;
+ }
+ };
+
+ private static final long serialVersionUID = 1L;
+ private ARecordType recType;
+
+ @Override
+ public void setImmutableStates(Object... states) {
+ this.recType = (ARecordType) states[0];
+ }
+
+ @Override
+ public IScalarEvaluatorFactory createEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IScalarEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
+ return new IScalarEvaluator() {
+
+ private IScalarEvaluator eval0 = args[0].createScalarEvaluator(ctx);
+
+ private final IPointable argPtr = new VoidPointable();
+ private final ARecordPointable recordPointable =
+ (ARecordPointable) ARecordPointable.FACTORY.createPointable();
+ private final AMutableInt64 aInt64 = new AMutableInt64(0);
+ @SuppressWarnings("unchecked")
+ private final ISerializerDeserializer<AInt64> int64Serde =
+ SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.AINT64);
+ private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
+ private final DataOutput out = resultStorage.getDataOutput();
+
+ @Override
+ public void evaluate(IFrameTupleReference tuple, IPointable resultPointable)
+ throws HyracksDataException {
+ resultStorage.reset();
+ eval0.evaluate(tuple, argPtr);
+
+ byte[] data = argPtr.getByteArray();
+ int offset = argPtr.getStartOffset();
+
+ if (data[offset] != ATypeTag.SERIALIZED_RECORD_TYPE_TAG) {
+ PointableHelper.setNull(resultPointable);
+ return;
+ }
+
+ recordPointable.set(data, offset, argPtr.getLength());
+ int n = recordPointable.getSchemeFieldCount(recType)
+ + recordPointable.getOpenFieldCount(recType);
+
+ aInt64.setValue(n);
+ int64Serde.serialize(aInt64, out);
+ resultPointable.set(resultStorage);
+ }
+ };
+ }
+ };
+ }
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.RECORD_LENGTH;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor.java
index 7a4522f..7de372f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordMergeDescriptor.java
@@ -134,7 +134,7 @@
mergeFields(outRecType, rp0, rp1, true, 0);
rbStack.get(0).write(out, true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordNamesDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordNamesDescriptor.java
new file mode 100644
index 0000000..bb8e3e7
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordNamesDescriptor.java
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.evaluators.functions.records;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.asterix.builders.OrderedListBuilder;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.om.functions.IFunctionTypeInferer;
+import org.apache.asterix.om.pointables.nonvisitor.ARecordPointable;
+import org.apache.asterix.om.types.AOrderedListType;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.asterix.runtime.evaluators.functions.PointableHelper;
+import org.apache.asterix.runtime.functions.FunctionTypeInferers;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+public class RecordNamesDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new RecordNamesDescriptor();
+ }
+
+ @Override
+ public IFunctionTypeInferer createFunctionTypeInferer() {
+ return FunctionTypeInferers.RecordAccessorTypeInferer.INSTANCE_LAX;
+ }
+ };
+
+ private static final long serialVersionUID = 1L;
+ private ARecordType recType;
+
+ @Override
+ public void setImmutableStates(Object... states) {
+ this.recType = (ARecordType) states[0];
+ }
+
+ @Override
+ public IScalarEvaluatorFactory createEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IScalarEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
+ return new IScalarEvaluator() {
+
+ private IScalarEvaluator eval0 = args[0].createScalarEvaluator(ctx);
+ private final IPointable argPtr = new VoidPointable();
+ private final ARecordPointable recordPointable =
+ (ARecordPointable) ARecordPointable.FACTORY.createPointable();
+ private final OrderedListBuilder listBuilder = new OrderedListBuilder();
+ private final ArrayBackedValueStorage itemStorage = new ArrayBackedValueStorage();
+ private final DataOutput itemOut = itemStorage.getDataOutput();
+ private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
+ private final DataOutput resultOut = resultStorage.getDataOutput();
+
+ @Override
+ public void evaluate(IFrameTupleReference tuple, IPointable resultPointable)
+ throws HyracksDataException {
+ resultStorage.reset();
+ eval0.evaluate(tuple, argPtr);
+
+ byte[] data = argPtr.getByteArray();
+ int offset = argPtr.getStartOffset();
+
+ if (data[offset] != ATypeTag.SERIALIZED_RECORD_TYPE_TAG) {
+ PointableHelper.setNull(resultPointable);
+ return;
+ }
+
+ recordPointable.set(data, offset, argPtr.getLength());
+
+ listBuilder.reset(AOrderedListType.FULL_OPEN_ORDEREDLIST_TYPE);
+
+ try {
+ for (int i = 0, n = recordPointable.getSchemeFieldCount(recType); i < n; i++) {
+ itemStorage.reset();
+ recordPointable.getClosedFieldName(recType, i, itemOut);
+ listBuilder.addItem(itemStorage);
+ }
+ for (int i = 0, n = recordPointable.getOpenFieldCount(recType); i < n; i++) {
+ itemStorage.reset();
+ recordPointable.getOpenFieldName(recType, i, itemOut);
+ listBuilder.addItem(itemStorage);
+ }
+ } catch (IOException e) {
+ throw HyracksDataException.create(e);
+ }
+
+ listBuilder.write(resultOut, true);
+
+ resultPointable.set(resultStorage);
+ }
+ };
+ }
+ };
+ }
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.RECORD_NAMES;
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordPairsDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordPairsDescriptor.java
index 2bf2530..6f8ba29 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordPairsDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordPairsDescriptor.java
@@ -59,7 +59,7 @@
@Override
public IFunctionTypeInferer createFunctionTypeInferer() {
- return new FunctionTypeInferers.RecordPairsTypeInferer();
+ return FunctionTypeInferers.RecordAccessorTypeInferer.INSTANCE_STRICT;
}
};
@@ -102,7 +102,7 @@
serde.serialize(new AString("name"), nameStorage.getDataOutput());
serde.serialize(new AString("value"), valueStorage.getDataOutput());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
return new IScalarEvaluator() {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordRemoveFieldsEvalFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordRemoveFieldsEvalFactory.java
index f10fb59..aeee36f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordRemoveFieldsEvalFactory.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/records/RecordRemoveFieldsEvalFactory.java
@@ -120,7 +120,7 @@
processRecord(requiredRecType, recordPointable, listPointable, 0);
rbStack.get(0).write(out, true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/AdjustDateTimeForTimeZoneDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/AdjustDateTimeForTimeZoneDescriptor.java
index 6db6a46..38d890c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/AdjustDateTimeForTimeZoneDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/AdjustDateTimeForTimeZoneDescriptor.java
@@ -121,9 +121,9 @@
Fields.MILLISECOND, true);
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
- utf8Writer.writeUTF8(sbder.toString(), out);
+ utf8Writer.writeUTF8(sbder, out);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/AdjustTimeForTimeZoneDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/AdjustTimeForTimeZoneDescriptor.java
index 6e8eb19..8c09e47 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/AdjustTimeForTimeZoneDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/AdjustTimeForTimeZoneDescriptor.java
@@ -119,9 +119,9 @@
Fields.MILLISECOND, true);
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
- writer.writeUTF8(sbder.toString(), out);
+ writer.writeUTF8(sbder, out);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/DayOfWeekDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/DayOfWeekDescriptor.java
index 6a3e128..7bb4265 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/DayOfWeekDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/DayOfWeekDescriptor.java
@@ -47,8 +47,6 @@
public class DayOfWeekDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
public final static FunctionIdentifier FID = BuiltinFunctions.DAY_OF_WEEK;
- // Fixed week day anchor: Thursday, 1 January 1970
- private final static int ANCHOR_WEEKDAY = 4;
public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
@@ -73,6 +71,8 @@
private IPointable argPtr = new VoidPointable();
private IScalarEvaluator eval = args[0].createScalarEvaluator(ctx);
+ private GregorianCalendarSystem cal = GregorianCalendarSystem.getInstance();
+
// possible returning types
@SuppressWarnings("unchecked")
private ISerializerDeserializer<AInt64> int64Serde =
@@ -87,37 +87,22 @@
byte[] bytes = argPtr.getByteArray();
int offset = argPtr.getStartOffset();
- int daysSinceAnchor;
- int reminder = 0;
+ long chronon;
if (bytes[offset] == ATypeTag.SERIALIZED_DATETIME_TYPE_TAG) {
- daysSinceAnchor = (int) (ADateTimeSerializerDeserializer.getChronon(bytes, offset + 1)
- / GregorianCalendarSystem.CHRONON_OF_DAY);
- reminder = (int) (ADateTimeSerializerDeserializer.getChronon(bytes, offset + 1)
- % GregorianCalendarSystem.CHRONON_OF_DAY);
+ chronon = ADateTimeSerializerDeserializer.getChronon(bytes, offset + 1);
} else if (bytes[offset] == ATypeTag.SERIALIZED_DATE_TYPE_TAG) {
- daysSinceAnchor = ADateSerializerDeserializer.getChronon(bytes, offset + 1);
+ chronon = ADateSerializerDeserializer.getChronon(bytes, offset + 1)
+ * GregorianCalendarSystem.CHRONON_OF_DAY;
} else {
throw new TypeMismatchException(getIdentifier(), 0, bytes[offset],
ATypeTag.SERIALIZED_DATETIME_TYPE_TAG, ATypeTag.SERIALIZED_DATE_TYPE_TAG);
}
- // adjust the day before 1970-01-01
- if (daysSinceAnchor < 0 && reminder != 0) {
- daysSinceAnchor -= 1;
- }
-
- // compute the weekday (0-based, and 0 = Sunday). Adjustment is needed as
- // the anchor day is Thursday.
- int weekday = (daysSinceAnchor + ANCHOR_WEEKDAY) % 7;
-
- // handle the negative weekday
- if (weekday < 0) {
- weekday += 7;
- }
+ int weekday = cal.getDayOfWeek(chronon);
// convert from 0-based to 1-based (so 7 = Sunday)
if (weekday == 0) {
- weekday = 7;
+ weekday = GregorianCalendarSystem.DAYS_IN_A_WEEK;
}
aInt64.setValue(weekday);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/OverlapBinsDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/OverlapBinsDescriptor.java
index 6980c65..9710e3f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/OverlapBinsDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/OverlapBinsDescriptor.java
@@ -298,7 +298,7 @@
}
listBuilder.write(out, true);
} catch (IOException e1) {
- throw new HyracksDataException(e1);
+ throw HyracksDataException.create(e1);
}
result.set(resultStorage);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseDateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseDateDescriptor.java
index e463eed..f8d5cf7 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseDateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseDateDescriptor.java
@@ -23,10 +23,10 @@
import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
import org.apache.asterix.om.base.ADate;
import org.apache.asterix.om.base.AMutableDate;
-import org.apache.asterix.om.base.temporal.AsterixTemporalTypeParseException;
+import org.apache.asterix.om.base.AMutableInt64;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils;
-import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils.DateTimeParseMode;
+import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.om.functions.IFunctionDescriptor;
import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
@@ -49,14 +49,15 @@
/**
* <b>|(bar)</b> is a special separator used to separate different formatting options.
- * Multiple format strings can be used by separating them using <b>|(bar)</b>, and the parsing will be successful only when the format string has the <b>exact</b> match with the given data string. This means that a time string like <it>08:23:12 AM</it> will not be valid for the format string <it>h:m:s</it> as there is no AM/PM format character in the format string.
+ * Multiple format strings can be used by separating them using <b>|(bar)</b>, and the parsing will be successful only
+ * when the format string has the <b>exact</b> match with the given data string.
+ * This means that a time string like <it>08:23:12 AM</it> will not be valid for the format string <it>h:m:s</it>
+ * as there is no AM/PM format character in the format string.
*/
public class ParseDateDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
- public final static FunctionIdentifier FID = BuiltinFunctions.PARSE_DATE;
- private final static DateTimeFormatUtils DT_UTILS = DateTimeFormatUtils.getInstance();
- public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
@Override
public IFunctionDescriptor createFunctionDescriptor() {
return new ParseDateDescriptor();
@@ -72,20 +73,23 @@
public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
- private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
- private DataOutput out = resultStorage.getDataOutput();
- private IPointable argPtr0 = new VoidPointable();
- private IPointable argPtr1 = new VoidPointable();
- private IScalarEvaluator eval0 = args[0].createScalarEvaluator(ctx);
- private IScalarEvaluator eval1 = args[1].createScalarEvaluator(ctx);
+ private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
+ private final DataOutput out = resultStorage.getDataOutput();
+ private final IPointable argPtr0 = new VoidPointable();
+ private final IPointable argPtr1 = new VoidPointable();
+ private final IScalarEvaluator eval0 = args[0].createScalarEvaluator(ctx);
+ private final IScalarEvaluator eval1 = args[1].createScalarEvaluator(ctx);
@SuppressWarnings("unchecked")
- private ISerializerDeserializer<ADate> dateSerde =
+ private final ISerializerDeserializer<ADate> dateSerde =
SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ADATE);
- private AMutableDate aDate = new AMutableDate(0);
+ private final AMutableInt64 aInt64 = new AMutableInt64(0);
+ private final AMutableDate aDate = new AMutableDate(0);
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
+ private final DateTimeFormatUtils util = DateTimeFormatUtils.getInstance();
+
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
@@ -115,7 +119,6 @@
utf8Ptr.set(bytes1, offset1 + 1, len1 - 1);
int start1 = utf8Ptr.getCharStartOffset();
int length1 = utf8Ptr.getUTF8Length();
- long chronon = 0;
int formatStart = start1;
int formatLength;
@@ -128,19 +131,14 @@
break;
}
}
- try {
- chronon = DT_UTILS.parseDateTime(bytes0, start0, length0, bytes1, formatStart,
- formatLength, DateTimeParseMode.DATE_ONLY);
- } catch (AsterixTemporalTypeParseException ex) {
- formatStart += formatLength + 1;
- continue;
- }
- processSuccessfully = true;
+ processSuccessfully = util.parseDateTime(aInt64, bytes0, start0, length0, bytes1,
+ formatStart, formatLength, DateTimeParseMode.DATE_ONLY, false);
+ formatStart += formatLength + 1;
}
if (!processSuccessfully) {
throw new InvalidDataFormatException(getIdentifier(), ATypeTag.SERIALIZED_DATE_TYPE_TAG);
}
- aDate.setValue((int) (chronon / GregorianCalendarSystem.CHRONON_OF_DAY));
+ aDate.setValue((int) (aInt64.getLongValue() / GregorianCalendarSystem.CHRONON_OF_DAY));
dateSerde.serialize(aDate, out);
result.set(resultStorage);
}
@@ -155,7 +153,6 @@
*/
@Override
public FunctionIdentifier getIdentifier() {
- return FID;
+ return BuiltinFunctions.PARSE_DATE;
}
-
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseDateTimeDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseDateTimeDescriptor.java
index a391529..8bb1a20 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseDateTimeDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseDateTimeDescriptor.java
@@ -23,7 +23,7 @@
import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
import org.apache.asterix.om.base.ADateTime;
import org.apache.asterix.om.base.AMutableDateTime;
-import org.apache.asterix.om.base.temporal.AsterixTemporalTypeParseException;
+import org.apache.asterix.om.base.AMutableInt64;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils.DateTimeParseMode;
import org.apache.asterix.om.functions.BuiltinFunctions;
@@ -48,10 +48,8 @@
public class ParseDateTimeDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
- public final static FunctionIdentifier FID = BuiltinFunctions.PARSE_DATETIME;
- private final static DateTimeFormatUtils DT_UTILS = DateTimeFormatUtils.getInstance();
- public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
@Override
public IFunctionDescriptor createFunctionDescriptor() {
return new ParseDateTimeDescriptor();
@@ -67,20 +65,23 @@
public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
- private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
- private DataOutput out = resultStorage.getDataOutput();
- private IPointable argPtr0 = new VoidPointable();
- private IPointable argPtr1 = new VoidPointable();
- private IScalarEvaluator eval0 = args[0].createScalarEvaluator(ctx);
- private IScalarEvaluator eval1 = args[1].createScalarEvaluator(ctx);
+ private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
+ private final DataOutput out = resultStorage.getDataOutput();
+ private final IPointable argPtr0 = new VoidPointable();
+ private final IPointable argPtr1 = new VoidPointable();
+ private final IScalarEvaluator eval0 = args[0].createScalarEvaluator(ctx);
+ private final IScalarEvaluator eval1 = args[1].createScalarEvaluator(ctx);
@SuppressWarnings("unchecked")
- private ISerializerDeserializer<ADateTime> datetimeSerde =
+ private final ISerializerDeserializer<ADateTime> datetimeSerde =
SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ADATETIME);
- private AMutableDateTime aDateTime = new AMutableDateTime(0);
+ private final AMutableInt64 aInt64 = new AMutableInt64(0);
+ private final AMutableDateTime aDateTime = new AMutableDateTime(0);
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
+ private final DateTimeFormatUtils util = DateTimeFormatUtils.getInstance();
+
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
@@ -109,7 +110,6 @@
utf8Ptr.set(bytes1, offset1 + 1, len1 - 1);
int start1 = utf8Ptr.getCharStartOffset();
int length1 = utf8Ptr.getUTF8Length();
- long chronon = 0;
int formatStart = start1;
int formatLength;
@@ -122,21 +122,15 @@
break;
}
}
- try {
- chronon = DT_UTILS.parseDateTime(bytes0, start0, length0, bytes1, formatStart,
- formatLength, DateTimeParseMode.DATETIME);
- } catch (AsterixTemporalTypeParseException ex) {
- formatStart += formatLength + 1;
- continue;
- }
- processSuccessfully = true;
+ processSuccessfully = util.parseDateTime(aInt64, bytes0, start0, length0, bytes1,
+ formatStart, formatLength, DateTimeParseMode.DATETIME, false);
+ formatStart += formatLength + 1;
}
-
if (!processSuccessfully) {
throw new InvalidDataFormatException(getIdentifier(),
ATypeTag.SERIALIZED_DATETIME_TYPE_TAG);
}
- aDateTime.setValue(chronon);
+ aDateTime.setValue(aInt64.getLongValue());
datetimeSerde.serialize(aDateTime, out);
result.set(resultStorage);
}
@@ -151,7 +145,6 @@
*/
@Override
public FunctionIdentifier getIdentifier() {
- return FID;
+ return BuiltinFunctions.PARSE_DATETIME;
}
-
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseTimeDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseTimeDescriptor.java
index 948c779..6b9488d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseTimeDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/ParseTimeDescriptor.java
@@ -21,9 +21,9 @@
import java.io.DataOutput;
import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
+import org.apache.asterix.om.base.AMutableInt64;
import org.apache.asterix.om.base.AMutableTime;
import org.apache.asterix.om.base.ATime;
-import org.apache.asterix.om.base.temporal.AsterixTemporalTypeParseException;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils.DateTimeParseMode;
import org.apache.asterix.om.functions.BuiltinFunctions;
@@ -48,11 +48,8 @@
public class ParseTimeDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
- public final static FunctionIdentifier FID = BuiltinFunctions.PARSE_TIME;
- private final static DateTimeFormatUtils DT_UTILS = DateTimeFormatUtils.getInstance();
public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
-
@Override
public IFunctionDescriptor createFunctionDescriptor() {
return new ParseTimeDescriptor();
@@ -68,20 +65,23 @@
public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
return new IScalarEvaluator() {
- private ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
- private DataOutput out = resultStorage.getDataOutput();
- private IPointable argPtr0 = new VoidPointable();
- private IPointable argPtr1 = new VoidPointable();
- private IScalarEvaluator eval0 = args[0].createScalarEvaluator(ctx);
- private IScalarEvaluator eval1 = args[1].createScalarEvaluator(ctx);
+ private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
+ private final DataOutput out = resultStorage.getDataOutput();
+ private final IPointable argPtr0 = new VoidPointable();
+ private final IPointable argPtr1 = new VoidPointable();
+ private final IScalarEvaluator eval0 = args[0].createScalarEvaluator(ctx);
+ private final IScalarEvaluator eval1 = args[1].createScalarEvaluator(ctx);
@SuppressWarnings("unchecked")
- private ISerializerDeserializer<ATime> timeSerde =
+ private final ISerializerDeserializer<ATime> timeSerde =
SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ATIME);
- private AMutableTime aTime = new AMutableTime(0);
+ private final AMutableInt64 aInt64 = new AMutableInt64(0);
+ private final AMutableTime aTime = new AMutableTime(0);
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
+ private final DateTimeFormatUtils util = DateTimeFormatUtils.getInstance();
+
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
@@ -110,7 +110,6 @@
utf8Ptr.set(bytes1, offset1 + 1, len1 - 1);
int start1 = utf8Ptr.getCharStartOffset();
int length1 = utf8Ptr.getUTF8Length();
- long chronon = 0;
int formatStart = start1;
int formatLength;
@@ -123,21 +122,14 @@
break;
}
}
- try {
- chronon = DT_UTILS.parseDateTime(bytes0, start0, length0, bytes1, formatStart,
- formatLength, DateTimeParseMode.TIME_ONLY);
- } catch (AsterixTemporalTypeParseException ex) {
- formatStart += formatLength + 1;
- continue;
- }
- processSuccessfully = true;
+ processSuccessfully = util.parseDateTime(aInt64, bytes0, start0, length0, bytes1,
+ formatStart, formatLength, DateTimeParseMode.TIME_ONLY, false);
+ formatStart += formatLength + 1;
}
-
if (!processSuccessfully) {
throw new InvalidDataFormatException(getIdentifier(), ATypeTag.SERIALIZED_TIME_TYPE_TAG);
}
-
- aTime.setValue((int) chronon);
+ aTime.setValue((int) aInt64.getLongValue());
timeSerde.serialize(aTime, out);
result.set(resultStorage);
}
@@ -152,7 +144,6 @@
*/
@Override
public FunctionIdentifier getIdentifier() {
- return FID;
+ return BuiltinFunctions.PARSE_TIME;
}
-
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintDateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintDateDescriptor.java
index 1ddb7e8..98fe013 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintDateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintDateDescriptor.java
@@ -23,14 +23,14 @@
import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils;
-import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils.DateTimeParseMode;
-import org.apache.asterix.runtime.exceptions.TypeMismatchException;
+import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.om.functions.IFunctionDescriptor;
import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
@@ -45,8 +45,6 @@
public class PrintDateDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
- public final static FunctionIdentifier FID = BuiltinFunctions.PRINT_DATE;
- private final static DateTimeFormatUtils DT_UTILS = DateTimeFormatUtils.getInstance();
public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
@@ -76,6 +74,8 @@
private StringBuilder sbder = new StringBuilder();
private final UTF8StringWriter utf8Writer = new UTF8StringWriter();
+ private final DateTimeFormatUtils util = DateTimeFormatUtils.getInstance();
+
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
@@ -101,19 +101,18 @@
int formatLength = UTF8StringUtil.getUTFLength(bytes1, offset1 + 1);
int offset = UTF8StringUtil.getNumBytesToStoreLength(formatLength);
sbder.delete(0, sbder.length());
- DT_UTILS.printDateTime(chronon, 0, bytes1, offset1 + 1 + offset, formatLength, sbder,
+ util.printDateTime(chronon, 0, bytes1, offset1 + 1 + offset, formatLength, sbder,
DateTimeParseMode.DATE_ONLY);
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
- utf8Writer.writeUTF8(sbder.toString(), out);
+ utf8Writer.writeUTF8(sbder, out);
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
result.set(resultStorage);
}
};
}
-
};
}
@@ -122,7 +121,6 @@
*/
@Override
public FunctionIdentifier getIdentifier() {
- return FID;
+ return BuiltinFunctions.PRINT_DATE;
}
-
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintDateTimeDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintDateTimeDescriptor.java
index b9f6e50..5d2f088 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintDateTimeDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintDateTimeDescriptor.java
@@ -24,12 +24,12 @@
import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils.DateTimeParseMode;
-import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.om.functions.IFunctionDescriptor;
import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
@@ -44,8 +44,6 @@
public class PrintDateTimeDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
- public final static FunctionIdentifier FID = BuiltinFunctions.PRINT_DATETIME;
- private final static DateTimeFormatUtils DT_UTILS = DateTimeFormatUtils.getInstance();
public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
@@ -75,6 +73,8 @@
private UTF8StringWriter utf8Writer = new UTF8StringWriter();
private UTF8StringPointable utf8Ptr = new UTF8StringPointable();
+ private final DateTimeFormatUtils util = DateTimeFormatUtils.getInstance();
+
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
@@ -100,19 +100,18 @@
utf8Ptr.set(bytes1, offset1 + 1, len1 - 1);
int formatLength = utf8Ptr.getUTF8Length();
sbder.delete(0, sbder.length());
- DT_UTILS.printDateTime(chronon, 0, utf8Ptr.getByteArray(), utf8Ptr.getCharStartOffset(),
+ util.printDateTime(chronon, 0, utf8Ptr.getByteArray(), utf8Ptr.getCharStartOffset(),
formatLength, sbder, DateTimeParseMode.DATETIME);
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
- utf8Writer.writeUTF8(sbder.toString(), out);
+ utf8Writer.writeUTF8(sbder, out);
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
result.set(resultStorage);
}
};
}
-
};
}
@@ -121,7 +120,6 @@
*/
@Override
public FunctionIdentifier getIdentifier() {
- return FID;
+ return BuiltinFunctions.PRINT_DATETIME;
}
-
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintTimeDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintTimeDescriptor.java
index 51c9dcd..48a5382 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintTimeDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/PrintTimeDescriptor.java
@@ -24,12 +24,12 @@
import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils;
import org.apache.asterix.om.base.temporal.DateTimeFormatUtils.DateTimeParseMode;
-import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.om.functions.IFunctionDescriptor;
import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.asterix.runtime.exceptions.TypeMismatchException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
@@ -44,8 +44,6 @@
public class PrintTimeDescriptor extends AbstractScalarFunctionDynamicDescriptor {
private static final long serialVersionUID = 1L;
- public final static FunctionIdentifier FID = BuiltinFunctions.PRINT_TIME;
- private final static DateTimeFormatUtils DT_UTILS = DateTimeFormatUtils.getInstance();
public final static IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
@@ -74,6 +72,8 @@
private final UTF8StringWriter writer = new UTF8StringWriter();
private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
+ private final DateTimeFormatUtils util = DateTimeFormatUtils.getInstance();
+
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
resultStorage.reset();
@@ -100,19 +100,18 @@
utf8Ptr.set(bytes1, offset1 + 1, len1 - 1);
int formatLength = utf8Ptr.getUTF8Length();
sbder.delete(0, sbder.length());
- DT_UTILS.printDateTime(chronon, 0, utf8Ptr.getByteArray(), utf8Ptr.getCharStartOffset(),
+ util.printDateTime(chronon, 0, utf8Ptr.getByteArray(), utf8Ptr.getCharStartOffset(),
formatLength, sbder, DateTimeParseMode.TIME_ONLY);
out.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
- writer.writeUTF8(sbder.toString(), out);
+ writer.writeUTF8(sbder, out);
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
result.set(resultStorage);
}
};
}
-
};
}
@@ -121,7 +120,6 @@
*/
@Override
public FunctionIdentifier getIdentifier() {
- return FID;
+ return BuiltinFunctions.PRINT_TIME;
}
-
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
index 487877b..6648ff2 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
@@ -263,7 +263,9 @@
import org.apache.asterix.runtime.evaluators.functions.records.RecordAddFieldsDescriptor;
import org.apache.asterix.runtime.evaluators.functions.records.RecordConcatDescriptor;
import org.apache.asterix.runtime.evaluators.functions.records.RecordConcatStrictDescriptor;
+import org.apache.asterix.runtime.evaluators.functions.records.RecordLengthDescriptor;
import org.apache.asterix.runtime.evaluators.functions.records.RecordMergeDescriptor;
+import org.apache.asterix.runtime.evaluators.functions.records.RecordNamesDescriptor;
import org.apache.asterix.runtime.evaluators.functions.records.RecordPairsDescriptor;
import org.apache.asterix.runtime.evaluators.functions.records.RecordRemoveFieldsDescriptor;
import org.apache.asterix.runtime.evaluators.functions.temporal.AdjustDateTimeForTimeZoneDescriptor;
@@ -614,6 +616,8 @@
fc.addGenerated(RecordMergeDescriptor.FACTORY);
fc.addGenerated(RecordAddFieldsDescriptor.FACTORY);
fc.addGenerated(RecordRemoveFieldsDescriptor.FACTORY);
+ fc.addGenerated(RecordLengthDescriptor.FACTORY);
+ fc.addGenerated(RecordNamesDescriptor.FACTORY);
// Spatial and temporal type accessors
fc.addGenerated(TemporalYearAccessor.FACTORY);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionTypeInferers.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionTypeInferers.java
index 6261fb3..be041e5 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionTypeInferers.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionTypeInferers.java
@@ -149,36 +149,41 @@
}
}
- public static final class GetRecordFieldsTypeInferer implements IFunctionTypeInferer {
- @Override
- public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context,
- CompilerProperties compilerProps) throws AlgebricksException {
- AbstractFunctionCallExpression fce = (AbstractFunctionCallExpression) expr;
- IAType t = (IAType) context.getType(fce.getArguments().get(0).getValue());
- ATypeTag typeTag = t.getTypeTag();
- if (typeTag.equals(ATypeTag.OBJECT)) {
- fd.setImmutableStates(t);
- } else if (typeTag.equals(ATypeTag.ANY)) {
- fd.setImmutableStates(RecordUtil.FULLY_OPEN_RECORD_TYPE);
- } else {
- throw new NotImplementedException("get-record-fields for data of type " + t);
- }
- }
- }
+ public static final class RecordAccessorTypeInferer implements IFunctionTypeInferer {
- public static final class GetRecordFieldValueTypeInferer implements IFunctionTypeInferer {
+ public static final IFunctionTypeInferer INSTANCE_STRICT = new RecordAccessorTypeInferer(true);
+
+ public static final IFunctionTypeInferer INSTANCE_LAX = new RecordAccessorTypeInferer(false);
+
+ private final boolean strict;
+
+ private RecordAccessorTypeInferer(boolean strict) {
+ this.strict = strict;
+ }
+
@Override
public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context,
CompilerProperties compilerProps) throws AlgebricksException {
AbstractFunctionCallExpression fce = (AbstractFunctionCallExpression) expr;
IAType t = (IAType) context.getType(fce.getArguments().get(0).getValue());
ATypeTag typeTag = t.getTypeTag();
- if (typeTag.equals(ATypeTag.OBJECT)) {
- fd.setImmutableStates(t);
- } else if (typeTag.equals(ATypeTag.ANY)) {
- fd.setImmutableStates(RecordUtil.FULLY_OPEN_RECORD_TYPE);
- } else {
- throw new NotImplementedException("get-record-field-value for data of type " + t);
+ switch (typeTag) {
+ case OBJECT: {
+ fd.setImmutableStates(t);
+ break;
+ }
+ case ANY: {
+ fd.setImmutableStates(RecordUtil.FULLY_OPEN_RECORD_TYPE);
+ break;
+ }
+ default: {
+ if (strict) {
+ throw new NotImplementedException(fd.getIdentifier().getName() + " for data of type " + t);
+ } else {
+ fd.setImmutableStates(new Object[] { null });
+ }
+ break;
+ }
}
}
}
@@ -243,23 +248,6 @@
}
}
- public static final class RecordPairsTypeInferer implements IFunctionTypeInferer {
- @Override
- public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context,
- CompilerProperties compilerProps) throws AlgebricksException {
- AbstractFunctionCallExpression fce = (AbstractFunctionCallExpression) expr;
- IAType t = (IAType) context.getType(fce.getArguments().get(0).getValue());
- ATypeTag typeTag = t.getTypeTag();
- if (typeTag.equals(ATypeTag.OBJECT)) {
- fd.setImmutableStates(t);
- } else if (typeTag.equals(ATypeTag.ANY)) {
- fd.setImmutableStates(RecordUtil.FULLY_OPEN_RECORD_TYPE);
- } else {
- throw new NotImplementedException("record-fields with data of type " + t);
- }
- }
- }
-
public static final class RecordRemoveFieldsTypeInferer implements IFunctionTypeInferer {
@Override
public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context,
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
index e33dfb6..e58a7db 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
@@ -213,7 +213,7 @@
try {
missingWriter.writeMissing(out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
missingTupleBuilder.addFieldEndOffset();
searchPred = createSearchPredicate();
@@ -266,7 +266,7 @@
try {
searchCallback.release();
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/unnestingfunctions/std/SubsetCollectionDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/unnestingfunctions/std/SubsetCollectionDescriptor.java
index 47fbc4f..cd06490 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/unnestingfunctions/std/SubsetCollectionDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/unnestingfunctions/std/SubsetCollectionDescriptor.java
@@ -114,7 +114,7 @@
posCrt = posStart;
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/LockThenSearchOperationCallbackFactory.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/LockThenSearchOperationCallbackFactory.java
index 1346b76..b8a75c8 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/LockThenSearchOperationCallbackFactory.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/LockThenSearchOperationCallbackFactory.java
@@ -52,7 +52,7 @@
return new LockThenSearchOperationCallback(new DatasetId(datasetId), resourceId, primaryKeyFields,
txnSubsystem, txnCtx, operatorNodePushable);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexInstantSearchOperationCallback.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexInstantSearchOperationCallback.java
index ec776a5..aff53a9 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexInstantSearchOperationCallback.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexInstantSearchOperationCallback.java
@@ -46,7 +46,7 @@
try {
return lockManager.instantTryLock(datasetId, pkHash, LockMode.S, txnCtx);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexInstantSearchOperationCallbackFactory.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexInstantSearchOperationCallbackFactory.java
index d4242bf..a85a339 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexInstantSearchOperationCallbackFactory.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexInstantSearchOperationCallbackFactory.java
@@ -54,7 +54,7 @@
return new PrimaryIndexInstantSearchOperationCallback(new DatasetId(datasetId), resourceId,
primaryKeyFields, txnSubsystem.getLockManager(), txnCtx);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexSearchOperationCallback.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexSearchOperationCallback.java
index 961f799..e726518 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexSearchOperationCallback.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexSearchOperationCallback.java
@@ -49,7 +49,7 @@
try {
return lockManager.tryLock(datasetId, -1, LockMode.S, txnCtx);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -58,7 +58,7 @@
try {
lockManager.lock(datasetId, -1, LockMode.S, txnCtx);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexSearchOperationCallbackFactory.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexSearchOperationCallbackFactory.java
index 72e48bf..ffece42 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexSearchOperationCallbackFactory.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexSearchOperationCallbackFactory.java
@@ -54,7 +54,7 @@
return new PrimaryIndexSearchOperationCallback(new DatasetId(datasetId), resourceId, primaryKeyFields,
txnSubsystem.getLockManager(), txnCtx);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexInstanctSearchOperationCallbackFactory.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexInstanctSearchOperationCallbackFactory.java
index ec6fdbe..c2e6b16 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexInstanctSearchOperationCallbackFactory.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexInstanctSearchOperationCallbackFactory.java
@@ -62,7 +62,7 @@
return new SecondaryIndexInstantSearchOperationCallback(new DatasetId(datasetId), resourceId,
primaryKeyFields, txnSubsystem.getLockManager(), txnCtx);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexInstantSearchOperationCallback.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexInstantSearchOperationCallback.java
index 2f2a1c5..211f21b 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexInstantSearchOperationCallback.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexInstantSearchOperationCallback.java
@@ -50,7 +50,7 @@
try {
return lockManager.instantTryLock(datasetId, pkHash, LockMode.S, txnCtx);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexModificationOperationCallback.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexModificationOperationCallback.java
index 7aed1fd..57ebc01 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexModificationOperationCallback.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/SecondaryIndexModificationOperationCallback.java
@@ -52,7 +52,7 @@
int pkHash = computePrimaryKeyHashValue(after, primaryKeyFields);
this.log(pkHash, after, before);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/UpsertOperationCallbackFactory.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/UpsertOperationCallbackFactory.java
index 8f7d445..5ae08fb 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/UpsertOperationCallbackFactory.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/UpsertOperationCallbackFactory.java
@@ -71,7 +71,7 @@
txnCtx.register(resource.getId(), aResource.getPartition(), index, modCallback, true);
return modCallback;
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/runtime/CommitRuntime.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/runtime/CommitRuntime.java
index d298bef..74ba139 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/runtime/CommitRuntime.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/runtime/CommitRuntime.java
@@ -91,7 +91,7 @@
initAccessAppend(ctx);
writer.open();
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -108,7 +108,7 @@
appendTupleToFrame(t);
}
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
IFrame message = TaskUtil.get(HyracksConstants.KEY_MESSAGE, ctx);
@@ -118,7 +118,7 @@
formMarkerLogRecords(message.getBuffer());
logMgr.log(logRecord);
} catch (ACIDException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
message.reset();
message.getBuffer().put(MessagingFrameTupleAppender.NULL_FEED_MESSAGE);
diff --git a/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java b/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
index d1feb08..adb6c79 100644
--- a/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
+++ b/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
@@ -97,6 +97,10 @@
return component;
}
+ public int getErrorCode() {
+ return errorCode;
+ }
+
public Object[] getParams() {
return params;
}
diff --git a/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/IntegerPrinterFactory.java b/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/IntegerPrinterFactory.java
index 9c49516..4e89dac 100644
--- a/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/IntegerPrinterFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/IntegerPrinterFactory.java
@@ -21,7 +21,6 @@
import java.io.IOException;
import java.io.PrintStream;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.data.IPrinter;
import org.apache.hyracks.algebricks.data.IPrinterFactory;
import org.apache.hyracks.algebricks.data.utils.WriteValueTools;
@@ -46,7 +45,7 @@
try {
WriteValueTools.writeInt(d, ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/UTF8StringPrinterFactory.java b/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/UTF8StringPrinterFactory.java
index 78f10d1..6af1132 100644
--- a/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/UTF8StringPrinterFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/UTF8StringPrinterFactory.java
@@ -44,7 +44,7 @@
try {
UTF8StringUtil.printUTF8StringWithQuotes(b, s, l, ps);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountAggregateFunctionFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountAggregateFunctionFactory.java
index f2c8948..76b6dcb 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountAggregateFunctionFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountAggregateFunctionFactory.java
@@ -56,7 +56,7 @@
abvs.getDataOutput().writeInt(cnt);
result.set(abvs);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountRunningAggregateFunctionFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountRunningAggregateFunctionFactory.java
index 64164f4..d9e25c4 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountRunningAggregateFunctionFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountRunningAggregateFunctionFactory.java
@@ -48,7 +48,7 @@
abvs.getDataOutput().writeInt(cnt);
result.set(abvs);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntimeFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntimeFactory.java
index 536a769..d41b464 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntimeFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntimeFactory.java
@@ -73,7 +73,7 @@
IAWriter w = writerFactory.createWriter(fields, filePrintStream, printerFactories, inputRecordDesc);
return new IPushRuntime[] { new SinkWriterRuntime(w, filePrintStream, inputRecordDesc, true) };
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SplitOperatorDescriptor.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SplitOperatorDescriptor.java
index 4f90985..e30c9cf 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SplitOperatorDescriptor.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SplitOperatorDescriptor.java
@@ -208,7 +208,7 @@
writers[i].fail();
} catch (Throwable th) {
if (hde == null) {
- hde = new HyracksDataException(th);
+ hde = HyracksDataException.create(th);
} else {
hde.addSuppressed(th);
}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StringStreamingRuntimeFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StringStreamingRuntimeFactory.java
index 82f403e..53974b2 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StringStreamingRuntimeFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StringStreamingRuntimeFactory.java
@@ -142,7 +142,7 @@
dumpStderr = new Thread(disps);
dumpStderr.start();
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
index 2410d67..914f4a0 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
@@ -110,7 +110,7 @@
unnest.init(tRef);
unnesting(t);
} catch (IOException ae) {
- throw new HyracksDataException(ae);
+ throw HyracksDataException.create(ae);
}
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/SerializedDataWriterFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/SerializedDataWriterFactory.java
index 585506f..bc7634d 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/SerializedDataWriterFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/SerializedDataWriterFactory.java
@@ -49,7 +49,7 @@
baos.writeTo(ps);
oos.close();
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntArrayUnnester.java b/hyracks-fullstack/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntArrayUnnester.java
index a789ad0..d334501 100644
--- a/hyracks-fullstack/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntArrayUnnester.java
+++ b/hyracks-fullstack/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntArrayUnnester.java
@@ -66,7 +66,7 @@
}
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerAddEvalFactory.java b/hyracks-fullstack/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerAddEvalFactory.java
index ea332df..a648be6 100644
--- a/hyracks-fullstack/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerAddEvalFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerAddEvalFactory.java
@@ -20,7 +20,6 @@
import java.io.IOException;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -63,7 +62,7 @@
argOut.getDataOutput().writeInt(v1 + v2);
result.set(argOut);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
index 80b61f4..f676d27 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
@@ -157,7 +157,7 @@
try {
return hci.getNodeControllersInfo();
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -166,7 +166,7 @@
try {
return hci.getClusterTopology();
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksJobletContext.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksJobletContext.java
index 1100335..7a59926 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksJobletContext.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksJobletContext.java
@@ -31,6 +31,8 @@
JobId getJobId();
+ long getJobStartTime();
+
ICounterContext getCounterContext();
Object getGlobalJobData();
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksDataException.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksDataException.java
index 6560d1b..b9f84e8 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksDataException.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksDataException.java
@@ -78,11 +78,7 @@
super(message);
}
- /**
- * @deprecated Error code is needed.
- */
- @Deprecated
- public HyracksDataException(Throwable cause) {
+ protected HyracksDataException(Throwable cause) {
super(cause);
}
@@ -90,22 +86,6 @@
* @deprecated Error code is needed.
*/
@Deprecated
- public HyracksDataException(Throwable cause, String nodeId) {
- super(cause, nodeId);
- }
-
- /**
- * @deprecated Error code is needed.
- */
- @Deprecated
- public HyracksDataException(String message, Throwable cause, String nodeId) {
- super(message, cause, nodeId);
- }
-
- /**
- * @deprecated Error code is needed.
- */
- @Deprecated
public HyracksDataException(String message, Throwable cause) {
super(message, cause);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java
index 3aa95b3..7aa84e2 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java
@@ -69,7 +69,7 @@
* @deprecated Error code is needed.
*/
@Deprecated
- public HyracksException(Throwable cause) {
+ protected HyracksException(Throwable cause) {
this(ErrorMessageUtil.NONE, UNKNOWN, String.valueOf(cause), cause, null);
}
@@ -77,23 +77,7 @@
* @deprecated Error code is needed.
*/
@Deprecated
- public HyracksException(Throwable cause, String nodeId) {
- this(ErrorMessageUtil.NONE, UNKNOWN, String.valueOf(cause), cause, nodeId);
- }
-
- /**
- * @deprecated Error code is needed.
- */
- @Deprecated
- public HyracksException(String message, Throwable cause, String nodeId) {
- this(ErrorMessageUtil.NONE, UNKNOWN, message, cause, nodeId);
- }
-
- /**
- * @deprecated Error code is needed.
- */
- @Deprecated
- public HyracksException(String message, Throwable cause) {
+ protected HyracksException(String message, Throwable cause) {
this(ErrorMessageUtil.NONE, UNKNOWN, message, cause, (String) null);
}
@@ -136,9 +120,7 @@
@Override
public String getMessage() {
if (msgCache == null) {
- synchronized (this) {
- msgCache = ErrorMessageUtil.formatMessage(component, errorCode, super.getMessage(), params);
- }
+ msgCache = ErrorMessageUtil.formatMessage(component, errorCode, super.getMessage(), params);
}
return msgCache;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobSerializerDeserializer.java
index 930d913..9b1270e 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobSerializerDeserializer.java
@@ -33,7 +33,7 @@
try {
return JavaSerializationUtils.deserialize(jsBytes);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -42,7 +42,7 @@
try {
return JavaSerializationUtils.serialize(obj);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -56,7 +56,7 @@
try {
return this.getClass().getClassLoader().loadClass(className);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExceptionUtils.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExceptionUtils.java
index 444b08f..9302f46 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExceptionUtils.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExceptionUtils.java
@@ -107,4 +107,16 @@
}
return first;
}
+
+ /**
+ * Returns a throwable containing {@code thread} stacktrace
+ *
+ * @param thread
+ * @return The throwable with {@code thread} stacktrace
+ */
+ public static Throwable fromThreadStack(Thread thread) {
+ final Throwable stackThrowable = new Throwable(thread.getName() + " Stack trace");
+ stackThrowable.setStackTrace(thread.getStackTrace());
+ return stackThrowable;
+ }
}
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/test/java/org/apache/hyracks/api/test/TestControlledFrameWriter.java b/hyracks-fullstack/hyracks/hyracks-api/src/test/java/org/apache/hyracks/api/test/TestControlledFrameWriter.java
index b98bcf7..1ae1e0b 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/test/java/org/apache/hyracks/api/test/TestControlledFrameWriter.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/test/java/org/apache/hyracks/api/test/TestControlledFrameWriter.java
@@ -76,7 +76,7 @@
kicks--;
}
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
currentMultiplier = 0;
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/test/java/org/apache/hyracks/api/test/TestFrameWriter.java b/hyracks-fullstack/hyracks/hyracks-api/src/test/java/org/apache/hyracks/api/test/TestFrameWriter.java
index 065e64d..7e30ffa 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/test/java/org/apache/hyracks/api/test/TestFrameWriter.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/test/java/org/apache/hyracks/api/test/TestFrameWriter.java
@@ -183,7 +183,7 @@
wait(duration);
}
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/dataset/HyracksDataset.java b/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/dataset/HyracksDataset.java
index c27110f..7f549ca 100644
--- a/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/dataset/HyracksDataset.java
+++ b/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/dataset/HyracksDataset.java
@@ -56,7 +56,7 @@
reader = new HyracksDatasetReader(datasetDirectoryServiceConnection, netManager, datasetClientCtx, jobId,
resultSetId);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
return reader;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/DatasetNetworkInputChannel.java b/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/DatasetNetworkInputChannel.java
index c334389..44c3d36 100644
--- a/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/DatasetNetworkInputChannel.java
+++ b/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/DatasetNetworkInputChannel.java
@@ -102,7 +102,7 @@
try {
ccb = netManager.connect(remoteAddress);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
ccb.getReadInterface().setFullBufferAcceptor(new ReadFullBufferAcceptor());
ccb.getWriteInterface().setEmptyBufferAcceptor(new WriteEmptyBufferAcceptor());
diff --git a/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkInputChannel.java b/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkInputChannel.java
index 0a9342a..a831492 100644
--- a/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkInputChannel.java
+++ b/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkInputChannel.java
@@ -95,7 +95,7 @@
try {
ccb = netManager.connect(remoteAddress);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
ccb.getReadInterface().setFullBufferAcceptor(new ReadFullBufferAcceptor());
ccb.getWriteInterface().setEmptyBufferAcceptor(new WriteEmptyBufferAcceptor());
diff --git a/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java b/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
index 56c4576..126d9a4 100644
--- a/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
+++ b/hyracks-fullstack/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
@@ -76,7 +76,7 @@
try {
wait();
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
index d068300..6faa8dd 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
@@ -438,7 +438,7 @@
try {
workQueue.scheduleAndSync(ginmw);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/executor/JobExecutor.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/executor/JobExecutor.java
index ac06344..06af2d8 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/executor/JobExecutor.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/executor/JobExecutor.java
@@ -518,11 +518,12 @@
byte[] jagBytes = changed ? acgBytes : null;
node.getNodeController().startTasks(deploymentId, jobId, jagBytes, taskDescriptors,
connectorPolicies, jobRun.getFlags(),
- ccs.createOrGetJobParameterByteStore(jobId).getParameterMap(), deployedJobSpecId);
+ ccs.createOrGetJobParameterByteStore(jobId).getParameterMap(), deployedJobSpecId,
+ jobRun.getStartTime());
}
}
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/JobManager.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/JobManager.java
index b728e73..9fd1a02 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/JobManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/JobManager.java
@@ -232,7 +232,7 @@
} catch (Exception e) {
LOGGER.log(Level.ERROR, e.getMessage(), e);
if (caughtException == null) {
- caughtException = new HyracksException(e);
+ caughtException = HyracksException.create(e);
} else {
caughtException.addSuppressed(e);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/INodeController.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/INodeController.java
index 9ec55f4..92764a7 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/INodeController.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/INodeController.java
@@ -38,7 +38,7 @@
public interface INodeController {
void startTasks(DeploymentId deploymentId, JobId jobId, byte[] planBytes,
List<TaskAttemptDescriptor> taskDescriptors, Map<ConnectorDescriptorId, IConnectorPolicy> connectorPolicies,
- Set<JobFlag> flags, Map<byte[], byte[]> jobParameters, DeployedJobSpecId deployedJobSpecId)
+ Set<JobFlag> flags, Map<byte[], byte[]> jobParameters, DeployedJobSpecId deployedJobSpecId, long startTime)
throws Exception;
void abortTasks(JobId jobId, List<TaskAttemptId> tasks) throws Exception;
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
index bcd90bd..31e6e39 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
@@ -47,7 +47,7 @@
}
return JavaSerializationUtils.deserialize(jsBytes, classLoader);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -59,7 +59,7 @@
}
return JavaSerializationUtils.serialize(jobSpec, classLoader);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -83,7 +83,7 @@
}
}
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -92,7 +92,7 @@
try {
return classLoader.loadClass(className);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
index 4d8c137..a079d97 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
@@ -72,7 +72,7 @@
FileUtils.forceDelete(dFile);
}
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -123,7 +123,7 @@
deploymentId == null ? null : jobSerDeContainer.getJobSerializerDeserializer(deploymentId);
return jobSerDe == null ? JavaSerializationUtils.deserialize(bytes) : jobSerDe.deserialize(bytes);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -144,7 +144,7 @@
deploymentId == null ? null : jobSerDeContainer.getJobSerializerDeserializer(deploymentId);
return jobSerDe == null ? JavaSerializationUtils.loadClass(className) : jobSerDe.loadClass(className);
} catch (ClassNotFoundException | IOException e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -216,6 +216,6 @@
trace = e;
}
}
- throw new HyracksException(trace);
+ throw HyracksException.create(trace);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/CCNCFunctions.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/CCNCFunctions.java
index c10c8981..8e02936 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/CCNCFunctions.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/CCNCFunctions.java
@@ -764,11 +764,12 @@
private final Set<JobFlag> flags;
private final Map<byte[], byte[]> jobParameters;
private final DeployedJobSpecId deployedJobSpecId;
+ private final long jobStartTime;
public StartTasksFunction(DeploymentId deploymentId, JobId jobId, byte[] planBytes,
List<TaskAttemptDescriptor> taskDescriptors,
Map<ConnectorDescriptorId, IConnectorPolicy> connectorPolicies, Set<JobFlag> flags,
- Map<byte[], byte[]> jobParameters, DeployedJobSpecId deployedJobSpecId) {
+ Map<byte[], byte[]> jobParameters, DeployedJobSpecId deployedJobSpecId, long jobStartTime) {
this.deploymentId = deploymentId;
this.jobId = jobId;
this.planBytes = planBytes;
@@ -777,6 +778,7 @@
this.flags = flags;
this.jobParameters = jobParameters;
this.deployedJobSpecId = deployedJobSpecId;
+ this.jobStartTime = jobStartTime;
}
@Override
@@ -816,6 +818,10 @@
return flags;
}
+ public long getJobStartTime() {
+ return jobStartTime;
+ }
+
public static Object deserialize(ByteBuffer buffer, int length) throws Exception {
ByteArrayInputStream bais = new ByteArrayInputStream(buffer.array(), buffer.position(), length);
DataInputStream dis = new DataInputStream(bais);
@@ -885,8 +891,10 @@
deployedJobSpecId = DeployedJobSpecId.create(dis);
}
+ long jobStartTime = dis.readLong();
+
return new StartTasksFunction(deploymentId, jobId, planBytes, taskDescriptors, connectorPolicies, flags,
- jobParameters, deployedJobSpecId);
+ jobParameters, deployedJobSpecId, jobStartTime);
}
public static void serialize(OutputStream out, Object object) throws Exception {
@@ -935,11 +943,13 @@
}
//write deployed job spec id
- dos.writeBoolean(fn.getDeployedJobSpecId() == null ? false : true);
+ dos.writeBoolean(fn.getDeployedJobSpecId() != null);
if (fn.getDeployedJobSpecId() != null) {
fn.getDeployedJobSpecId().writeFields(dos);
}
+ //write job start time
+ dos.writeLong(fn.jobStartTime);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/NodeControllerRemoteProxy.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/NodeControllerRemoteProxy.java
index 429cb26..b78e53f 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/NodeControllerRemoteProxy.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/NodeControllerRemoteProxy.java
@@ -63,10 +63,10 @@
@Override
public void startTasks(DeploymentId deploymentId, JobId jobId, byte[] planBytes,
List<TaskAttemptDescriptor> taskDescriptors, Map<ConnectorDescriptorId, IConnectorPolicy> connectorPolicies,
- Set<JobFlag> flags, Map<byte[], byte[]> jobParameters, DeployedJobSpecId deployedJobSpecId)
- throws Exception {
+ Set<JobFlag> flags, Map<byte[], byte[]> jobParameters, DeployedJobSpecId deployedJobSpecId,
+ long jobStartTime) throws Exception {
StartTasksFunction stf = new StartTasksFunction(deploymentId, jobId, planBytes, taskDescriptors,
- connectorPolicies, flags, jobParameters, deployedJobSpecId);
+ connectorPolicies, flags, jobParameters, deployedJobSpecId, jobStartTime);
ipcHandle.send(-1, stf, null);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/WorkQueue.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/WorkQueue.java
index 8ed7c9e..fb812e1 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/WorkQueue.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/WorkQueue.java
@@ -75,7 +75,7 @@
thread.join();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Joblet.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Joblet.java
index 8790434..55bc192 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Joblet.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Joblet.java
@@ -103,9 +103,11 @@
private final IJobletEventListenerFactory jobletEventListenerFactory;
+ private final long jobStartTime;
+
public Joblet(NodeControllerService nodeController, DeploymentId deploymentId, JobId jobId,
INCServiceContext serviceCtx, ActivityClusterGraph acg,
- IJobletEventListenerFactory jobletEventListenerFactory) {
+ IJobletEventListenerFactory jobletEventListenerFactory, long jobStartTime) {
this.nodeController = nodeController;
this.serviceCtx = serviceCtx;
this.deploymentId = deploymentId;
@@ -131,6 +133,7 @@
}
IGlobalJobDataFactory gjdf = acg.getGlobalJobDataFactory();
globalJobData = gjdf != null ? gjdf.createGlobalJobData(this) : null;
+ this.jobStartTime = jobStartTime;
}
@Override
@@ -151,6 +154,11 @@
return env;
}
+ @Override
+ public long getJobStartTime() {
+ return jobStartTime;
+ }
+
public void addTask(Task task) {
taskMap.put(task.getTaskAttemptId(), task);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java
index f55e250..735f7cf 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java
@@ -65,7 +65,7 @@
ncs.getWorkQueue()
.schedule(new StartTasksWork(ncs, stf.getDeploymentId(), stf.getJobId(), stf.getPlanBytes(),
stf.getTaskDescriptors(), stf.getConnectorPolicies(), stf.getFlags(),
- stf.getJobParameters(), stf.getDeployedJobSpecId()));
+ stf.getJobParameters(), stf.getDeployedJobSpecId(), stf.getJobStartTime()));
return;
case ABORT_TASKS:
CCNCFunctions.AbortTasksFunction atf = (CCNCFunctions.AbortTasksFunction) fn;
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
index 6d54843..a74a1ab 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
@@ -441,6 +441,8 @@
ccTimer.schedule(new ProfileDumpTask(ccs, ccId), 0, nodeParameters.getProfileDumpPeriod());
ccTimers.put(ccId, ccTimer);
}
+ ccc.notifyRegistrationCompleted();
+ LOGGER.info("Registering with Cluster Controller {} completed", ccc);
return ccId;
}
@@ -661,6 +663,10 @@
return messagingNetManager;
}
+ public void notifyTasksCompleted(CcId ccId) throws Exception {
+ application.onRegisterNode(ccId);
+ }
+
private static INCApplication getApplication(NCConfig config)
throws ClassNotFoundException, IllegalAccessException, InstantiationException {
if (config.getAppClass() != null) {
@@ -723,10 +729,4 @@
public INCApplication getApplication() {
return application;
}
-
- public void notifyRegistrationCompleted(CcId ccId) {
- CcConnection ccc = getCcConnection(ccId);
- ccc.notifyRegistrationCompleted();
- LOGGER.info("Registering with Cluster Controller {} complete", ccc);
- }
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionWriter.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionWriter.java
index d49a1a65..b593bb5 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionWriter.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionWriter.java
@@ -135,7 +135,7 @@
if (e instanceof HyracksDataException) {
throw (HyracksDataException) e;
} else {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultState.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultState.java
index 43e3409..b832b20 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultState.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultState.java
@@ -178,7 +178,7 @@
try {
wait();
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
if ((offset >= size && eos.get()) || failed.get()) {
@@ -201,7 +201,7 @@
try {
wait();
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -330,7 +330,7 @@
try {
wait();
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
if (failed.get()) {
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
index a527e92..7de716a 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
@@ -138,7 +138,7 @@
try {
fHandle.open(rwMode, syncMode);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
return fHandle;
}
@@ -197,7 +197,7 @@
} catch (HyracksDataException e) {
throw e;
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -229,7 +229,7 @@
} catch (HyracksDataException e) {
throw e;
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -350,7 +350,7 @@
try {
((FileHandle) fileHandle).getFileChannel().force(metadata);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionInputChannel.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionInputChannel.java
index d40de19..83677f8 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionInputChannel.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionInputChannel.java
@@ -112,7 +112,7 @@
try {
MaterializedPartitionInputChannel.this.wait();
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
ByteBuffer destFrame = emptyQueue.poll();
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/ReceiveSideMaterializingCollector.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/ReceiveSideMaterializingCollector.java
index b8bdda7..c902ad8 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/ReceiveSideMaterializingCollector.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/ReceiveSideMaterializingCollector.java
@@ -149,7 +149,7 @@
}
}
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/EnsureAllCcTasksCompleted.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/EnsureAllCcTasksCompleted.java
index 156a5c9..5964c04 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/EnsureAllCcTasksCompleted.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/EnsureAllCcTasksCompleted.java
@@ -18,84 +18,78 @@
*/
package org.apache.hyracks.control.nc.work;
-import java.util.Arrays;
import java.util.Deque;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.hyracks.api.control.CcId;
+import org.apache.hyracks.api.util.ExceptionUtils;
import org.apache.hyracks.control.nc.NodeControllerService;
import org.apache.hyracks.control.nc.Task;
import org.apache.hyracks.util.ExitUtil;
import org.apache.hyracks.util.Span;
-import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-@SuppressWarnings({ "squid:S1181", "squid:S1166" })
+@SuppressWarnings("squid:S1181")
public class EnsureAllCcTasksCompleted implements Runnable {
private static final Logger LOGGER = LogManager.getLogger();
private static final long TIMEOUT = TimeUnit.MINUTES.toMillis(2);
private final NodeControllerService ncs;
private final CcId ccId;
- private final Deque<Task> abortedTasks;
- private final Span span;
+ private final Deque<Task> runningTasks;
- public EnsureAllCcTasksCompleted(NodeControllerService ncs, CcId ccId, Deque<Task> abortedTasks) {
+ public EnsureAllCcTasksCompleted(NodeControllerService ncs, CcId ccId, Deque<Task> runningTasks) {
this.ncs = ncs;
this.ccId = ccId;
- this.abortedTasks = abortedTasks;
- span = Span.start(2, TimeUnit.MINUTES);
+ this.runningTasks = runningTasks;
}
@Override
public void run() {
try {
- LOGGER.log(Level.INFO, "Ensuring all tasks of {} have completed", ccId);
- while (!span.elapsed()) {
- removeAborted();
- if (abortedTasks.isEmpty()) {
+ LOGGER.info("Ensuring all tasks of CC {} have completed", ccId);
+ final Span maxWaitTime = Span.start(2, TimeUnit.MINUTES);
+ while (!maxWaitTime.elapsed()) {
+ removeCompleted();
+ if (runningTasks.isEmpty()) {
break;
}
- LOGGER.log(Level.INFO, "{} tasks are still running", abortedTasks.size());
- Thread.sleep(TimeUnit.SECONDS.toMillis(1)); // Check once a second
+ LOGGER.info("{} tasks are still running", runningTasks.size());
+ TimeUnit.SECONDS.sleep(1); // Check once a second
}
- if (abortedTasks.isEmpty()) {
- LOGGER.log(Level.INFO, "All tasks of {} have completed, Completing registration", ccId);
- // all tasks has completed
- ncs.getApplication().onRegisterNode(ccId);
+ if (runningTasks.isEmpty()) {
+ LOGGER.info("All tasks of CC {} have completed", ccId);
+ ncs.notifyTasksCompleted(ccId);
} else {
- LOGGER.log(Level.ERROR,
- "Failed to abort all previous tasks associated with CC {} after {}ms. Giving up", ccId,
- TIMEOUT);
- LOGGER.log(Level.ERROR, "{} tasks failed to complete within timeout", abortedTasks.size());
- abortedTasks.forEach(task -> {
- List<Thread> pendingThreads = task.getPendingThreads();
- LOGGER.log(Level.ERROR, "task {} was stuck. Stuck thread count = {}", task.getTaskAttemptId(),
- pendingThreads.size());
- pendingThreads.forEach(thread -> {
- LOGGER.log(Level.ERROR, "Stuck thread trace: {}", Arrays.toString(thread.getStackTrace()));
- });
- });
+ LOGGER.error("{} tasks associated with CC {} failed to complete after {}ms. Giving up",
+ runningTasks.size(), ccId, TIMEOUT);
+ logPendingTasks();
ExitUtil.halt(ExitUtil.NC_FAILED_TO_ABORT_ALL_PREVIOUS_TASKS);
}
} catch (Throwable th) {
- try {
- LOGGER.log(Level.ERROR, "Failed to abort all previous tasks associated with CC {}", ccId, th);
- } catch (Throwable ignore) {
- // Ignore logging errors
- }
+ LOGGER.error("Failed to abort all previous tasks associated with CC {}", ccId, th);
ExitUtil.halt(ExitUtil.NC_FAILED_TO_ABORT_ALL_PREVIOUS_TASKS);
}
}
- private void removeAborted() {
- int numTasks = abortedTasks.size();
+ private void removeCompleted() {
+ final int numTasks = runningTasks.size();
for (int i = 0; i < numTasks; i++) {
- Task task = abortedTasks.poll();
+ Task task = runningTasks.poll();
if (!task.isCompleted()) {
- abortedTasks.add(task);
+ runningTasks.add(task);
+ }
+ }
+ }
+
+ private void logPendingTasks() {
+ for (Task task : runningTasks) {
+ final List<Thread> pendingThreads = task.getPendingThreads();
+ LOGGER.error("task {} was stuck. Stuck thread count = {}", task.getTaskAttemptId(), pendingThreads.size());
+ for (Thread thread : pendingThreads) {
+ LOGGER.error("Stuck thread trace", ExceptionUtils.fromThreadStack(thread));
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
index 6a5785a..660621e 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
@@ -95,10 +95,12 @@
private final Map<byte[], byte[]> jobParameters;
+ private final long jobStartTime;
+
public StartTasksWork(NodeControllerService ncs, DeploymentId deploymentId, JobId jobId, byte[] acgBytes,
List<TaskAttemptDescriptor> taskDescriptors,
Map<ConnectorDescriptorId, IConnectorPolicy> connectorPoliciesMap, Set<JobFlag> flags,
- Map<byte[], byte[]> jobParameters, DeployedJobSpecId deployedJobSpecId) {
+ Map<byte[], byte[]> jobParameters, DeployedJobSpecId deployedJobSpecId, long jobStartTime) {
this.ncs = ncs;
this.deploymentId = deploymentId;
this.jobId = jobId;
@@ -108,6 +110,7 @@
this.connectorPoliciesMap = connectorPoliciesMap;
this.flags = flags;
this.jobParameters = jobParameters;
+ this.jobStartTime = jobStartTime;
}
@Override
@@ -212,7 +215,7 @@
}
listenerFactory.updateListenerJobParameters(ncs.createOrGetJobParameterByteStore(jobId));
}
- ji = new Joblet(ncs, deploymentId, jobId, appCtx, acg, listenerFactory);
+ ji = new Joblet(ncs, deploymentId, jobId, appCtx, acg, listenerFactory, jobStartTime);
jobletMap.put(jobId, ji);
}
return ji;
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
index ad3ede5..9487681 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
@@ -77,7 +77,7 @@
try {
out.write(byteArrayPtr.getByteArray(), byteArrayPtr.getStartOffset(), byteArrayPtr.getLength());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -89,7 +89,7 @@
out.write(metaBuffer, 0, metaLength);
out.write(instance, start, length);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactory.java
index 91fb2eb..69db7f3 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactory.java
@@ -47,7 +47,7 @@
try {
serializer.serialize(parser.getByteArray(), 0, parser.getLength(), out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactory.java
index 289dc6d..c15b2ff 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactory.java
@@ -45,7 +45,7 @@
parser.generateByteArrayFromHexString(input, start, length);
serializer.serialize(parser.getByteArray(), 0, parser.getLength(), out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/DoubleParserFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/DoubleParserFactory.java
index 4df70f4..8998798 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/DoubleParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/DoubleParserFactory.java
@@ -40,9 +40,9 @@
try {
out.writeDouble(Double.parseDouble(s));
} catch (NumberFormatException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/FloatParserFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/FloatParserFactory.java
index 08d5722..414946c 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/FloatParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/FloatParserFactory.java
@@ -40,9 +40,9 @@
try {
out.writeFloat(Float.parseFloat(s));
} catch (NumberFormatException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IntegerParserFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IntegerParserFactory.java
index cfbeb74..c6cffb4 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IntegerParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IntegerParserFactory.java
@@ -121,7 +121,7 @@
try {
out.writeInt(n * sign);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java
index 279cd69..fd47475 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java
@@ -122,7 +122,7 @@
try {
out.writeLong(n * sign);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/UTF8StringParserFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/UTF8StringParserFactory.java
index a71da4c..7848500 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/UTF8StringParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/UTF8StringParserFactory.java
@@ -42,7 +42,7 @@
try {
writer.writeUTF8(buffer, start, length, out);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractReplicateOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractReplicateOperatorDescriptor.java
index 16c0a29..ab553f6 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractReplicateOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractReplicateOperatorDescriptor.java
@@ -187,7 +187,7 @@
writers[i].fail();
} catch (Throwable th) {
if (hde == null) {
- hde = new HyracksDataException(th);
+ hde = HyracksDataException.create(th);
} else {
hde.addSuppressed(th);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicChannelReader.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicChannelReader.java
index 9676c9c..b6f7cad 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicChannelReader.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicChannelReader.java
@@ -77,7 +77,7 @@
try {
wait();
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
if (--availableFrameCounts[index] == 0) {
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicPartitionBatchManager.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicPartitionBatchManager.java
index 9b12e64..0637ae2 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicPartitionBatchManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicPartitionBatchManager.java
@@ -74,7 +74,7 @@
try {
wait();
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
this.batch = null;
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
index 63bb72b..eb4a7cf 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
@@ -54,7 +54,7 @@
appenders[i] = new FrameTupleAppender();
appenders[i].reset(new VSizeFrame(ctx), true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
tupleAccessor = new FrameTupleAccessor(recordDescriptor);
@@ -104,7 +104,7 @@
pWriters[i].fail();
} catch (Throwable th) {
if (failException == null) {
- failException = new HyracksDataException(th);
+ failException = HyracksDataException.create(th);
} else {
failException.addSuppressed(th);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNBroadcastConnectorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNBroadcastConnectorDescriptor.java
index 4246626..092b5f1 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNBroadcastConnectorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNBroadcastConnectorDescriptor.java
@@ -74,7 +74,7 @@
epWriters[i].fail();
} catch (Throwable th) {
if (failException == null) {
- failException = new HyracksDataException(th);
+ failException = HyracksDataException.create(th);
} else {
failException.addSuppressed(th);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractDeserializedFileScanOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractDeserializedFileScanOperatorDescriptor.java
index c1e7ec7..4c55094 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractDeserializedFileScanOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractDeserializedFileScanOperatorDescriptor.java
@@ -72,7 +72,7 @@
try {
reader = createRecordReader(split.getFile(null), desc);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
if (desc == null) {
desc = outRecDescs[0];
@@ -88,7 +88,7 @@
}
} catch (Exception e) {
writer.fail();
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
} finally {
reader.close();
writer.close();
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/DelimitedDataTupleParserFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/DelimitedDataTupleParserFactory.java
index 175bdae..9ddb4c2 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/DelimitedDataTupleParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/DelimitedDataTupleParserFactory.java
@@ -89,7 +89,7 @@
}
appender.write(writer, true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileRemoveOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileRemoveOperatorDescriptor.java
index a9f1ae5..57a5f69 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileRemoveOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileRemoveOperatorDescriptor.java
@@ -80,7 +80,7 @@
try {
FileUtils.deleteDirectory(f);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileScanOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileScanOperatorDescriptor.java
index 76e6c79..b357840 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileScanOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileScanOperatorDescriptor.java
@@ -66,12 +66,12 @@
in = new FileInputStream(f);
} catch (FileNotFoundException e) {
writer.fail();
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
tp.parse(in, writer);
} catch (Throwable th) {
writer.fail();
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
} finally {
writer.close();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FrameFileWriterOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FrameFileWriterOperatorDescriptor.java
index b94f305..8aff01b 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FrameFileWriterOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FrameFileWriterOperatorDescriptor.java
@@ -57,7 +57,7 @@
try {
out = new FileOutputStream(splits[partition].getFile(ioManager));
} catch (FileNotFoundException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/LineFileWriteOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/LineFileWriteOperatorDescriptor.java
index 5886eb4..2e06ecd 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/LineFileWriteOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/LineFileWriteOperatorDescriptor.java
@@ -41,7 +41,7 @@
try {
return new FileOutputStream((File) args[0]);
} catch (FileNotFoundException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
index 76ebaa4..2382a63 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
@@ -94,7 +94,7 @@
bbis = new ByteBufferInputStream();
di = new DataInputStream(bbis);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -118,7 +118,7 @@
out.write("\n");
}
} catch (IOException ex) {
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordWriter.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordWriter.java
index b3c688a..05c9ce8 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordWriter.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordWriter.java
@@ -85,7 +85,7 @@
}
bufferedWriter.write("\n");
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
index d43d4fd..0c657f8 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
@@ -138,7 +138,7 @@
try {
fieldOutput.writeInt(stateCount);
} catch (IOException e) {
- throw new HyracksDataException(e.fillInStackTrace());
+ throw HyracksDataException.create(e.fillInStackTrace());
}
} else {
// Only object-state
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalHashGroupBy.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalHashGroupBy.java
index 8e7777f..d08b075 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalHashGroupBy.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalHashGroupBy.java
@@ -69,7 +69,7 @@
table.clear(partition);
} catch (Exception ex) {
writer.fail();
- throw new HyracksDataException(ex);
+ throw HyracksDataException.create(ex);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/intersect/IntersectOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/intersect/IntersectOperatorDescriptor.java
index ec652eb..67b0686 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/intersect/IntersectOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/intersect/IntersectOperatorDescriptor.java
@@ -273,7 +273,7 @@
try {
IntersectOperatorNodePushable.this.wait();
} catch (InterruptedException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorNodePushable.java
index 5df134f..9bd0c59 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorNodePushable.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorNodePushable.java
@@ -51,7 +51,7 @@
appender.write(writer, false);
} catch (Throwable th) {
writer.fail();
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
} finally {
writer.close();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/InMemorySortOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/InMemorySortOperatorDescriptor.java
index adc0d5c..7813bcf 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/InMemorySortOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/InMemorySortOperatorDescriptor.java
@@ -172,7 +172,7 @@
state.frameSorter.flush(writer);
} catch (Throwable th) {
writer.fail();
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
} finally {
writer.close();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/DataGenOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/DataGenOperatorDescriptor.java
index e4d9960..ff60342 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/DataGenOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/DataGenOperatorDescriptor.java
@@ -98,7 +98,7 @@
appender.write(writer, true);
} catch (Throwable th) {
writer.fail();
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
} finally {
writer.close();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/ExceptionOnCreatePushRuntimeOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/ExceptionOnCreatePushRuntimeOperatorDescriptor.java
index 10d6947..9aa37dc 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/ExceptionOnCreatePushRuntimeOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/ExceptionOnCreatePushRuntimeOperatorDescriptor.java
@@ -79,7 +79,7 @@
} catch (InterruptedException e) {
// can safely interrupt thread since this is a task thread
Thread.currentThread().interrupt();
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/NoopMissingWriterFactory.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/NoopMissingWriterFactory.java
index a71be20..20b3204 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/NoopMissingWriterFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/NoopMissingWriterFactory.java
@@ -41,7 +41,7 @@
try {
out.writeShort(0);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/text-example/texthelper/src/main/java/org/apache/hyracks/examples/text/WordTupleParserFactory.java b/hyracks-fullstack/hyracks/hyracks-examples/text-example/texthelper/src/main/java/org/apache/hyracks/examples/text/WordTupleParserFactory.java
index 4558cf9..2219a14 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/text-example/texthelper/src/main/java/org/apache/hyracks/examples/text/WordTupleParserFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/text-example/texthelper/src/main/java/org/apache/hyracks/examples/text/WordTupleParserFactory.java
@@ -61,7 +61,7 @@
}
appender.write(writer, true);
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
};
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-1.x/src/test/java/org/apache/hyracks/hdfs/MiniDFSClusterFactory.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-1.x/src/test/java/org/apache/hyracks/hdfs/MiniDFSClusterFactory.java
index 33a2e68..d17f1bf 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-1.x/src/test/java/org/apache/hyracks/hdfs/MiniDFSClusterFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-1.x/src/test/java/org/apache/hyracks/hdfs/MiniDFSClusterFactory.java
@@ -29,7 +29,7 @@
try {
return new MiniDFSCluster(conf, numberOfNC, true, null);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/src/test/java/org/apache/hyracks/hdfs/MiniDFSClusterFactory.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/src/test/java/org/apache/hyracks/hdfs/MiniDFSClusterFactory.java
index eee8960..2884e28 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/src/test/java/org/apache/hyracks/hdfs/MiniDFSClusterFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/src/test/java/org/apache/hyracks/hdfs/MiniDFSClusterFactory.java
@@ -32,7 +32,7 @@
MiniDFSCluster dfsCluster = builder.build();
return dfsCluster;
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
index 021efca..2aa45b7 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
@@ -78,7 +78,7 @@
this.splitsFactory = new InputSplitsFactory(splits);
this.confFactory = new ConfFactory(conf);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
this.scheduledLocations = scheduledLocations;
this.executed = new boolean[scheduledLocations.length];
@@ -142,7 +142,7 @@
}
} catch (Throwable th) {
writer.fail();
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
} finally {
writer.close();
Thread.currentThread().setContextClassLoader(ctxCL);
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
index dcf4508..0babc5f 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
@@ -98,7 +98,7 @@
dos = dfs.create(new Path(fileName), true);
tupleWriter.open(dos);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
index 5cc09b7..4402964 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
@@ -70,7 +70,7 @@
dos.close();
return bos.toByteArray();
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/TextTupleWriterFactory.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/TextTupleWriterFactory.java
index 54e9bfd..fd1438c 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/TextTupleWriterFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/TextTupleWriterFactory.java
@@ -49,7 +49,7 @@
output.write(data, start, len);
output.writeByte(newLine);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
index 25cc9b3..9633fb1 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
@@ -84,7 +84,7 @@
: new RackAwareNcCollectionBuilder(topology);
loadIPAddressToNCMap(ncNameToNcInfos);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -101,7 +101,7 @@
this.ncCollectionBuilder = ncCollectionBuilder;
loadIPAddressToNCMap(ncNameToNcInfos);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -210,7 +210,7 @@
scheduleNonLocalSlots(splits, workloads, locations, upperBoundSlots, scheduled);
return locations;
} catch (IOException e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
@@ -399,7 +399,7 @@
ncNameToIndex.put(NCs[i], i);
}
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
index 682b49a..34b4c3e 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
@@ -70,7 +70,7 @@
dos.close();
return bos.toByteArray();
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
index 0c635e0..5adec78 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
@@ -91,7 +91,7 @@
this.splitsFactory = new FileSplitsFactory(fileSplits);
this.confFactory = new ConfFactory(conf);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
this.scheduledLocations = scheduledLocations;
this.executed = new boolean[scheduledLocations.length];
@@ -156,7 +156,7 @@
parser.close(writer);
} catch (Throwable th) {
writer.fail();
- throw new HyracksDataException(th);
+ throw HyracksDataException.create(th);
} finally {
writer.close();
Thread.currentThread().setContextClassLoader(ctxCL);
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
index 1f163ba..c691896 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
@@ -97,7 +97,7 @@
dos = dfs.create(new Path(fileName), true);
tupleWriter.open(dos);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
index fb46842..f5b2384 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
@@ -98,7 +98,7 @@
inputSplits[i] = new WrappedFileSplit(splits.get(i).getLocations(), splits.get(i).getLength());
return scheduler.getLocationConstraints(inputSplits);
} catch (Exception e) {
- throw new HyracksException(e);
+ throw HyracksException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
index 35accc3..ebdc470 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
@@ -90,7 +90,7 @@
frameTuple = new FrameTupleReference();
}
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
@@ -147,7 +147,7 @@
} catch (HyracksDataException e) {
throw e;
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
// Pass a copy of the frame to next op.
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java
index eb493af..2c691f1 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java
@@ -194,7 +194,7 @@
frameTuple = new FrameTupleReference();
}
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
index cc3bfe7..e35fba1 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
@@ -90,7 +90,7 @@
appender.write(writer, false);
} catch (Exception e) {
writer.fail();
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
} finally {
try {
writer.close();
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexInsertUpdateDeleteOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexInsertUpdateDeleteOperatorNodePushable.java
index e77b089..02744ee 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexInsertUpdateDeleteOperatorNodePushable.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexInsertUpdateDeleteOperatorNodePushable.java
@@ -109,7 +109,7 @@
} catch (HyracksDataException e) {
throw e;
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
if (nextFlushTupleIndex == 0) {
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ExternalIndexHarness.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ExternalIndexHarness.java
index aa54127..404c8e9 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ExternalIndexHarness.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ExternalIndexHarness.java
@@ -200,7 +200,7 @@
try {
exitComponents(ctx, LSMOperationType.SEARCH, null, false);
} catch (Exception e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
index cd0ba36..06ea4eb 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
@@ -167,7 +167,7 @@
queryTokenAppender.append(queryTokenBuilder.getFieldEndOffsets(), queryTokenBuilder.getByteArray(), 0,
queryTokenBuilder.getSize());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexTokenizingTupleIterator.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexTokenizingTupleIterator.java
index 78c8e4d..4cf0c55 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexTokenizingTupleIterator.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexTokenizingTupleIterator.java
@@ -65,7 +65,7 @@
try {
token.serializeToken(tupleBuilder.getFieldData());
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
tupleBuilder.addFieldEndOffset();
// Add inverted-list element fields.
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/PartitionedInvertedIndexTokenizingTupleIterator.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/PartitionedInvertedIndexTokenizingTupleIterator.java
index 8b1e11b..c44dffb 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/PartitionedInvertedIndexTokenizingTupleIterator.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/PartitionedInvertedIndexTokenizingTupleIterator.java
@@ -59,7 +59,7 @@
tupleBuilder.getDataOutput().writeShort(numTokens);
tupleBuilder.addFieldEndOffset();
} catch (IOException e) {
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
// Add inverted-list element fields.
for (int i = 0; i < invListFieldCount; i++) {
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
index f6f0a3d..0e455c5 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
@@ -746,7 +746,7 @@
} catch (Exception e) {
page.releaseReadLatch();
bufferCache.unpin(page);
- throw new HyracksDataException(e);
+ throw HyracksDataException.create(e);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestJobletContext.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestJobletContext.java
index 1d38d3d..b022b15 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestJobletContext.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestJobletContext.java
@@ -39,6 +39,7 @@
private final FrameManager frameManger;
private JobId jobId;
private WorkspaceFileFactory fileFactory;
+ private final long jobStartTime;
public TestJobletContext(int frameSize, INCServiceContext serviceContext, JobId jobId) throws HyracksException {
this.frameSize = frameSize;
@@ -46,6 +47,7 @@
this.jobId = jobId;
fileFactory = new WorkspaceFileFactory(this, (IIOManager) getIOManager());
this.frameManger = new FrameManager(frameSize);
+ this.jobStartTime = System.currentTimeMillis();
}
ByteBuffer allocateFrame() throws HyracksDataException {
@@ -113,6 +115,11 @@
}
@Override
+ public long getJobStartTime() {
+ return jobStartTime;
+ }
+
+ @Override
public Object getGlobalJobData() {
return null;
}