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);