You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2018/03/27 23:48:35 UTC
[12/12] asterixdb git commit: Merge commit
'6453ecf2f0dff1ec1306c8c5c1e4f81a27755431' from release-0.9.4-pre-rc
Merge commit '6453ecf2f0dff1ec1306c8c5c1e4f81a27755431' from release-0.9.4-pre-rc
Change-Id: I6baed7a75ec38755d6e040f2b7f1ede54c191f0f
Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/abcdb802
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/abcdb802
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/abcdb802
Branch: refs/heads/master
Commit: abcdb802150072c20ddb758fed0cac48b529e9a5
Parents: 8cc8825 6453ecf
Author: Michael Blow <mb...@apache.org>
Authored: Tue Mar 27 17:33:13 2018 -0400
Committer: Michael Blow <mb...@apache.org>
Committed: Tue Mar 27 18:09:01 2018 -0400
----------------------------------------------------------------------
.../optimizer/rules/am/BTreeAccessMethod.java | 17 +-
.../api/http/server/NCQueryServiceServlet.java | 8 +-
.../api/http/server/QueryServiceServlet.java | 48 ++--
.../message/ExecuteStatementRequestMessage.java | 14 +-
.../apache/asterix/app/nc/RecoveryManager.java | 15 +-
.../apache/asterix/app/nc/ReplicaManager.java | 6 +
.../asterix/app/result/ResultPrinter.java | 4 +-
.../asterix/app/translator/QueryTranslator.java | 2 +-
.../hyracks/bootstrap/NCApplication.java | 1 -
.../asterix/runtime/ParseDurationTest.java | 4 +-
.../composite-prefix.1.ddl.sqlpp | 35 +++
.../composite-prefix.2.update.sqlpp | 28 ++
.../composite-prefix.3.query.sqlpp | 27 ++
.../query-ASTERIXDB-2334.1.ddl.sqlpp | 39 +++
.../query-ASTERIXDB-2334.2.update.sqlpp | 28 ++
.../query-ASTERIXDB-920.3.query.sqlpp | 26 ++
.../queries_sqlpp/objects/ObjectsQueries.xml | 10 +
.../object_length/object_length.1.ddl.sqlpp | 49 ++++
.../object_length/object_length.2.update.sqlpp | 29 ++
.../object_length/object_length.3.query.sqlpp | 56 ++++
.../object_names/object_names.1.ddl.sqlpp | 49 ++++
.../object_names/object_names.2.update.sqlpp | 29 ++
.../object_names/object_names.3.query.sqlpp | 59 ++++
.../composite-low-high/composite-low-high.1.adm | 2 +-
.../composite-prefix/composite-prefix.1.adm | 2 +
.../query-ASTERIXDB-2334.1.adm | 3 +
.../objects/object_length/object_length.3.adm | 1 +
.../objects/object_names/object_names.3.adm | 1 +
.../src/test/resources/runtimets/testsuite.xml | 4 +-
.../resources/runtimets/testsuite_sqlpp.xml | 10 +
.../org/apache/asterix/common/api/Duration.java | 39 ++-
.../common/config/AsterixProperties.java | 2 +-
.../context/PrimaryIndexOperationTracker.java | 2 +-
.../LSMInsertDeleteOperatorNodePushable.java | 2 +-
.../asterix/common/exceptions/ErrorCode.java | 2 +
.../asterix/common/storage/IReplicaManager.java | 8 +
.../main/resources/asx_errormsg/en.properties | 2 +
.../src/main/markdown/builtins/8_record.md | 54 ++++
.../src/main/markdown/sqlpp/3_query.md | 5 +-
.../dataflow/FeedStreamDataFlowController.java | 2 +-
.../dataflow/RecordDataFlowController.java | 2 +-
.../dataflow/StreamDataFlowController.java | 2 +-
.../external/dataset/adapter/LookupAdapter.java | 4 +-
.../external/feed/dataflow/FrameSpiller.java | 6 +-
.../external/indexing/FileOffsetIndexer.java | 4 +-
.../external/indexing/IndexingScheduler.java | 6 +-
.../indexing/RecordColumnarIndexer.java | 4 +-
.../external/input/HDFSDataSourceFactory.java | 2 +-
.../record/reader/hdfs/HDFSRecordReader.java | 2 +-
.../reader/rss/RSSRecordReaderFactory.java | 2 +-
.../stream/StreamRecordReaderFactory.java | 4 +-
.../reader/twitter/TwitterPullRecordReader.java | 2 +-
.../twitter/TwitterRecordReaderFactory.java | 2 +-
.../external/input/stream/HDFSInputStream.java | 2 +-
.../library/ExternalFunctionProvider.java | 6 +-
.../external/library/java/base/JObject.java | 2 +-
.../external/library/java/base/JRecord.java | 2 +-
...xternalDatasetIndexesOperatorDescriptor.java | 2 +-
...ExternalBTreeSearchOperatorNodePushable.java | 2 +-
...rnalIndexBulkModifyOperatorNodePushable.java | 2 +-
.../ExternalLookupOperatorDescriptor.java | 6 +-
...ExternalRTreeSearchOperatorNodePushable.java | 4 +-
.../ExternalScanOperatorDescriptor.java | 2 +-
.../FeedCollectOperatorNodePushable.java | 2 +-
.../operators/FeedMetaComputeNodePushable.java | 4 +-
.../operators/FeedMetaStoreNodePushable.java | 2 +-
.../external/parser/DelimitedDataParser.java | 8 +-
.../external/parser/HiveRecordParser.java | 6 +-
.../parser/RecordWithMetadataParser.java | 4 +-
.../external/parser/RecordWithPKDataParser.java | 2 +-
.../asterix/external/parser/TweetParser.java | 2 +-
.../provider/DataflowControllerProvider.java | 2 +-
.../asterix/external/util/FeedLogManager.java | 2 +-
.../external/util/FileSystemWatcher.java | 2 +-
.../asterix/external/classad/ClassAd.java | 2 +-
.../asterix/external/library/ClassAdParser.java | 4 +-
.../common/EditDistanceCheckEvaluator.java | 2 +-
.../common/EditDistanceEvaluator.java | 2 +-
.../evaluators/common/GramTokensEvaluator.java | 2 +-
.../common/SimilarityJaccardCheckEvaluator.java | 2 +-
.../common/SimilarityJaccardEvaluator.java | 2 +-
.../SimilarityJaccardPrefixEvaluator.java | 2 +-
.../evaluators/common/WordTokensEvaluator.java | 2 +-
.../EditDistanceListIsFilterableDescriptor.java | 2 +-
...EditDistanceStringIsFilterableEvaluator.java | 2 +-
.../functions/PrefixLenDescriptor.java | 2 +-
.../functions/PrefixLenJaccardDescriptor.java | 2 +-
.../lang/common/util/CommonFunctionMapUtil.java | 96 +++----
.../DatatypeTupleTranslator.java | 2 +-
.../asterix/builders/AbstractListBuilder.java | 2 +-
.../apache/asterix/builders/RecordBuilder.java | 2 +-
.../data/nontagged/MissingWriterFactory.java | 2 +-
.../hash/ListItemBinaryHashFunctionFactory.java | 2 +-
.../data/nontagged/printers/PrintTools.java | 12 +-
.../printers/adm/ABinaryHexPrinterFactory.java | 2 +-
.../printers/adm/AInt16PrinterFactory.java | 2 +-
.../printers/adm/AInt32PrinterFactory.java | 2 +-
.../printers/adm/AInt64PrinterFactory.java | 2 +-
.../printers/adm/AInt8PrinterFactory.java | 2 +-
.../printers/adm/AStringPrinterFactory.java | 2 +-
.../printers/csv/ABinaryHexPrinterFactory.java | 2 +-
.../printers/csv/AStringPrinterFactory.java | 2 +-
.../json/clean/ABinaryHexPrinterFactory.java | 2 +-
.../json/clean/AStringPrinterFactory.java | 2 +-
.../clean/AUnorderedlistPrinterFactory.java | 2 +-
.../json/lossless/ABinaryHexPrinterFactory.java | 2 +-
.../json/lossless/AStringPrinterFactory.java | 2 +-
.../lossless/AUnorderedlistPrinterFactory.java | 2 +-
.../serde/AGeometrySerializerDeserializer.java | 19 +-
.../SerializerDeserializerProvider.java | 2 +-
.../java/org/apache/asterix/om/base/AUUID.java | 4 +-
.../om/base/temporal/ADateParserFactory.java | 2 +-
.../base/temporal/ADateTimeParserFactory.java | 2 +-
.../base/temporal/ADurationParserFactory.java | 2 +-
.../om/base/temporal/ATimeParserFactory.java | 2 +-
.../om/base/temporal/DateTimeFormatUtils.java | 268 ++++++++++++-------
.../temporal/DurationArithmeticOperations.java | 10 +-
.../base/temporal/GregorianCalendarSystem.java | 148 ++++++++--
.../asterix/om/functions/BuiltinFunctions.java | 6 +
.../typecomputer/impl/AInt64TypeComputer.java | 14 +-
.../impl/OrderedListOfAStringTypeComputer.java | 13 +-
.../replication/api/PartitionReplica.java | 19 +-
.../sync/ReplicaFilesSynchronizer.java | 12 +
.../replication/sync/ReplicaSynchronizer.java | 13 +-
.../ListifyAggregateFunctionEvalFactory.java | 4 +-
...bstractSerializableAvgAggregateFunction.java | 6 +-
...tractSerializableCountAggregateFunction.java | 4 +-
...bstractSerializableSumAggregateFunction.java | 4 +-
.../std/AbstractAvgAggregateFunction.java | 4 +-
.../std/AbstractCountAggregateFunction.java | 2 +-
.../std/AbstractMinMaxAggregateFunction.java | 6 +-
.../std/AbstractSumAggregateFunction.java | 2 +-
.../accessors/CircleCenterAccessor.java | 2 +-
.../accessors/CircleRadiusAccessor.java | 2 +-
.../accessors/LineRectanglePolygonAccessor.java | 2 +-
.../accessors/PointXCoordinateAccessor.java | 2 +-
.../accessors/PointYCoordinateAccessor.java | 2 +-
.../accessors/TemporalDayAccessor.java | 2 +-
.../accessors/TemporalHourAccessor.java | 2 +-
.../accessors/TemporalIntervalEndAccessor.java | 2 +-
.../TemporalIntervalEndDateAccessor.java | 2 +-
.../TemporalIntervalEndDatetimeAccessor.java | 2 +-
.../TemporalIntervalEndTimeAccessor.java | 2 +-
.../TemporalIntervalStartAccessor.java | 2 +-
.../TemporalIntervalStartDateAccessor.java | 2 +-
.../TemporalIntervalStartDatetimeAccessor.java | 2 +-
.../TemporalIntervalStartTimeAccessor.java | 2 +-
.../accessors/TemporalMillisecondAccessor.java | 2 +-
.../accessors/TemporalMinuteAccessor.java | 2 +-
.../accessors/TemporalMonthAccessor.java | 2 +-
.../accessors/TemporalSecondAccessor.java | 2 +-
.../accessors/TemporalYearAccessor.java | 2 +-
.../evaluators/common/CreateMBREvalFactory.java | 2 +-
.../common/FullTextContainsEvaluator.java | 4 +-
...ervalStartFromDateConstructorDescriptor.java | 5 +-
.../OrderedListConstructorDescriptor.java | 6 +-
.../UnorderedListConstructorDescriptor.java | 6 +-
.../functions/AbstractBinaryStringEval.java | 2 +-
.../functions/AbstractQuadStringStringEval.java | 2 +-
.../AbstractUnaryNumericFunctionEval.java | 2 +-
.../AbstractUnaryStringStringEval.java | 2 +-
.../functions/CreateCircleDescriptor.java | 2 +-
.../functions/CreateLineDescriptor.java | 2 +-
.../functions/CreatePointDescriptor.java | 2 +-
.../functions/CreateRectangleDescriptor.java | 2 +-
.../functions/DeepEqualityDescriptor.java | 2 +-
.../evaluators/functions/LenDescriptor.java | 2 +-
.../evaluators/functions/SleepDescriptor.java | 3 +-
.../functions/SpatialAreaDescriptor.java | 2 +-
.../functions/SpatialCellDescriptor.java | 2 +-
.../functions/SpatialDistanceDescriptor.java | 2 +-
.../functions/StringLengthDescriptor.java | 2 +-
.../functions/StringRepeatDescriptor.java | 2 +-
.../functions/StringSplitDescriptor.java | 2 +-
.../functions/StringToCodePointDescriptor.java | 2 +-
.../functions/Substring2Descriptor.java | 4 +-
.../functions/SubstringAfterDescriptor.java | 2 +-
.../functions/SubstringBeforeDescriptor.java | 2 +-
.../functions/SubstringDescriptor.java | 4 +-
.../binary/AbstractSubBinaryEvaluator.java | 2 +-
.../functions/binary/PrintBinaryDescriptor.java | 2 +-
.../records/GetRecordFieldValueDescriptor.java | 2 +-
.../records/GetRecordFieldsDescriptor.java | 2 +-
.../records/GetRecordFieldsEvalFactory.java | 3 +-
.../records/RecordConcatEvalFactory.java | 4 +-
.../records/RecordLengthDescriptor.java | 122 +++++++++
.../records/RecordMergeDescriptor.java | 2 +-
.../records/RecordNamesDescriptor.java | 134 ++++++++++
.../records/RecordPairsDescriptor.java | 4 +-
.../records/RecordRemoveFieldsEvalFactory.java | 2 +-
.../AdjustDateTimeForTimeZoneDescriptor.java | 4 +-
.../AdjustTimeForTimeZoneDescriptor.java | 4 +-
.../functions/temporal/DayOfWeekDescriptor.java | 31 +--
.../temporal/OverlapBinsDescriptor.java | 2 +-
.../functions/temporal/ParseDateDescriptor.java | 49 ++--
.../temporal/ParseDateTimeDescriptor.java | 43 ++-
.../functions/temporal/ParseTimeDescriptor.java | 43 ++-
.../functions/temporal/PrintDateDescriptor.java | 18 +-
.../temporal/PrintDateTimeDescriptor.java | 16 +-
.../functions/temporal/PrintTimeDescriptor.java | 16 +-
.../runtime/functions/FunctionCollection.java | 4 +
.../runtime/functions/FunctionTypeInferers.java | 66 ++---
.../LSMPrimaryUpsertOperatorNodePushable.java | 4 +-
.../std/SubsetCollectionDescriptor.java | 2 +-
.../LockThenSearchOperationCallbackFactory.java | 2 +-
...maryIndexInstantSearchOperationCallback.java | 2 +-
...exInstantSearchOperationCallbackFactory.java | 2 +-
.../PrimaryIndexSearchOperationCallback.java | 4 +-
...maryIndexSearchOperationCallbackFactory.java | 2 +-
...xInstanctSearchOperationCallbackFactory.java | 2 +-
...daryIndexInstantSearchOperationCallback.java | 2 +-
...ndaryIndexModificationOperationCallback.java | 2 +-
.../UpsertOperationCallbackFactory.java | 2 +-
.../management/runtime/CommitRuntime.java | 6 +-
.../common/exceptions/AlgebricksException.java | 4 +
.../data/impl/IntegerPrinterFactory.java | 3 +-
.../data/impl/UTF8StringPrinterFactory.java | 2 +-
.../TupleCountAggregateFunctionFactory.java | 2 +-
...pleCountRunningAggregateFunctionFactory.java | 2 +-
.../operators/std/SinkWriterRuntimeFactory.java | 2 +-
.../operators/std/SplitOperatorDescriptor.java | 2 +-
.../std/StringStreamingRuntimeFactory.java | 2 +-
.../operators/std/UnnestRuntimeFactory.java | 2 +-
.../writers/SerializedDataWriterFactory.java | 2 +-
.../tests/pushruntime/IntArrayUnnester.java | 2 +-
.../pushruntime/IntegerAddEvalFactory.java | 3 +-
.../hyracks/api/client/HyracksConnection.java | 4 +-
.../api/context/IHyracksJobletContext.java | 2 +
.../api/exceptions/HyracksDataException.java | 22 +-
.../api/exceptions/HyracksException.java | 24 +-
.../api/job/JobSerializerDeserializer.java | 6 +-
.../apache/hyracks/api/util/ExceptionUtils.java | 12 +
.../api/test/TestControlledFrameWriter.java | 2 +-
.../hyracks/api/test/TestFrameWriter.java | 2 +-
.../hyracks/client/dataset/HyracksDataset.java | 2 +-
.../channels/DatasetNetworkInputChannel.java | 2 +-
.../comm/channels/NetworkInputChannel.java | 2 +-
.../comm/channels/NetworkOutputChannel.java | 2 +-
.../control/cc/ClusterControllerService.java | 2 +-
.../control/cc/executor/JobExecutor.java | 5 +-
.../hyracks/control/cc/job/JobManager.java | 2 +-
.../control/common/base/INodeController.java | 2 +-
.../ClassLoaderJobSerializerDeserializer.java | 8 +-
.../common/deployment/DeploymentUtils.java | 8 +-
.../control/common/ipc/CCNCFunctions.java | 16 +-
.../common/ipc/NodeControllerRemoteProxy.java | 6 +-
.../hyracks/control/common/work/WorkQueue.java | 2 +-
.../org/apache/hyracks/control/nc/Joblet.java | 10 +-
.../hyracks/control/nc/NodeControllerIPCI.java | 2 +-
.../control/nc/NodeControllerService.java | 12 +-
.../nc/dataset/DatasetPartitionWriter.java | 2 +-
.../hyracks/control/nc/dataset/ResultState.java | 6 +-
.../apache/hyracks/control/nc/io/IOManager.java | 8 +-
.../MaterializedPartitionInputChannel.java | 2 +-
.../ReceiveSideMaterializingCollector.java | 2 +-
.../nc/work/EnsureAllCcTasksCompleted.java | 72 +++--
.../hyracks/control/nc/work/StartTasksWork.java | 7 +-
.../ByteArraySerializerDeserializer.java | 4 +-
.../parsers/ByteArrayBase64ParserFactory.java | 2 +-
.../data/parsers/ByteArrayHexParserFactory.java | 2 +-
.../data/parsers/DoubleParserFactory.java | 4 +-
.../common/data/parsers/FloatParserFactory.java | 4 +-
.../data/parsers/IntegerParserFactory.java | 2 +-
.../common/data/parsers/LongParserFactory.java | 2 +-
.../data/parsers/UTF8StringParserFactory.java | 2 +-
.../AbstractReplicateOperatorDescriptor.java | 2 +-
.../NonDeterministicChannelReader.java | 2 +-
.../NonDeterministicPartitionBatchManager.java | 2 +-
.../LocalityAwarePartitionDataWriter.java | 4 +-
.../MToNBroadcastConnectorDescriptor.java | 2 +-
...tDeserializedFileScanOperatorDescriptor.java | 4 +-
.../file/DelimitedDataTupleParserFactory.java | 2 +-
.../std/file/FileRemoveOperatorDescriptor.java | 2 +-
.../std/file/FileScanOperatorDescriptor.java | 4 +-
.../file/FrameFileWriterOperatorDescriptor.java | 2 +-
.../file/LineFileWriteOperatorDescriptor.java | 2 +-
.../file/PlainFileWriterOperatorDescriptor.java | 4 +-
.../hyracks/dataflow/std/file/RecordWriter.java | 2 +-
.../MinMaxStringFieldAggregatorFactory.java | 2 +-
.../std/group/external/ExternalHashGroupBy.java | 2 +-
.../intersect/IntersectOperatorDescriptor.java | 2 +-
...ConstantTupleSourceOperatorNodePushable.java | 2 +-
.../sort/InMemorySortOperatorDescriptor.java | 2 +-
.../btree/helper/DataGenOperatorDescriptor.java | 2 +-
...onOnCreatePushRuntimeOperatorDescriptor.java | 2 +-
.../tests/util/NoopMissingWriterFactory.java | 2 +-
.../examples/text/WordTupleParserFactory.java | 2 +-
.../hyracks/hdfs/MiniDFSClusterFactory.java | 2 +-
.../hyracks/hdfs/MiniDFSClusterFactory.java | 2 +-
.../dataflow/HDFSReadOperatorDescriptor.java | 4 +-
.../dataflow/HDFSWriteOperatorDescriptor.java | 2 +-
.../hdfs/dataflow/InputSplitsFactory.java | 2 +-
.../hdfs/lib/TextTupleWriterFactory.java | 2 +-
.../hyracks/hdfs/scheduler/Scheduler.java | 8 +-
.../hdfs2/dataflow/FileSplitsFactory.java | 2 +-
.../dataflow/HDFSReadOperatorDescriptor.java | 4 +-
.../dataflow/HDFSWriteOperatorDescriptor.java | 2 +-
.../hyracks/hdfs2/scheduler/Scheduler.java | 2 +-
...xInsertUpdateDeleteOperatorNodePushable.java | 4 +-
.../IndexSearchOperatorNodePushable.java | 2 +-
.../TreeIndexStatsOperatorNodePushable.java | 2 +-
...xInsertUpdateDeleteOperatorNodePushable.java | 2 +-
.../lsm/common/impls/ExternalIndexHarness.java | 2 +-
.../search/AbstractTOccurrenceSearcher.java | 2 +-
.../InvertedIndexTokenizingTupleIterator.java | 2 +-
...nedInvertedIndexTokenizingTupleIterator.java | 2 +-
.../hyracks/storage/am/rtree/impls/RTree.java | 2 +-
.../hyracks/test/support/TestJobletContext.java | 7 +
308 files changed, 1875 insertions(+), 835 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/abcdb802/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
----------------------------------------------------------------------
diff --cc asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 6292e2d,832bb06..95c059d
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@@ -9749,6 -9753,10 +9754,11 @@@
<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>
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/abcdb802/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AGeometrySerializerDeserializer.java
----------------------------------------------------------------------
diff --cc asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AGeometrySerializerDeserializer.java
index 14450b3,0000000..0a74ab7
mode 100644,000000..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
@@@ -1,75 -1,0 +1,76 @@@
+/*
+ * 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.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;
+
+ public static final AGeometrySerializerDeserializer INSTANCE = new AGeometrySerializerDeserializer();
+
+ /**Use WGS 84 (EPSG:4326) as the default coordinate reference system*/
+ public static final SpatialReference DEFAULT_CRS = SpatialReference.create(4326);
+
+ private AGeometrySerializerDeserializer() {
+ }
+
+ @Override
+ public AGeometry deserialize(DataInput in) throws HyracksDataException {
+ try {
+ int length = in.readInt();
+ byte[] bytes = new byte[length];
+ in.readFully(bytes);
+ ByteBuffer buffer = ByteBuffer.wrap(bytes);
+ OGCGeometry geometry = OGCGeometry.createFromOGCStructure(
+ OperatorImportFromWkb.local().executeOGC(WkbImportFlags.wkbImportDefaults, buffer, null),
+ DEFAULT_CRS);
+ return new AGeometry(geometry);
+ } catch (IOException e) {
- throw new HyracksDataException(e);
++ throw HyracksDataException.create(e);
+ }
+ }
+
+ @Override
+ public void serialize(AGeometry instance, DataOutput out) throws HyracksDataException {
+ try {
+ OGCGeometry geometry = instance.getGeometry();
+ byte[] buffer = geometry.asBinary().array();
+ // For efficiency, we store the size of the geometry in bytes in the first 32 bits
+ // This allows AsterixDB to skip over this attribute if needed.
+ out.writeInt(buffer.length);
+ out.write(buffer);
+ } catch (IOException e) {
+ throw HyracksDataException.create(e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/abcdb802/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/abcdb802/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
----------------------------------------------------------------------
diff --cc asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index 03b5fc9,6b86a26..a15eefe
--- 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,10 -205,12 +206,14 @@@ public class BuiltinFunctions
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 =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "st-geom-from-geojson", FunctionIdentifier.VARARGS);
// numeric
public static final FunctionIdentifier NUMERIC_UNARY_MINUS =
@@@ -1402,8 -1218,9 +1406,10 @@@
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);
// temporal type accessors
addFunction(ACCESSOR_TEMPORAL_YEAR, AInt64TypeComputer.INSTANCE, true);