You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by bu...@apache.org on 2016/02/13 03:15:53 UTC
[24/24] incubator-asterixdb git commit: Move to non-copy-based
evaluator interfaces for all function implementations,
including: - scalar functions, - aggregate functions,
- running aggregate functions, - unnesting functions
Move to non-copy-based evaluator interfaces for all function implementations, including:
- scalar functions,
- aggregate functions,
- running aggregate functions,
- unnesting functions
Change-Id: If132857cf8d707ce96951f12ba6dd86f54aa4069
Reviewed-on: https://asterix-gerrit.ics.uci.edu/615
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Till Westmann <ti...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/commit/0ae30836
Tree: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/tree/0ae30836
Diff: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/diff/0ae30836
Branch: refs/heads/master
Commit: 0ae3083626e8767e77a7c4add6b035ede8c12007
Parents: f93405c
Author: Yingyi Bu <yi...@couchbase.com>
Authored: Fri Feb 12 15:56:12 2016 -0800
Committer: Yingyi Bu <bu...@gmail.com>
Committed: Fri Feb 12 18:10:41 2016 -0800
----------------------------------------------------------------------
.../jobgen/QueryLogicalExpressionJobGen.java | 52 +-
.../AqlPlusExpressionToPlanTranslator.java | 4 +-
.../file/SecondaryBTreeOperationsHelper.java | 4 +-
.../file/SecondaryIndexOperationsHelper.java | 66 ++-
.../SecondaryInvertedIndexOperationsHelper.java | 4 +-
.../substring-after-4/substring-after-4.1.adm | 2 +-
.../substring-before-3/substring-before-3.1.adm | 2 +-
.../external/library/ExternalFunction.java | 30 +-
.../ExternalFunctionDescriptorProvider.java | 6 +-
.../library/ExternalFunctionProvider.java | 28 +-
.../ExternalScalarFunctionEvaluatorFactory.java | 16 +-
.../SimilarityMetricEditDistance.java | 69 ++-
.../asterix/builders/AbstractListBuilder.java | 16 +-
.../comparators/ABinaryComparator.java | 4 +-
.../AOrderedListSerializerDeserializer.java | 8 -
.../serde/ARecordSerializerDeserializer.java | 82 +--
.../AUnorderedListSerializerDeserializer.java | 8 -
.../asterix/formats/base/IDataFormat.java | 10 +-
.../functions/AbstractFunctionDescriptor.java | 22 +-
.../om/functions/IFunctionDescriptor.java | 22 +-
.../pointables/nonvisitor/ARecordPointable.java | 18 +-
.../org/apache/asterix/om/types/ATypeTag.java | 7 +-
.../om/types/hierachy/ATypeHierarchy.java | 151 +++---
.../collections/ListifyAggregateDescriptor.java | 7 +-
.../ListifyAggregateFunctionEvalFactory.java | 43 +-
.../AbstractScalarAggregateDescriptor.java | 23 +-
.../scalar/GenericScalarAggregateFunction.java | 36 +-
...bstractSerializableAvgAggregateFunction.java | 76 +--
...tractSerializableCountAggregateFunction.java | 27 +-
...bstractSerializableSumAggregateFunction.java | 41 +-
.../std/SerializableAvgAggregateDescriptor.java | 19 +-
.../std/SerializableAvgAggregateFunction.java | 8 +-
.../SerializableCountAggregateDescriptor.java | 19 +-
.../std/SerializableCountAggregateFunction.java | 8 +-
...erializableGlobalAvgAggregateDescriptor.java | 19 +-
.../SerializableGlobalAvgAggregateFunction.java | 8 +-
...alizableGlobalSqlAvgAggregateDescriptor.java | 22 +-
...rializableGlobalSqlAvgAggregateFunction.java | 8 +-
...zableIntermediateAvgAggregateDescriptor.java | 24 +-
...lizableIntermediateAvgAggregateFunction.java | 8 +-
...leIntermediateSqlAvgAggregateDescriptor.java | 22 +-
...ableIntermediateSqlAvgAggregateFunction.java | 8 +-
...SerializableLocalAvgAggregateDescriptor.java | 20 +-
.../SerializableLocalAvgAggregateFunction.java | 8 +-
...ializableLocalSqlAvgAggregateDescriptor.java | 20 +-
...erializableLocalSqlAvgAggregateFunction.java | 8 +-
...ializableLocalSqlSumAggregateDescriptor.java | 19 +-
...SerializableLocalSumAggregateDescriptor.java | 19 +-
.../SerializableSqlAvgAggregateDescriptor.java | 20 +-
.../SerializableSqlAvgAggregateFunction.java | 8 +-
...SerializableSqlCountAggregateDescriptor.java | 19 +-
.../SerializableSqlCountAggregateFunction.java | 8 +-
.../SerializableSqlSumAggregateDescriptor.java | 19 +-
.../SerializableSqlSumAggregateFunction.java | 9 +-
.../std/SerializableSumAggregateDescriptor.java | 19 +-
.../std/SerializableSumAggregateFunction.java | 9 +-
.../std/AbstractAvgAggregateFunction.java | 91 ++--
.../std/AbstractCountAggregateFunction.java | 41 +-
.../std/AbstractMinMaxAggregateFunction.java | 47 +-
.../std/AbstractSumAggregateFunction.java | 73 +--
.../aggregates/std/AvgAggregateDescriptor.java | 17 +-
.../aggregates/std/AvgAggregateFunction.java | 18 +-
.../std/CountAggregateDescriptor.java | 18 +-
.../aggregates/std/CountAggregateFunction.java | 10 +-
.../std/GlobalAvgAggregateDescriptor.java | 17 +-
.../std/GlobalAvgAggregateFunction.java | 17 +-
.../std/GlobalSqlAvgAggregateDescriptor.java | 17 +-
.../std/GlobalSqlAvgAggregateFunction.java | 17 +-
.../std/IntermediateAvgAggregateDescriptor.java | 17 +-
.../std/IntermediateAvgAggregateFunction.java | 17 +-
.../IntermediateSqlAvgAggregateDescriptor.java | 17 +-
.../IntermediateSqlAvgAggregateFunction.java | 18 +-
.../std/LocalAvgAggregateDescriptor.java | 17 +-
.../std/LocalAvgAggregateFunction.java | 17 +-
.../std/LocalMaxAggregateDescriptor.java | 17 +-
.../std/LocalMinAggregateDescriptor.java | 17 +-
.../std/LocalSqlAvgAggregateDescriptor.java | 17 +-
.../std/LocalSqlAvgAggregateFunction.java | 17 +-
.../std/LocalSqlMaxAggregateDescriptor.java | 17 +-
.../std/LocalSqlMinAggregateDescriptor.java | 17 +-
.../std/LocalSqlSumAggregateDescriptor.java | 17 +-
.../std/LocalSumAggregateDescriptor.java | 17 +-
.../aggregates/std/MaxAggregateDescriptor.java | 17 +-
.../aggregates/std/MinAggregateDescriptor.java | 17 +-
.../aggregates/std/MinMaxAggregateFunction.java | 12 +-
.../std/SqlAvgAggregateDescriptor.java | 17 +-
.../aggregates/std/SqlAvgAggregateFunction.java | 18 +-
.../std/SqlCountAggregateDescriptor.java | 18 +-
.../std/SqlCountAggregateFunction.java | 8 +-
.../std/SqlMaxAggregateDescriptor.java | 17 +-
.../std/SqlMinAggregateDescriptor.java | 17 +-
.../std/SqlMinMaxAggregateFunction.java | 12 +-
.../std/SqlSumAggregateDescriptor.java | 17 +-
.../aggregates/std/SqlSumAggregateFunction.java | 12 +-
.../aggregates/std/SumAggregateDescriptor.java | 17 +-
.../aggregates/std/SumAggregateFunction.java | 12 +-
.../stream/EmptyStreamAggregateDescriptor.java | 32 +-
.../NonEmptyStreamAggregateDescriptor.java | 33 +-
.../accessors/CircleCenterAccessor.java | 51 +-
.../accessors/CircleRadiusAccessor.java | 45 +-
.../accessors/LineRectanglePolygonAccessor.java | 92 ++--
.../accessors/PointXCoordinateAccessor.java | 43 +-
.../accessors/PointYCoordinateAccessor.java | 43 +-
.../accessors/TemporalDayAccessor.java | 69 +--
.../accessors/TemporalHourAccessor.java | 70 +--
.../accessors/TemporalIntervalEndAccessor.java | 49 +-
.../TemporalIntervalEndDateAccessor.java | 59 ++-
.../TemporalIntervalEndDatetimeAccessor.java | 53 +-
.../TemporalIntervalEndTimeAccessor.java | 53 +-
.../TemporalIntervalStartAccessor.java | 51 +-
.../TemporalIntervalStartDateAccessor.java | 55 +-
.../TemporalIntervalStartDatetimeAccessor.java | 54 +-
.../TemporalIntervalStartTimeAccessor.java | 54 +-
.../accessors/TemporalMillisecondAccessor.java | 66 +--
.../accessors/TemporalMinuteAccessor.java | 66 +--
.../accessors/TemporalMonthAccessor.java | 65 +--
.../accessors/TemporalSecondAccessor.java | 64 +--
.../accessors/TemporalYearAccessor.java | 71 +--
.../common/AccessibleByteArrayEval.java | 28 +-
.../ClosedRecordConstructorEvalFactory.java | 57 +--
.../evaluators/common/CreateMBREvalFactory.java | 190 +++----
.../common/EditDistanceCheckEvaluator.java | 42 +-
.../common/EditDistanceContainsEvaluator.java | 31 +-
.../common/EditDistanceEvaluator.java | 96 ++--
.../evaluators/common/GramTokensEvaluator.java | 54 +-
.../common/SimilarityFiltersCache.java | 11 +-
.../common/SimilarityJaccardCheckEvaluator.java | 27 +-
.../common/SimilarityJaccardEvaluator.java | 86 ++--
.../SimilarityJaccardPrefixEvaluator.java | 127 ++---
.../SimilarityJaccardSortedCheckEvaluator.java | 12 +-
.../SimilarityJaccardSortedEvaluator.java | 13 +-
.../runtime/evaluators/common/SpatialUtils.java | 19 +-
.../evaluators/common/WordTokensEvaluator.java | 32 +-
.../AbstractComparisonEvaluator.java | 230 +++++----
.../comparisons/ComparisonEvalFactory.java | 108 ++--
...BinaryBase64StringConstructorDescriptor.java | 17 +-
.../ABinaryHexStringConstructorDescriptor.java | 55 +-
.../ABooleanConstructorDescriptor.java | 55 +-
.../ACircleConstructorDescriptor.java | 53 +-
.../ADateConstructorDescriptor.java | 44 +-
.../ADateTimeConstructorDescriptor.java | 45 +-
.../ADayTimeDurationConstructorDescriptor.java | 44 +-
.../ADoubleConstructorDescriptor.java | 54 +-
.../ADurationConstructorDescriptor.java | 46 +-
.../AFloatConstructorDescriptor.java | 150 ++----
.../AInt16ConstructorDescriptor.java | 70 +--
.../AInt32ConstructorDescriptor.java | 68 +--
.../AInt64ConstructorDescriptor.java | 66 +--
.../AInt8ConstructorDescriptor.java | 69 +--
.../AIntervalConstructorDescriptor.java | 78 +--
...ervalStartFromDateConstructorDescriptor.java | 101 ++--
...lStartFromDateTimeConstructorDescriptor.java | 110 ++--
...ervalStartFromTimeConstructorDescriptor.java | 100 ++--
.../ALineConstructorDescriptor.java | 46 +-
.../ANullConstructorDescriptor.java | 46 +-
.../APoint3DConstructorDescriptor.java | 47 +-
.../APointConstructorDescriptor.java | 45 +-
.../APolygonConstructorDescriptor.java | 51 +-
.../ARectangleConstructorDescriptor.java | 45 +-
.../AStringConstructorDescriptor.java | 57 ++-
.../ATimeConstructorDescriptor.java | 43 +-
.../AUUIDFromStringConstructorDescriptor.java | 49 +-
...AYearMonthDurationConstructorDescriptor.java | 43 +-
.../ClosedRecordConstructorDescriptor.java | 4 +-
.../OpenRecordConstructorDescriptor.java | 50 +-
.../functions/AbstractBinaryStringBoolEval.java | 65 ++-
.../AbstractNumericArithmeticEval.java | 199 ++++----
.../functions/AbstractQuadStringStringEval.java | 91 ++--
.../functions/AbstractTripleStringBoolEval.java | 74 +--
.../AbstractTripleStringStringEval.java | 74 +--
.../evaluators/functions/AndDescriptor.java | 51 +-
.../AnyCollectionMemberDescriptor.java | 70 +--
.../functions/CastListDescriptor.java | 37 +-
.../functions/CastRecordDescriptor.java | 37 +-
.../functions/CodePointToStringDescriptor.java | 58 ++-
.../CountHashedGramTokensDescriptor.java | 16 +-
.../CountHashedWordTokensDescriptor.java | 16 +-
.../functions/CreateCircleDescriptor.java | 70 +--
.../functions/CreateLineDescriptor.java | 79 +--
.../functions/CreateMBRDescriptor.java | 4 +-
.../functions/CreatePointDescriptor.java | 76 +--
.../functions/CreatePolygonDescriptor.java | 42 +-
.../functions/CreateRectangleDescriptor.java | 79 +--
.../functions/CreateUUIDDescriptor.java | 29 +-
.../functions/DeepEqualityDescriptor.java | 49 +-
.../functions/EditDistanceCheckDescriptor.java | 16 +-
.../EditDistanceContainsDescriptor.java | 16 +-
.../functions/EditDistanceDescriptor.java | 16 +-
.../functions/EditDistanceListIsFilterable.java | 66 +--
.../EditDistanceStringIsFilterable.java | 81 +--
.../functions/EmbedTypeDescriptor.java | 18 +-
.../functions/FlowRecordDescriptor.java | 36 +-
.../evaluators/functions/FuzzyEqDescriptor.java | 4 +-
.../evaluators/functions/GetItemDescriptor.java | 100 ++--
.../functions/GramTokensDescriptor.java | 16 +-
.../functions/HashedGramTokensDescriptor.java | 16 +-
.../functions/HashedWordTokensDescriptor.java | 16 +-
.../functions/InjectFailureDescriptor.java | 63 ++-
.../evaluators/functions/IsNullDescriptor.java | 33 +-
.../functions/IsSystemNullDescriptor.java | 35 +-
.../evaluators/functions/LenDescriptor.java | 51 +-
.../evaluators/functions/NotDescriptor.java | 44 +-
.../evaluators/functions/NotNullDescriptor.java | 41 +-
.../functions/NumericAbsDescriptor.java | 66 +--
.../functions/NumericCeilingDescriptor.java | 66 +--
.../functions/NumericFloorDescriptor.java | 65 +--
.../functions/NumericModuloDescriptor.java | 65 +--
.../functions/NumericRoundDescriptor.java | 65 +--
.../NumericRoundHalfToEven2Descriptor.java | 89 ++--
.../NumericRoundHalfToEvenDescriptor.java | 67 +--
.../functions/NumericSubtractDescriptor.java | 69 +--
.../functions/NumericUnaryMinusDescriptor.java | 67 +--
.../evaluators/functions/OrDescriptor.java | 50 +-
.../OrderedListConstructorDescriptor.java | 43 +-
.../functions/PrefixLenDescriptor.java | 81 +--
.../functions/PrefixLenJaccardDescriptor.java | 49 +-
.../evaluators/functions/RegExpDescriptor.java | 67 ++-
.../functions/SimilarityDescriptor.java | 165 +++---
.../SimilarityJaccardCheckDescriptor.java | 16 +-
.../functions/SimilarityJaccardDescriptor.java | 16 +-
.../SimilarityJaccardPrefixCheckDescriptor.java | 21 +-
.../SimilarityJaccardPrefixDescriptor.java | 16 +-
.../SimilarityJaccardSortedCheckDescriptor.java | 16 +-
.../SimilarityJaccardSortedDescriptor.java | 16 +-
.../functions/SpatialAreaDescriptor.java | 60 ++-
.../functions/SpatialCellDescriptor.java | 117 +++--
.../functions/SpatialDistanceDescriptor.java | 65 +--
.../functions/SpatialIntersectDescriptor.java | 498 +++++++++----------
.../functions/StringConcatDescriptor.java | 45 +-
.../functions/StringContainsDescriptor.java | 20 +-
.../functions/StringEndsWithDescriptor.java | 20 +-
.../functions/StringEqualDescriptor.java | 20 +-
.../functions/StringJoinDescriptor.java | 78 +--
.../functions/StringLengthDescriptor.java | 46 +-
.../functions/StringLikeDescriptor.java | 20 +-
.../functions/StringLowerCaseDescriptor.java | 45 +-
.../functions/StringMatchesDescriptor.java | 19 +-
.../StringMatchesWithFlagDescriptor.java | 19 +-
.../functions/StringReplaceDescriptor.java | 19 +-
.../StringReplaceWithFlagsDescriptor.java | 19 +-
.../functions/StringStartsWithDescriptor.java | 20 +-
.../functions/StringToCodePointDescriptor.java | 50 +-
.../functions/StringUpperCaseDescriptor.java | 45 +-
.../functions/Substring2Descriptor.java | 52 +-
.../functions/SubstringAfterDescriptor.java | 71 +--
.../functions/SubstringBeforeDescriptor.java | 68 ++-
.../functions/SubstringDescriptor.java | 94 ++--
.../functions/SwitchCaseDescriptor.java | 79 ++-
.../UnorderedListConstructorDescriptor.java | 46 +-
.../functions/WordTokensDescriptor.java | 16 +-
.../binary/AbstractBinaryScalarEvaluator.java | 110 ++++
.../functions/binary/AbstractCopyEvaluator.java | 109 ----
.../binary/BinaryConcatDescriptor.java | 37 +-
.../binary/BinaryLengthDescriptor.java | 26 +-
.../functions/binary/FindBinaryDescriptor.java | 43 +-
.../binary/FindBinaryFromDescriptor.java | 19 +-
.../functions/binary/ParseBinaryDescriptor.java | 27 +-
.../functions/binary/PrintBinaryDescriptor.java | 27 +-
.../binary/SubBinaryFromDescriptor.java | 15 +-
.../binary/SubBinaryFromToDescriptor.java | 41 +-
.../records/FieldAccessByIndexDescriptor.java | 4 +-
.../records/FieldAccessByIndexEvalFactory.java | 69 +--
.../records/FieldAccessByNameDescriptor.java | 4 +-
.../records/FieldAccessByNameEvalFactory.java | 66 +--
.../records/FieldAccessNestedDescriptor.java | 4 +-
.../records/FieldAccessNestedEvalFactory.java | 213 +++++++-
.../functions/records/FieldAccessUtil.java | 203 --------
.../records/GetRecordFieldValueDescriptor.java | 4 +-
.../records/GetRecordFieldValueEvalFactory.java | 123 +++--
.../records/GetRecordFieldsDescriptor.java | 4 +-
.../records/GetRecordFieldsEvalFactory.java | 49 +-
.../records/RecordAddFieldsDescriptor.java | 68 +--
.../functions/records/RecordFieldsUtil.java | 22 +-
.../records/RecordMergeDescriptor.java | 53 +-
.../records/RecordRemoveFieldsDescriptor.java | 5 +-
.../records/RecordRemoveFieldsEvalFactory.java | 80 +--
.../AbstractIntervalLogicFuncDescriptor.java | 79 +--
.../AdjustDateTimeForTimeZoneDescriptor.java | 70 +--
.../AdjustTimeForTimeZoneDescriptor.java | 72 +--
.../CalendarDuartionFromDateDescriptor.java | 72 +--
.../CalendarDurationFromDateTimeDescriptor.java | 74 +--
.../temporal/CurrentDateDescriptor.java | 26 +-
.../temporal/CurrentDateTimeDescriptor.java | 23 +-
.../temporal/CurrentTimeDescriptor.java | 26 +-
.../temporal/DateFromDatetimeDescriptor.java | 44 +-
.../DateFromUnixTimeInDaysDescriptor.java | 36 +-
.../DatetimeFromDateAndTimeDescriptor.java | 67 +--
.../DatetimeFromUnixTimeInMsDescriptor.java | 59 +--
.../DatetimeFromUnixTimeInSecsDescriptor.java | 64 +--
.../functions/temporal/DayOfWeekDescriptor.java | 54 +-
.../DayTimeDurationComparatorDescriptor.java | 72 +--
.../temporal/DurationEqualDescriptor.java | 73 +--
.../DurationFromIntervalDescriptor.java | 54 +-
.../DurationFromMillisecondsDescriptor.java | 60 +--
.../temporal/DurationFromMonthsDescriptor.java | 41 +-
.../temporal/GetDayTimeDurationDescriptor.java | 47 +-
.../GetOverlappingIntervalDescriptor.java | 78 +--
.../GetYearMonthDurationDescriptor.java | 45 +-
.../temporal/IntervalBinDescriptor.java | 87 ++--
...llisecondsFromDayTimeDurationDescriptor.java | 50 +-
.../MonthsFromYearMonthDurationDescriptor.java | 50 +-
.../temporal/OverlapBinsDescriptor.java | 83 ++--
.../functions/temporal/ParseDateDescriptor.java | 77 +--
.../temporal/ParseDateTimeDescriptor.java | 78 +--
.../functions/temporal/ParseTimeDescriptor.java | 77 +--
.../functions/temporal/PrintDateDescriptor.java | 70 +--
.../temporal/PrintDateTimeDescriptor.java | 69 +--
.../functions/temporal/PrintTimeDescriptor.java | 69 +--
.../temporal/TimeFromDatetimeDescriptor.java | 45 +-
.../TimeFromUnixTimeInMsDescriptor.java | 36 +-
.../YearMonthDurationComparatorDecriptor.java | 72 +--
.../runtime/formats/NonTaggedDataFormat.java | 131 ++++-
.../std/TidRunningAggregateDescriptor.java | 36 +-
.../unnestingfunctions/std/RangeDescriptor.java | 47 +-
.../std/ScanCollectionDescriptor.java | 46 +-
.../std/SubsetCollectionDescriptor.java | 109 ++--
316 files changed, 7967 insertions(+), 6883 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-algebra/src/main/java/org/apache/asterix/jobgen/QueryLogicalExpressionJobGen.java
----------------------------------------------------------------------
diff --git a/asterix-algebra/src/main/java/org/apache/asterix/jobgen/QueryLogicalExpressionJobGen.java b/asterix-algebra/src/main/java/org/apache/asterix/jobgen/QueryLogicalExpressionJobGen.java
index 0d7955d..5ebabf3 100644
--- a/asterix-algebra/src/main/java/org/apache/asterix/jobgen/QueryLogicalExpressionJobGen.java
+++ b/asterix-algebra/src/main/java/org/apache/asterix/jobgen/QueryLogicalExpressionJobGen.java
@@ -46,11 +46,11 @@ import org.apache.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFun
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import org.apache.hyracks.algebricks.runtime.base.ICopyAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyRunningAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyUnnestingFunctionFactory;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.evaluators.ColumnAccessEvalFactory;
public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
@@ -61,16 +61,16 @@ public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
}
@Override
- public ICopyAggregateFunctionFactory createAggregateFunctionFactory(AggregateFunctionCallExpression expr,
+ public IAggregateEvaluatorFactory createAggregateFunctionFactory(AggregateFunctionCallExpression expr,
IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
throws AlgebricksException {
- ICopyEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
+ IScalarEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
IFunctionDescriptor fd = getFunctionDescriptor(expr, env, context);
switch (fd.getFunctionDescriptorTag()) {
case SERIALAGGREGATE:
return null;
case AGGREGATE:
- return fd.createAggregateFunctionFactory(args);
+ return fd.createAggregateEvaluatorFactory(args);
default:
throw new IllegalStateException(
"Invalid function descriptor " + fd.getFunctionDescriptorTag() + " expected "
@@ -79,25 +79,25 @@ public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
}
@Override
- public ICopyRunningAggregateFunctionFactory createRunningAggregateFunctionFactory(
+ public IRunningAggregateEvaluatorFactory createRunningAggregateFunctionFactory(
StatefulFunctionCallExpression expr, IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas,
JobGenContext context) throws AlgebricksException {
- ICopyEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
- return getFunctionDescriptor(expr, env, context).createRunningAggregateFunctionFactory(args);
+ IScalarEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
+ return getFunctionDescriptor(expr, env, context).createRunningAggregateEvaluatorFactory(args);
}
@Override
- public ICopyUnnestingFunctionFactory createUnnestingFunctionFactory(UnnestingFunctionCallExpression expr,
+ public IUnnestingEvaluatorFactory createUnnestingFunctionFactory(UnnestingFunctionCallExpression expr,
IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
throws AlgebricksException {
- ICopyEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
- return getFunctionDescriptor(expr, env, context).createUnnestingFunctionFactory(args);
+ IScalarEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
+ return getFunctionDescriptor(expr, env, context).createUnnestingEvaluatorFactory(args);
}
@Override
- public ICopyEvaluatorFactory createEvaluatorFactory(ILogicalExpression expr, IVariableTypeEnvironment env,
+ public IScalarEvaluatorFactory createEvaluatorFactory(ILogicalExpression expr, IVariableTypeEnvironment env,
IOperatorSchema[] inputSchemas, JobGenContext context) throws AlgebricksException {
- ICopyEvaluatorFactory copyEvaluatorFactory = null;
+ IScalarEvaluatorFactory copyEvaluatorFactory = null;
switch (expr.getExpressionTag()) {
case VARIABLE: {
VariableReferenceExpression v = (VariableReferenceExpression) expr;
@@ -120,7 +120,7 @@ public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
}
- private ICopyEvaluatorFactory createVariableEvaluatorFactory(VariableReferenceExpression expr,
+ private IScalarEvaluatorFactory createVariableEvaluatorFactory(VariableReferenceExpression expr,
IOperatorSchema[] inputSchemas, JobGenContext context) throws AlgebricksException {
LogicalVariable variable = expr.getVariableReference();
for (IOperatorSchema scm : inputSchemas) {
@@ -132,10 +132,10 @@ public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
throw new AlgebricksException("Variable " + variable + " could not be found in any input schema.");
}
- private ICopyEvaluatorFactory createScalarFunctionEvaluatorFactory(AbstractFunctionCallExpression expr,
+ private IScalarEvaluatorFactory createScalarFunctionEvaluatorFactory(AbstractFunctionCallExpression expr,
IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
throws AlgebricksException {
- ICopyEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
+ IScalarEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
FunctionIdentifier fi = expr.getFunctionIdentifier();
ComparisonKind ck = AlgebricksBuiltinFunctions.getComparisonType(fi);
if (ck != null) {
@@ -157,17 +157,17 @@ public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
return fd.createEvaluatorFactory(args);
}
- private ICopyEvaluatorFactory createConstantEvaluatorFactory(ConstantExpression expr,
+ private IScalarEvaluatorFactory createConstantEvaluatorFactory(ConstantExpression expr,
IOperatorSchema[] inputSchemas, JobGenContext context) throws AlgebricksException {
IDataFormat format = FormatUtils.getDefaultFormat();
return format.getConstantEvalFactory(expr.getValue());
}
- private ICopyEvaluatorFactory[] codegenArguments(AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
+ private IScalarEvaluatorFactory[] codegenArguments(AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
IOperatorSchema[] inputSchemas, JobGenContext context) throws AlgebricksException {
List<Mutable<ILogicalExpression>> arguments = expr.getArguments();
int n = arguments.size();
- ICopyEvaluatorFactory[] args = new ICopyEvaluatorFactory[n];
+ IScalarEvaluatorFactory[] args = new IScalarEvaluatorFactory[n];
int i = 0;
for (Mutable<ILogicalExpression> a : arguments) {
args[i++] = createEvaluatorFactory(a.getValue(), env, inputSchemas, context);
@@ -176,10 +176,10 @@ public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
}
@Override
- public ICopySerializableAggregateFunctionFactory createSerializableAggregateFunctionFactory(
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateFunctionFactory(
AggregateFunctionCallExpression expr, IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas,
JobGenContext context) throws AlgebricksException {
- ICopyEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
+ IScalarEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
IFunctionDescriptor fd = getFunctionDescriptor(expr, env, context);
switch (fd.getFunctionDescriptorTag()) {
@@ -188,7 +188,7 @@ public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
AggregateFunctionCallExpression serialAggExpr = AsterixBuiltinFunctions
.makeSerializableAggregateFunctionExpression(fd.getIdentifier(), expr.getArguments());
IFunctionDescriptor afdd = getFunctionDescriptor(serialAggExpr, env, context);
- return afdd.createSerializableAggregateFunctionFactory(args);
+ return afdd.createSerializableAggregateEvaluatorFactory(args);
} else {
throw new AlgebricksException(
"Trying to create a serializable aggregate from a non-serializable aggregate function descriptor. (fi="
@@ -196,7 +196,7 @@ public class QueryLogicalExpressionJobGen implements ILogicalExpressionJobGen {
}
}
case SERIALAGGREGATE: {
- return fd.createSerializableAggregateFunctionFactory(args);
+ return fd.createSerializableAggregateEvaluatorFactory(args);
}
default:
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlPlusExpressionToPlanTranslator.java
----------------------------------------------------------------------
diff --git a/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlPlusExpressionToPlanTranslator.java b/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlPlusExpressionToPlanTranslator.java
index 9425254..45933f4 100644
--- a/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlPlusExpressionToPlanTranslator.java
+++ b/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlPlusExpressionToPlanTranslator.java
@@ -159,7 +159,7 @@ import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOper
import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteOperator;
import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
/**
* Each visit returns a pair of an operator and a variable. The variable
@@ -276,7 +276,7 @@ public class AqlPlusExpressionToPlanTranslator extends AbstractLangTranslator
ArrayList<Mutable<ILogicalExpression>> exprs = new ArrayList<Mutable<ILogicalExpression>>();
List<Mutable<ILogicalExpression>> varRefsForLoading = new ArrayList<Mutable<ILogicalExpression>>();
for (List<String> partitioningKey : partitioningKeys) {
- Triple<ICopyEvaluatorFactory, ScalarFunctionCallExpression, IAType> partitioner = format
+ Triple<IScalarEvaluatorFactory, ScalarFunctionCallExpression, IAType> partitioner = format
.partitioningEvaluatorFactory(itemType, partitioningKey);
AbstractFunctionCallExpression f = partitioner.second.cloneExpression();
f.substituteVar(METADATA_DUMMY_VAR, resVar);
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-app/src/main/java/org/apache/asterix/file/SecondaryBTreeOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterix-app/src/main/java/org/apache/asterix/file/SecondaryBTreeOperationsHelper.java b/asterix-app/src/main/java/org/apache/asterix/file/SecondaryBTreeOperationsHelper.java
index 6d23f3c..5512577 100644
--- a/asterix-app/src/main/java/org/apache/asterix/file/SecondaryBTreeOperationsHelper.java
+++ b/asterix-app/src/main/java/org/apache/asterix/file/SecondaryBTreeOperationsHelper.java
@@ -49,7 +49,7 @@ import org.apache.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConf
import org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
import org.apache.hyracks.algebricks.data.ISerializerDeserializerProvider;
import org.apache.hyracks.algebricks.data.ITypeTraitProvider;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
import org.apache.hyracks.algebricks.runtime.operators.base.SinkRuntimeFactory;
import org.apache.hyracks.algebricks.runtime.operators.meta.AlgebricksMetaOperatorDescriptor;
@@ -302,7 +302,7 @@ public class SecondaryBTreeOperationsHelper extends SecondaryIndexOperationsHelp
protected void setSecondaryRecDescAndComparators(IndexType indexType, List<List<String>> secondaryKeyFields,
List<IAType> secondaryKeyTypes, int gramLength, AqlMetadataProvider metadataProvider)
throws AlgebricksException, AsterixException {
- secondaryFieldAccessEvalFactories = new ICopyEvaluatorFactory[numSecondaryKeys + numFilterFields];
+ secondaryFieldAccessEvalFactories = new IScalarEvaluatorFactory[numSecondaryKeys + numFilterFields];
secondaryComparatorFactories = new IBinaryComparatorFactory[numSecondaryKeys + numPrimaryKeys];
secondaryBloomFilterKeyFields = new int[numSecondaryKeys];
ISerializerDeserializer[] secondaryRecFields = new ISerializerDeserializer[numPrimaryKeys + numSecondaryKeys
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-app/src/main/java/org/apache/asterix/file/SecondaryIndexOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterix-app/src/main/java/org/apache/asterix/file/SecondaryIndexOperationsHelper.java b/asterix-app/src/main/java/org/apache/asterix/file/SecondaryIndexOperationsHelper.java
index d67ca0d..54cac09 100644
--- a/asterix-app/src/main/java/org/apache/asterix/file/SecondaryIndexOperationsHelper.java
+++ b/asterix-app/src/main/java/org/apache/asterix/file/SecondaryIndexOperationsHelper.java
@@ -64,10 +64,8 @@ import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConst
import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraintHelper;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.common.utils.Pair;
-import org.apache.hyracks.algebricks.core.algebra.expressions.LogicalExpressionJobGenToExpressionRuntimeProviderAdapter;
import org.apache.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConfig;
import org.apache.hyracks.algebricks.data.ISerializerDeserializerProvider;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.evaluators.ColumnAccessEvalFactory;
@@ -126,7 +124,7 @@ public abstract class SecondaryIndexOperationsHelper {
protected ITypeTraits[] secondaryTypeTraits;
protected int[] secondaryBloomFilterKeyFields;
protected RecordDescriptor secondaryRecDesc;
- protected ICopyEvaluatorFactory[] secondaryFieldAccessEvalFactories;
+ protected IScalarEvaluatorFactory[] secondaryFieldAccessEvalFactories;
protected IAsterixPropertiesProvider propertiesProvider;
protected ILSMMergePolicyFactory mergePolicyFactory;
@@ -152,10 +150,10 @@ public abstract class SecondaryIndexOperationsHelper {
}
public static SecondaryIndexOperationsHelper createIndexOperationsHelper(IndexType indexType, String dataverseName,
- String datasetName, String indexName, List<List<String>> secondaryKeyFields,
- List<IAType> secondaryKeyTypes, boolean isEnforced, int gramLength, AqlMetadataProvider metadataProvider,
+ String datasetName, String indexName, List<List<String>> secondaryKeyFields, List<IAType> secondaryKeyTypes,
+ boolean isEnforced, int gramLength, AqlMetadataProvider metadataProvider,
PhysicalOptimizationConfig physOptConf, ARecordType recType, ARecordType enforcedType)
- throws AsterixException, AlgebricksException {
+ throws AsterixException, AlgebricksException {
IAsterixPropertiesProvider asterixPropertiesProvider = AsterixAppContextInfo.getInstance();
SecondaryIndexOperationsHelper indexOperationsHelper = null;
switch (indexType) {
@@ -286,8 +284,8 @@ public abstract class SecondaryIndexOperationsHelper {
throw new AlgebricksException(e);
}
primaryRecFields[i] = serdeProvider.getSerializerDeserializer(keyType);
- primaryComparatorFactories[i] = AqlBinaryComparatorFactoryProvider.INSTANCE.getBinaryComparatorFactory(
- keyType, true);
+ primaryComparatorFactories[i] = AqlBinaryComparatorFactoryProvider.INSTANCE
+ .getBinaryComparatorFactory(keyType, true);
primaryTypeTraits[i] = AqlTypeTraitProvider.INSTANCE.getTypeTrait(keyType);
primaryBloomFilterKeyFields[i] = i;
}
@@ -300,8 +298,8 @@ public abstract class SecondaryIndexOperationsHelper {
List<List<String>> secondaryKeyFields, List<IAType> secondaryKeyTypes, int gramLength,
AqlMetadataProvider metadataProvider) throws AlgebricksException, AsterixException;
- protected AbstractOperatorDescriptor createDummyKeyProviderOp(JobSpecification spec) throws AsterixException,
- AlgebricksException {
+ protected AbstractOperatorDescriptor createDummyKeyProviderOp(JobSpecification spec)
+ throws AsterixException, AlgebricksException {
// Build dummy tuple containing one field with a dummy value inside.
ArrayTupleBuilder tb = new ArrayTupleBuilder(1);
DataOutput dos = tb.getDataOutput();
@@ -345,12 +343,12 @@ public abstract class SecondaryIndexOperationsHelper {
primaryFileSplitProvider, primaryRecDesc.getTypeTraits(), primaryComparatorFactories,
primaryBloomFilterKeyFields, lowKeyFields, highKeyFields, true, true,
new LSMBTreeDataflowHelperFactory(new AsterixVirtualBufferCacheProvider(dataset.getDatasetId()),
- mergePolicyFactory, mergePolicyFactoryProperties, new PrimaryIndexOperationTrackerProvider(
- dataset.getDatasetId()), AsterixRuntimeComponentsProvider.RUNTIME_PROVIDER,
- LSMBTreeIOOperationCallbackFactory.INSTANCE, storageProperties
- .getBloomFilterFalsePositiveRate(), true, filterTypeTraits, filterCmpFactories,
- primaryBTreeFields, primaryFilterFields, !temp), false, false, null,
- searchCallbackFactory, null, null);
+ mergePolicyFactory, mergePolicyFactoryProperties,
+ new PrimaryIndexOperationTrackerProvider(dataset.getDatasetId()),
+ AsterixRuntimeComponentsProvider.RUNTIME_PROVIDER, LSMBTreeIOOperationCallbackFactory.INSTANCE,
+ storageProperties.getBloomFilterFalsePositiveRate(), true, filterTypeTraits, filterCmpFactories,
+ primaryBTreeFields, primaryFilterFields, !temp),
+ false, false, null, searchCallbackFactory, null, null);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, primarySearchOp,
primaryPartitionConstraint);
@@ -377,8 +375,7 @@ public abstract class SecondaryIndexOperationsHelper {
IScalarEvaluatorFactory[] sefs = new IScalarEvaluatorFactory[secondaryFieldAccessEvalFactories.length];
for (int i = 0; i < secondaryFieldAccessEvalFactories.length; ++i) {
- sefs[i] = new LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.ScalarEvaluatorFactoryAdapter(
- secondaryFieldAccessEvalFactories[i]);
+ sefs[i] = secondaryFieldAccessEvalFactories[i];
}
AssignRuntimeFactory assign = new AssignRuntimeFactory(outColumns, sefs, projectionList);
AlgebricksMetaOperatorDescriptor asterixAssignOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 1,
@@ -408,10 +405,10 @@ public abstract class SecondaryIndexOperationsHelper {
for (int i = 0; i <= numPrimaryKeys; i++) {
projectionList[i] = i;
}
- ICopyEvaluatorFactory[] castEvalFact = new ICopyEvaluatorFactory[] { new ColumnAccessEvalFactory(recordIdx) };
+ IScalarEvaluatorFactory[] castEvalFact = new IScalarEvaluatorFactory[] {
+ new ColumnAccessEvalFactory(recordIdx) };
IScalarEvaluatorFactory[] sefs = new IScalarEvaluatorFactory[1];
- sefs[0] = new LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.ScalarEvaluatorFactoryAdapter(
- castFuncDesc.createEvaluatorFactory(castEvalFact));
+ sefs[0] = castFuncDesc.createEvaluatorFactory(castEvalFact);
AssignRuntimeFactory castAssign = new AssignRuntimeFactory(outColumns, sefs, projectionList);
AlgebricksMetaOperatorDescriptor castRecAssignOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 1,
new IPushRuntimeFactory[] { castAssign }, new RecordDescriptor[] { enforcedRecDesc });
@@ -433,7 +430,7 @@ public abstract class SecondaryIndexOperationsHelper {
protected TreeIndexBulkLoadOperatorDescriptor createTreeIndexBulkLoadOp(JobSpecification spec,
int numSecondaryKeyFields, IIndexDataflowHelperFactory dataflowHelperFactory, float fillFactor)
- throws MetadataException, AlgebricksException {
+ throws MetadataException, AlgebricksException {
int[] fieldPermutation = new int[numSecondaryKeyFields + numPrimaryKeys + numFilterFields];
for (int i = 0; i < fieldPermutation.length; i++) {
fieldPermutation[i] = i;
@@ -450,19 +447,19 @@ public abstract class SecondaryIndexOperationsHelper {
public AlgebricksMetaOperatorDescriptor createFilterNullsSelectOp(JobSpecification spec, int numSecondaryKeyFields)
throws AlgebricksException {
- ICopyEvaluatorFactory[] andArgsEvalFactories = new ICopyEvaluatorFactory[numSecondaryKeyFields];
+ IScalarEvaluatorFactory[] andArgsEvalFactories = new IScalarEvaluatorFactory[numSecondaryKeyFields];
NotDescriptor notDesc = new NotDescriptor();
IsNullDescriptor isNullDesc = new IsNullDescriptor();
for (int i = 0; i < numSecondaryKeyFields; i++) {
// Access column i, and apply 'is not null'.
ColumnAccessEvalFactory columnAccessEvalFactory = new ColumnAccessEvalFactory(i);
- ICopyEvaluatorFactory isNullEvalFactory = isNullDesc
- .createEvaluatorFactory(new ICopyEvaluatorFactory[] { columnAccessEvalFactory });
- ICopyEvaluatorFactory notEvalFactory = notDesc
- .createEvaluatorFactory(new ICopyEvaluatorFactory[] { isNullEvalFactory });
+ IScalarEvaluatorFactory isNullEvalFactory = isNullDesc
+ .createEvaluatorFactory(new IScalarEvaluatorFactory[] { columnAccessEvalFactory });
+ IScalarEvaluatorFactory notEvalFactory = notDesc
+ .createEvaluatorFactory(new IScalarEvaluatorFactory[] { isNullEvalFactory });
andArgsEvalFactories[i] = notEvalFactory;
}
- ICopyEvaluatorFactory selectCond = null;
+ IScalarEvaluatorFactory selectCond = null;
if (numSecondaryKeyFields > 1) {
// Create conjunctive condition where all secondary index keys must
// satisfy 'is not null'.
@@ -471,9 +468,8 @@ public abstract class SecondaryIndexOperationsHelper {
} else {
selectCond = andArgsEvalFactories[0];
}
- StreamSelectRuntimeFactory select = new StreamSelectRuntimeFactory(
- new LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.ScalarEvaluatorFactoryAdapter(selectCond),
- null, AqlBinaryBooleanInspectorImpl.FACTORY, false, -1, null);
+ StreamSelectRuntimeFactory select = new StreamSelectRuntimeFactory(selectCond, null,
+ AqlBinaryBooleanInspectorImpl.FACTORY, false, -1, null);
AlgebricksMetaOperatorDescriptor asterixSelectOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 1,
new IPushRuntimeFactory[] { select }, new RecordDescriptor[] { secondaryRecDesc });
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, asterixSelectOp,
@@ -525,8 +521,7 @@ public abstract class SecondaryIndexOperationsHelper {
IScalarEvaluatorFactory[] sefs = new IScalarEvaluatorFactory[secondaryFieldAccessEvalFactories.length];
for (int i = 0; i < secondaryFieldAccessEvalFactories.length; ++i) {
- sefs[i] = new LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.ScalarEvaluatorFactoryAdapter(
- secondaryFieldAccessEvalFactories[i]);
+ sefs[i] = secondaryFieldAccessEvalFactories[i];
}
//add External RIDs to the projection list
for (int i = 0; i < numPrimaryKeys; i++) {
@@ -541,7 +536,7 @@ public abstract class SecondaryIndexOperationsHelper {
protected ExternalIndexBulkModifyOperatorDescriptor createExternalIndexBulkModifyOp(JobSpecification spec,
int numSecondaryKeyFields, IIndexDataflowHelperFactory dataflowHelperFactory, float fillFactor)
- throws MetadataException, AlgebricksException {
+ throws MetadataException, AlgebricksException {
int[] fieldPermutation = new int[numSecondaryKeyFields + numPrimaryKeys];
for (int i = 0; i < numSecondaryKeyFields + numPrimaryKeys; i++) {
fieldPermutation[i] = i;
@@ -549,8 +544,9 @@ public abstract class SecondaryIndexOperationsHelper {
// create a list of file ids
int numOfDeletedFiles = 0;
for (ExternalFile file : externalFiles) {
- if (file.getPendingOp() == ExternalFilePendingOp.PENDING_DROP_OP)
+ if (file.getPendingOp() == ExternalFilePendingOp.PENDING_DROP_OP) {
numOfDeletedFiles++;
+ }
}
int[] deletedFiles = new int[numOfDeletedFiles];
int i = 0;
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-app/src/main/java/org/apache/asterix/file/SecondaryInvertedIndexOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterix-app/src/main/java/org/apache/asterix/file/SecondaryInvertedIndexOperationsHelper.java b/asterix-app/src/main/java/org/apache/asterix/file/SecondaryInvertedIndexOperationsHelper.java
index 3521752..4b9eff7 100644
--- a/asterix-app/src/main/java/org/apache/asterix/file/SecondaryInvertedIndexOperationsHelper.java
+++ b/asterix-app/src/main/java/org/apache/asterix/file/SecondaryInvertedIndexOperationsHelper.java
@@ -43,7 +43,7 @@ import org.apache.hyracks.algebricks.core.jobgen.impl.ConnectorPolicyAssignmentP
import org.apache.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConfig;
import org.apache.hyracks.algebricks.data.ISerializerDeserializerProvider;
import org.apache.hyracks.algebricks.data.ITypeTraitProvider;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
import org.apache.hyracks.algebricks.runtime.operators.base.SinkRuntimeFactory;
import org.apache.hyracks.algebricks.runtime.operators.meta.AlgebricksMetaOperatorDescriptor;
@@ -112,7 +112,7 @@ public class SecondaryInvertedIndexOperationsHelper extends SecondaryIndexOperat
}
// Prepare record descriptor used in the assign op, and the optional
// select op.
- secondaryFieldAccessEvalFactories = new ICopyEvaluatorFactory[numSecondaryKeys + numFilterFields];
+ secondaryFieldAccessEvalFactories = new IScalarEvaluatorFactory[numSecondaryKeys + numFilterFields];
ISerializerDeserializer[] secondaryRecFields = new ISerializerDeserializer[numPrimaryKeys + numSecondaryKeys
+ numFilterFields];
ISerializerDeserializer[] enforcedRecFields = new ISerializerDeserializer[1 + numPrimaryKeys + numFilterFields];
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-app/src/test/resources/runtimets/results/string/substring-after-4/substring-after-4.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/string/substring-after-4/substring-after-4.1.adm b/asterix-app/src/test/resources/runtimets/results/string/substring-after-4/substring-after-4.1.adm
index 9406ef5..455e3da 100644
--- a/asterix-app/src/test/resources/runtimets/results/string/substring-after-4/substring-after-4.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/string/substring-after-4/substring-after-4.1.adm
@@ -1 +1 @@
-{ "result1": "HEllow", "result2": "HEllow", "result3": "", "result4": "", "result5": "" }
+{ "result1": "HEllow", "result2": null, "result3": null, "result4": "", "result5": null }
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-app/src/test/resources/runtimets/results/string/substring-before-3/substring-before-3.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/string/substring-before-3/substring-before-3.1.adm b/asterix-app/src/test/resources/runtimets/results/string/substring-before-3/substring-before-3.1.adm
index 9ce64e4..eba5495 100644
--- a/asterix-app/src/test/resources/runtimets/results/string/substring-before-3/substring-before-3.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/string/substring-before-3/substring-before-3.1.adm
@@ -1 +1 @@
-{ "result1": "", "result2": "", "result3": "", "result4": "", "result5": "" }
+{ "result1": "", "result2": null, "result3": null, "result4": "", "result5": null }
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java
index fd3d9e3..7f416c7 100755
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java
@@ -30,10 +30,12 @@ import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.EnumDeserializer;
import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+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.data.std.api.IDataOutputProvider;
+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;
@@ -42,23 +44,22 @@ public abstract class ExternalFunction implements IExternalFunction {
protected final IExternalFunctionInfo finfo;
protected final IFunctionFactory externalFunctionFactory;
protected final IExternalFunction externalFunction;
- protected final ICopyEvaluatorFactory[] evaluatorFactories;
- protected final IDataOutputProvider out;
- protected final ArrayBackedValueStorage inputVal = new ArrayBackedValueStorage();
+ protected final IScalarEvaluatorFactory[] evaluatorFactories;
+ protected final IPointable inputVal = new VoidPointable();
+ protected final ArrayBackedValueStorage resultBuffer = new ArrayBackedValueStorage();
protected final ArrayBackedValueStorage castBuffer = new ArrayBackedValueStorage();
- protected final ICopyEvaluator[] argumentEvaluators;
+ protected final IScalarEvaluator[] argumentEvaluators;
protected final JavaFunctionHelper functionHelper;
- public ExternalFunction(IExternalFunctionInfo finfo, ICopyEvaluatorFactory args[],
- IDataOutputProvider outputProvider) throws AlgebricksException {
+ public ExternalFunction(IExternalFunctionInfo finfo, IScalarEvaluatorFactory args[], IHyracksTaskContext context)
+ throws AlgebricksException {
this.finfo = finfo;
this.evaluatorFactories = args;
- this.out = outputProvider;
- argumentEvaluators = new ICopyEvaluator[args.length];
+ argumentEvaluators = new IScalarEvaluator[args.length];
for (int i = 0; i < args.length; i++) {
- argumentEvaluators[i] = args[i].createEvaluator(inputVal);
+ argumentEvaluators[i] = args[i].createScalarEvaluator(context);
}
- functionHelper = new JavaFunctionHelper(finfo, outputProvider);
+ functionHelper = new JavaFunctionHelper(finfo, resultBuffer);
String[] fnameComponents = finfo.getFunctionIdentifier().getName().split("#");
String functionLibary = fnameComponents[0];
@@ -85,8 +86,7 @@ public abstract class ExternalFunction implements IExternalFunction {
public void setArguments(IFrameTupleReference tuple) throws AlgebricksException, IOException, AsterixException {
for (int i = 0; i < evaluatorFactories.length; i++) {
- inputVal.reset();
- argumentEvaluators[i].evaluate(tuple);
+ argumentEvaluators[i].evaluate(tuple, inputVal);
// Type-cast the source array based on the input type that this function wants to receive.
ATypeTag targetTypeTag = finfo.getParamList().get(i).getTypeTag();
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionDescriptorProvider.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionDescriptorProvider.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionDescriptorProvider.java
index be9f9c1..877ce77 100755
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionDescriptorProvider.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionDescriptorProvider.java
@@ -25,7 +25,7 @@ import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicD
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
public class ExternalFunctionDescriptorProvider {
@@ -48,10 +48,10 @@ public class ExternalFunctionDescriptorProvider {
class ExternalScalarFunctionDescriptor extends AbstractScalarFunctionDynamicDescriptor implements IFunctionDescriptor {
private static final long serialVersionUID = 1L;
private final IFunctionInfo finfo;
- private ICopyEvaluatorFactory evaluatorFactory;
+ private IScalarEvaluatorFactory evaluatorFactory;
@Override
- public ICopyEvaluatorFactory createEvaluatorFactory(ICopyEvaluatorFactory[] args) throws AlgebricksException {
+ public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) throws AlgebricksException {
evaluatorFactory = new ExternalScalarFunctionEvaluatorFactory((IExternalFunctionInfo) finfo, args);
return evaluatorFactory;
}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
index e2cf013..3dea50c 100755
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
@@ -24,19 +24,19 @@ import org.apache.asterix.external.api.IFunctionHelper;
import org.apache.asterix.om.functions.IExternalFunctionInfo;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+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.data.std.api.IPointable;
import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
public class ExternalFunctionProvider {
public static IExternalFunction getExternalFunctionEvaluator(IExternalFunctionInfo finfo,
- ICopyEvaluatorFactory args[], IDataOutputProvider outputProvider) throws AlgebricksException {
+ IScalarEvaluatorFactory args[], IHyracksTaskContext context) throws AlgebricksException {
switch (finfo.getKind()) {
case SCALAR:
- return new ExternalScalarFunction(finfo, args, outputProvider);
+ return new ExternalScalarFunction(finfo, args, context);
case AGGREGATE:
case UNNEST:
throw new IllegalArgumentException(" UDF of kind" + finfo.getKind() + " not supported.");
@@ -46,10 +46,11 @@ public class ExternalFunctionProvider {
}
}
-class ExternalScalarFunction extends ExternalFunction implements IExternalScalarFunction, ICopyEvaluator {
- public ExternalScalarFunction(IExternalFunctionInfo finfo, ICopyEvaluatorFactory args[],
- IDataOutputProvider outputProvider) throws AlgebricksException {
- super(finfo, args, outputProvider);
+class ExternalScalarFunction extends ExternalFunction implements IExternalScalarFunction, IScalarEvaluator {
+
+ public ExternalScalarFunction(IExternalFunctionInfo finfo, IScalarEvaluatorFactory args[],
+ IHyracksTaskContext context) throws AlgebricksException {
+ super(finfo, args, context);
try {
initialize(functionHelper);
} catch (Exception e) {
@@ -58,11 +59,12 @@ class ExternalScalarFunction extends ExternalFunction implements IExternalScalar
}
@Override
- public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+ public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
try {
setArguments(tuple);
evaluate(functionHelper);
functionHelper.reset();
+ result.set(resultBuffer.getByteArray(), resultBuffer.getStartOffset(), resultBuffer.getLength());
} catch (Exception e) {
e.printStackTrace();
throw new AlgebricksException(e);
@@ -77,9 +79,9 @@ class ExternalScalarFunction extends ExternalFunction implements IExternalScalar
* or the result object is null we let Hyracks storage manager know
* we want to discard a null object
*/
- byte byteOutput = ((ArrayBackedValueStorage) out).getByteArray()[0];
+ byte byteOutput = resultBuffer.getByteArray()[0];
if (!argumentProvider.isValidResult() || byteOutput == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
- out.getDataOutput().writeByte(ATypeTag.SERIALIZED_NULL_TYPE_TAG);
+ resultBuffer.getDataOutput().writeByte(ATypeTag.SERIALIZED_NULL_TYPE_TAG);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java
index c7f98a8..7c1ce4b 100755
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java
@@ -20,25 +20,25 @@ package org.apache.asterix.external.library;
import org.apache.asterix.om.functions.IExternalFunctionInfo;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
-public class ExternalScalarFunctionEvaluatorFactory implements ICopyEvaluatorFactory {
+public class ExternalScalarFunctionEvaluatorFactory implements IScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
private final IExternalFunctionInfo finfo;
- private final ICopyEvaluatorFactory[] args;
+ private final IScalarEvaluatorFactory[] args;
- public ExternalScalarFunctionEvaluatorFactory(IExternalFunctionInfo finfo, ICopyEvaluatorFactory[] args)
+ public ExternalScalarFunctionEvaluatorFactory(IExternalFunctionInfo finfo, IScalarEvaluatorFactory[] args)
throws AlgebricksException {
this.finfo = finfo;
this.args = args;
}
@Override
- public ICopyEvaluator createEvaluator(IDataOutputProvider output) throws AlgebricksException {
- return (ExternalScalarFunction) ExternalFunctionProvider.getExternalFunctionEvaluator(finfo, args, output);
+ public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
+ return (ExternalScalarFunction) ExternalFunctionProvider.getExternalFunctionEvaluator(finfo, args, ctx);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/similarity/SimilarityMetricEditDistance.java
----------------------------------------------------------------------
diff --git a/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/similarity/SimilarityMetricEditDistance.java b/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/similarity/SimilarityMetricEditDistance.java
index ea57fd2..9dce89e 100644
--- a/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/similarity/SimilarityMetricEditDistance.java
+++ b/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/similarity/SimilarityMetricEditDistance.java
@@ -155,13 +155,12 @@ public class SimilarityMetricEditDistance implements IGenericSimilarityMetric {
}
// faster implementation for common case of string edit distance
- public int UTF8StringEditDistance(byte[] bytes, int fsStart, int ssStart) {
+ public int UTF8StringEditDistance(byte[] leftBytes, int fsStart, byte[] rightBytes, int ssStart) {
+ int fsLen = UTF8StringUtil.getStringLength(leftBytes, fsStart);
+ int ssLen = UTF8StringUtil.getStringLength(rightBytes, ssStart);
- int fsLen = UTF8StringUtil.getStringLength(bytes, fsStart);
- int ssLen = UTF8StringUtil.getStringLength(bytes, ssStart);
-
- int fsUtfLen = UTF8StringUtil.getUTFLength(bytes, fsStart);
- int ssUtfLen = UTF8StringUtil.getUTFLength(bytes, ssStart);
+ int fsUtfLen = UTF8StringUtil.getUTFLength(leftBytes, fsStart);
+ int ssUtfLen = UTF8StringUtil.getUTFLength(rightBytes, ssStart);
int fsMetaLen = UTF8StringUtil.getNumBytesToStoreLength(fsUtfLen);
int ssMetaLen = UTF8StringUtil.getNumBytesToStoreLength(ssUtfLen);
@@ -186,35 +185,30 @@ public class SimilarityMetricEditDistance implements IGenericSimilarityMetric {
int fsPos = fsDataStart;
for (int i = 1; i <= fsLen; i++) {
matrix[currRow][0] = i;
- char fsChar = Character.toLowerCase(UTF8StringUtil.charAt(bytes, fsPos));
-
+ char fsChar = Character.toLowerCase(UTF8StringUtil.charAt(leftBytes, fsPos));
int ssPos = ssDataStart;
for (int j = 1; j <= ssLen; j++) {
- char ssChar = Character.toLowerCase(UTF8StringUtil.charAt(bytes, ssPos));
+ char ssChar = Character.toLowerCase(UTF8StringUtil.charAt(rightBytes, ssPos));
matrix[currRow][j] = Math.min(Math.min(matrix[prevRow][j] + 1, matrix[currRow][j - 1] + 1),
matrix[prevRow][j - 1] + (fsChar == ssChar ? 0 : 1));
- ssPos += UTF8StringUtil.charSize(bytes, ssPos);
+ ssPos += UTF8StringUtil.charSize(rightBytes, ssPos);
}
-
- fsPos += UTF8StringUtil.charSize(bytes, fsPos);
-
+ fsPos += UTF8StringUtil.charSize(leftBytes, fsPos);
int tmp = currRow;
currRow = prevRow;
prevRow = tmp;
}
-
return matrix[prevRow][ssLen];
}
- public int UTF8StringEditDistance(byte[] bytes, int fsStart, int ssStart, int edThresh) {
+ public int UTF8StringEditDistance(byte[] bytesLeft, int fsStart, byte[] bytesRight, int ssStart, int edThresh) {
+ int fsStrLen = UTF8StringUtil.getStringLength(bytesLeft, fsStart);
+ int ssStrLen = UTF8StringUtil.getStringLength(bytesRight, ssStart);
- int fsStrLen = UTF8StringUtil.getStringLength(bytes, fsStart);
- int ssStrLen = UTF8StringUtil.getStringLength(bytes, ssStart);
-
- int fsUtfLen = UTF8StringUtil.getUTFLength(bytes, fsStart);
- int ssUtfLen = UTF8StringUtil.getUTFLength(bytes, ssStart);
+ int fsUtfLen = UTF8StringUtil.getUTFLength(bytesLeft, fsStart);
+ int ssUtfLen = UTF8StringUtil.getUTFLength(bytesRight, ssStart);
int fsMetaLen = UTF8StringUtil.getNumBytesToStoreLength(fsUtfLen);
int ssMetaLen = UTF8StringUtil.getNumBytesToStoreLength(ssUtfLen);
@@ -231,22 +225,22 @@ public class SimilarityMetricEditDistance implements IGenericSimilarityMetric {
int fsPos = fsStart + fsMetaLen;
int fsEnd = fsPos + fsUtfLen;;
while (fsPos < fsEnd) {
- char c = Character.toLowerCase(UTF8StringUtil.charAt(bytes, fsPos));
+ char c = Character.toLowerCase(UTF8StringUtil.charAt(bytesLeft, fsPos));
if (c < 128) {
fsLcCount[c]++;
}
- fsPos += UTF8StringUtil.charSize(bytes, fsPos);
+ fsPos += UTF8StringUtil.charSize(bytesLeft, fsPos);
}
// compute letter counts for second string
int ssPos = ssStart + ssMetaLen;
int ssEnd = ssPos + ssUtfLen;
while (ssPos < ssEnd) {
- char c = Character.toLowerCase(UTF8StringUtil.charAt(bytes, ssPos));
+ char c = Character.toLowerCase(UTF8StringUtil.charAt(bytesRight, ssPos));
if (c < 128) {
ssLcCount[c]++;
}
- ssPos += UTF8StringUtil.charSize(bytes, ssPos);
+ ssPos += UTF8StringUtil.charSize(bytesRight, ssPos);
}
// apply filter
@@ -266,7 +260,7 @@ public class SimilarityMetricEditDistance implements IGenericSimilarityMetric {
}
}
- int ed = UTF8StringEditDistance(bytes, fsStart, ssStart);
+ int ed = UTF8StringEditDistance(bytesLeft, fsStart, bytesRight, ssStart);
if (ed > edThresh) {
return -1;
} else {
@@ -275,15 +269,16 @@ public class SimilarityMetricEditDistance implements IGenericSimilarityMetric {
}
// checks whether the first string contains a similar string to the second string
- public int UTF8StringEditDistanceContains(byte[] bytes, int stringStart, int patternStart, int edThresh) {
+ public int UTF8StringEditDistanceContains(byte[] strBytes, int stringStart, byte[] pattenBytes, int patternStart,
+ int edThresh) {
- int stringLen = UTF8StringUtil.getStringLength(bytes, stringStart);
- int patternLen = UTF8StringUtil.getStringLength(bytes, patternStart);
+ int stringLen = UTF8StringUtil.getStringLength(strBytes, stringStart);
+ int patternLen = UTF8StringUtil.getStringLength(pattenBytes, patternStart);
- int stringUTFLen = UTF8StringUtil.getUTFLength(bytes, stringStart);
+ int stringUTFLen = UTF8StringUtil.getUTFLength(strBytes, stringStart);
int stringMetaLen = UTF8StringUtil.getNumBytesToStoreLength(stringUTFLen);
- int patternUTFLen = UTF8StringUtil.getUTFLength(bytes, patternStart);
+ int patternUTFLen = UTF8StringUtil.getUTFLength(pattenBytes, patternStart);
int patternMetaLen = UTF8StringUtil.getNumBytesToStoreLength(patternUTFLen);
// reuse existing matrix if possible
@@ -292,7 +287,7 @@ public class SimilarityMetricEditDistance implements IGenericSimilarityMetric {
matrix = new int[rows][cols];
}
- int stringDataStart = stringStart + stringMetaLen;
+ int stringDataStart = stringStart + stringMetaLen;
int patternDataStart = patternStart + patternMetaLen;
// init matrix
@@ -307,24 +302,20 @@ public class SimilarityMetricEditDistance implements IGenericSimilarityMetric {
int stringPos = stringDataStart;
for (int i = 1; i <= stringLen; i++) {
matrix[currRow][0] = 0;
- char stringChar = Character.toLowerCase(UTF8StringUtil.charAt(bytes, stringPos));
+ char stringChar = Character.toLowerCase(UTF8StringUtil.charAt(strBytes, stringPos));
int patternPos = patternDataStart;
for (int j = 1; j <= patternLen; j++) {
- char patternChar = Character.toLowerCase(UTF8StringUtil.charAt(bytes, patternPos));
-
+ char patternChar = Character.toLowerCase(UTF8StringUtil.charAt(pattenBytes, patternPos));
matrix[currRow][j] = Math.min(Math.min(matrix[prevRow][j] + 1, matrix[currRow][j - 1] + 1),
matrix[prevRow][j - 1] + (stringChar == patternChar ? 0 : 1));
-
- patternPos += UTF8StringUtil.charSize(bytes, patternPos);
-
+ patternPos += UTF8StringUtil.charSize(pattenBytes, patternPos);
if (j == patternLen && matrix[currRow][patternLen] < minEd) {
minEd = matrix[currRow][patternLen];
}
}
- stringPos += UTF8StringUtil.charSize(bytes, stringPos);
-
+ stringPos += UTF8StringUtil.charSize(strBytes, stringPos);
int tmp = currRow;
currRow = prevRow;
prevRow = tmp;
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java b/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java
index 2b05761..59e669a 100644
--- a/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java
+++ b/asterix-om/src/main/java/org/apache/asterix/builders/AbstractListBuilder.java
@@ -77,13 +77,15 @@ public abstract class AbstractListBuilder implements IAsterixListBuilder {
@Override
public void addItem(IValueReference item) throws HyracksDataException {
try {
- if (!fixedSize && (item.getByteArray()[0] != ATypeTag.SERIALIZED_NULL_TYPE_TAG || itemTypeTag == ATypeTag.ANY))
+ if (!fixedSize && (item.getByteArray()[item.getStartOffset()] != ATypeTag.SERIALIZED_NULL_TYPE_TAG
+ || itemTypeTag == ATypeTag.ANY)) {
this.offsets.add(outputStorage.getLength());
- if (itemTypeTag == ATypeTag.ANY
- || (itemTypeTag == ATypeTag.NULL && item.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG)) {
+ }
+ if (itemTypeTag == ATypeTag.ANY || (itemTypeTag == ATypeTag.NULL
+ && item.getByteArray()[item.getStartOffset()] == ATypeTag.SERIALIZED_NULL_TYPE_TAG)) {
this.numberOfItems++;
this.outputStream.write(item.getByteArray(), item.getStartOffset(), item.getLength());
- } else if (item.getByteArray()[0] != ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
+ } else if (item.getByteArray()[item.getStartOffset()] != ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
this.numberOfItems++;
this.outputStream.write(item.getByteArray(), item.getStartOffset() + 1, item.getLength() - 1);
}
@@ -95,10 +97,12 @@ public abstract class AbstractListBuilder implements IAsterixListBuilder {
@Override
public void write(DataOutput out, boolean writeTypeTag) throws HyracksDataException {
try {
- if (!fixedSize)
+ if (!fixedSize) {
metadataInfoSize += offsets.size() * 4;
- if (offsetArray == null || offsetArray.length < metadataInfoSize)
+ }
+ if (offsetArray == null || offsetArray.length < metadataInfoSize) {
offsetArray = new byte[metadataInfoSize];
+ }
SerializerDeserializerUtil.writeIntToByteArray(offsetArray,
headerSize + metadataInfoSize + outputStorage.getLength(), offsetPosition);
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/ABinaryComparator.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/ABinaryComparator.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/ABinaryComparator.java
index c69d4cd..ec337eb 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/ABinaryComparator.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/ABinaryComparator.java
@@ -32,7 +32,8 @@ public abstract class ABinaryComparator implements IBinaryComparator {
public static ComparableResultCode isComparable(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
// NULL Check. If one type is NULL, then we return NULL
- if (b1[s1] == ATypeTag.NULL.serialize() || b2[s2] == ATypeTag.NULL.serialize() || b1[s1] == 0 || b1[s2] == 0) {
+ if (b1[s1] == ATypeTag.SERIALIZED_NULL_TYPE_TAG || b2[s2] == ATypeTag.SERIALIZED_NULL_TYPE_TAG || b1[s1] == 0
+ || b2[s2] == 0) {
return ComparableResultCode.UNKNOWN;
}
@@ -49,6 +50,7 @@ public abstract class ABinaryComparator implements IBinaryComparator {
}
+ @Override
public abstract int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) throws HyracksDataException;
}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
index fba898d..364b2d6 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
@@ -118,10 +118,6 @@ public class AOrderedListSerializerDeserializer implements ISerializerDeserializ
return AInt32SerializerDeserializer.getInt(serOrderedList, offset + 1);
}
- public static int getNumberOfItems(byte[] serOrderedList) {
- return getNumberOfItems(serOrderedList, 0);
- }
-
public static int getNumberOfItems(byte[] serOrderedList, int offset) {
if (serOrderedList[offset] == ATypeTag.ORDEREDLIST.serialize())
// 6 = tag (1) + itemTag (1) + list size (4)
@@ -144,8 +140,4 @@ public class AOrderedListSerializerDeserializer implements ISerializerDeserializ
return -1;
}
- public static int getItemOffset(byte[] serOrderedList, int itemIndex) throws AsterixException {
- return getItemOffset(serOrderedList, 0, itemIndex);
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/0ae30836/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java
----------------------------------------------------------------------
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java
index 53943b8..b65a12d 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java
@@ -105,10 +105,12 @@ public class ARecordSerializerDeserializer implements ISerializerDeserializer<AR
} else {
if (recordType.isOpen()) {
isExpanded = in.readBoolean();
- if (isExpanded)
+ if (isExpanded) {
in.readInt(); // openPartOffset
- } else
+ }
+ } else {
isExpanded = false;
+ }
}
IAObject[] closedFields = null;
if (numberOfSchemaFields > 0) {
@@ -232,57 +234,64 @@ public class ARecordSerializerDeserializer implements ISerializerDeserializer<AR
if (nullBitmapSize > 0) {
// 14 = tag (1) + record Size (4) + isExpanded (1) +
// offset of openPart (4) + number of closed fields (4)
- if ((serRecord[14 + offset + fieldId / 8] & (1 << (7 - (fieldId % 8)))) == 0)
+ if ((serRecord[14 + offset + fieldId / 8] & (1 << (7 - (fieldId % 8)))) == 0) {
// the field value is null
return 0;
+ }
}
- return AInt32SerializerDeserializer.getInt(serRecord, 14 + offset + nullBitmapSize + (4 * fieldId));
+ return offset + AInt32SerializerDeserializer.getInt(serRecord,
+ 14 + offset + nullBitmapSize + (4 * fieldId));
} else {
if (nullBitmapSize > 0) {
// 9 = tag (1) + record Size (4) + isExpanded (1) +
// number of closed fields (4)
- if ((serRecord[10 + offset + fieldId / 8] & (1 << (7 - (fieldId % 8)))) == 0)
+ if ((serRecord[10 + offset + fieldId / 8] & (1 << (7 - (fieldId % 8)))) == 0) {
// the field value is null
return 0;
+ }
}
- return AInt32SerializerDeserializer.getInt(serRecord, 10 + offset + nullBitmapSize + (4 * fieldId));
+ return offset + AInt32SerializerDeserializer.getInt(serRecord,
+ 10 + offset + nullBitmapSize + (4 * fieldId));
}
- } else
+ } else {
return -1;
+ }
} else {
- if (serRecord[0 + offset] == ATypeTag.RECORD.serialize()) {
- if (nullBitmapSize > 0)
+ if (serRecord[offset] == ATypeTag.SERIALIZED_RECORD_TYPE_TAG) {
+ if (nullBitmapSize > 0) {
// 9 = tag (1) + record Size (4) + number of closed fields
// (4)
- if ((serRecord[9 + offset + fieldId / 8] & (1 << (7 - (fieldId % 8)))) == 0)
+ if ((serRecord[9 + offset + fieldId / 8] & (1 << (7 - (fieldId % 8)))) == 0) {
// the field value is null
return 0;
- return AInt32SerializerDeserializer.getInt(serRecord, 9 + offset + nullBitmapSize + (4 * fieldId));
- } else
+ }
+ }
+ return offset
+ + AInt32SerializerDeserializer.getInt(serRecord, 9 + offset + nullBitmapSize + (4 * fieldId));
+ } else {
return -1;
+ }
}
}
- public static final int getFieldOffsetById(byte[] serRecord, int fieldId, int nullBitmapSize, boolean isOpen) {
- return getFieldOffsetById(serRecord, 0, fieldId, nullBitmapSize, isOpen);
- }
-
- public static final int getFieldOffsetByName(byte[] serRecord, byte[] fieldName) throws HyracksDataException {
-
+ public static final int getFieldOffsetByName(byte[] serRecord, int start, int len, byte[] fieldName, int nstart)
+ throws HyracksDataException {
int openPartOffset = 0;
- if (serRecord[0] == ATypeTag.RECORD.serialize())
+ if (serRecord[start] == ATypeTag.SERIALIZED_RECORD_TYPE_TAG) {
// 5 is the index of the byte that determines whether the record is
// expanded or not, i.e. it has an open part.
- if (serRecord[5] == 1) { // true
+ if (serRecord[start + 5] == 1) { // true
// 6 is the index of the first byte of the openPartOffset value.
- openPartOffset = AInt32SerializerDeserializer.getInt(serRecord, 6);
- } else
+ openPartOffset = start + AInt32SerializerDeserializer.getInt(serRecord, start + 6);
+ } else {
return -1; // this record does not have an open part
- else
+ }
+ } else {
return -1; // this record does not have an open part
+ }
int numberOfOpenField = AInt32SerializerDeserializer.getInt(serRecord, openPartOffset);
- int fieldUtflength = UTF8StringUtil.getUTFLength(fieldName, 1);
+ int fieldUtflength = UTF8StringUtil.getUTFLength(fieldName, nstart + 1);
int fieldUtfMetaLen = UTF8StringUtil.getNumBytesToStoreLength(fieldUtflength);
IBinaryHashFunction utf8HashFunction = AqlBinaryHashFunctionFactoryProvider.UTF8STRING_POINTABLE_INSTANCE
@@ -291,7 +300,7 @@ public class ARecordSerializerDeserializer implements ISerializerDeserializer<AR
IBinaryComparator utf8BinaryComparator = AqlBinaryComparatorFactoryProvider.UTF8STRING_POINTABLE_INSTANCE
.createBinaryComparator();
- int fieldNameHashCode = utf8HashFunction.hash(fieldName, 1, fieldUtflength + fieldUtfMetaLen);
+ int fieldNameHashCode = utf8HashFunction.hash(fieldName, nstart + 1, fieldUtflength + fieldUtfMetaLen);
int offset = openPartOffset + 4;
int fieldOffset = -1;
@@ -303,29 +312,32 @@ public class ARecordSerializerDeserializer implements ISerializerDeserializer<AR
// 8 = hash code (4) + offset to the (name + tag + value ) of the field (4).
int h = AInt32SerializerDeserializer.getInt(serRecord, offset + (8 * mid));
if (h == fieldNameHashCode) {
- fieldOffset = AInt32SerializerDeserializer.getInt(serRecord, offset + (8 * mid) + 4);
+ fieldOffset = start + AInt32SerializerDeserializer.getInt(serRecord, offset + (8 * mid) + 4);
// the utf8 comparator do not require to put the precise length, we can just pass a estimated limit.
- if (utf8BinaryComparator.compare(serRecord, fieldOffset, serRecord.length, fieldName, 1,
- fieldUtflength + fieldUtfMetaLen) == 0)
+ if (utf8BinaryComparator.compare(serRecord, fieldOffset, len, fieldName, nstart + 1,
+ fieldUtflength + fieldUtfMetaLen) == 0) {
// since they are equal, we can directly use the meta length and the utf length.
return fieldOffset + fieldUtfMetaLen + fieldUtflength;
- else { // this else part has not been tested yet
+ } else { // this else part has not been tested yet
for (int j = mid + 1; j < numberOfOpenField; j++) {
h = AInt32SerializerDeserializer.getInt(serRecord, offset + (8 * j));
if (h == fieldNameHashCode) {
- fieldOffset = AInt32SerializerDeserializer.getInt(serRecord, offset + (8 * j) + 4);
- if (utf8BinaryComparator.compare(serRecord, fieldOffset, serRecord.length, fieldName, 1,
- fieldUtflength) == 0)
+ fieldOffset = start + AInt32SerializerDeserializer.getInt(serRecord, offset + (8 * j) + 4);
+ if (utf8BinaryComparator.compare(serRecord, fieldOffset, len, fieldName, nstart + 1,
+ fieldUtflength) == 0) {
return fieldOffset + fieldUtfMetaLen + fieldUtflength;
- } else
+ }
+ } else {
break;
+ }
}
}
}
- if (fieldNameHashCode > h)
+ if (fieldNameHashCode > h) {
low = mid + 1;
- else
+ } else {
high = mid - 1;
+ }
}
return -1; // no field with this name.