This is an automated email from the ASF dual-hosted git repository.

mhubail pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 8b6b3be27fa75d8048ad819ad29711ecf69a5983
Merge: 0f41f171d2 8ffe8eedca
Author: Ian Maxon <[email protected]>
AuthorDate: Wed May 8 11:24:05 2024 -0700

    Merge branch 'gerrit/trinity' into 'master'
    
    Change-Id: I1850f4af7fcaca4649d503cbe64f6f33a853a524

 .../apache/asterix/translator/ClientRequest.java   |   5 +-
 .../SqlppExpressionToPlanTranslator.java           |  12 +-
 asterixdb/asterix-app/pom.xml                      |   1 +
 .../apache/asterix/api/common/APIFramework.java    |   2 +-
 .../app/resource/OperatorResourcesComputer.java    |  71 +++-
 .../org/apache/asterix/utils/ResourceUtils.java    |  25 +-
 .../app/resource/PlanStagesGeneratorTest.java      |   2 +-
 .../asterix/runtime/PartitionManagerTest.java      |   2 +-
 .../aggregate-sql/median/median.01.ddl.sqlpp       |  17 +-
 .../aggregate-sql/median/median.02.update.sqlpp    |  34 +-
 .../aggregate-sql/median/median.03.query.sqlpp     |  10 +-
 .../aggregate-sql/median/median.04.query.sqlpp     |  10 +-
 .../aggregate-sql/median/median.05.query.sqlpp     |  11 +-
 .../aggregate-sql/median/median.06.query.sqlpp     |  11 +-
 .../aggregate-sql/median/median.07.query.sqlpp     |  11 +-
 .../aggregate-sql/median/median.08.query.sqlpp     |  11 +-
 .../aggregate-sql/median/median.09.query.sqlpp     |  11 +-
 .../aggregate-sql/median/median.10.query.sqlpp     |  13 +-
 .../aggregate-sql/median/median.11.query.sqlpp     |  13 +-
 .../aggregate-sql/median/median.99.ddl.sqlpp       |  10 +-
 .../results/aggregate-sql/median/median.03.adm     |   1 +
 .../results/aggregate-sql/median/median.04.adm     |   1 +
 .../results/aggregate-sql/median/median.05.adm     |   1 +
 .../results/aggregate-sql/median/median.06.adm     |   1 +
 .../results/aggregate-sql/median/median.07.adm     |   1 +
 .../results/aggregate-sql/median/median.08.adm     |   1 +
 .../results/aggregate-sql/median/median.09.adm     |   1 +
 .../results/aggregate-sql/median/median.10.adm     |  15 +
 .../results/aggregate-sql/median/median.11.adm     |   1 +
 .../asterix/common/config/CompilerProperties.java  |   5 +
 .../common/config/OptimizationConfUtil.java        |   2 +-
 .../src/main/markdown/builtins/9_aggregate_sql.md  |  91 +++--
 .../asterix-doc/src/main/markdown/sqlpp/3_query.md |  13 +-
 .../src/main/markdown/sqlpp/4_windowfunctions.md   |   4 +-
 .../input/record/reader/aws/AwsS3InputStream.java  |   8 +-
 .../asterix/om/functions/BuiltinFunctions.java     |  47 +++
 .../typecomputer/impl/LocalMedianTypeComputer.java |  44 +++
 .../test/om/typecomputer/TypeComputerTest.java     |   2 +
 .../scalar/ScalarSqlMedianAggregateDescriptor.java |  60 ++++
 .../std/AbstractLocalMedianAggregateFunction.java  | 176 ++++++++++
 .../std/AbstractMedianAggregateFunction.java       | 380 +++++++++++++++++++++
 .../std/GlobalSqlMedianAggregateDescriptor.java    |  54 +++
 .../std/GlobalSqlMedianAggregateFunction.java      |  51 +++
 .../IntermediateSqlMedianAggregateDescriptor.java  |  54 +++
 .../IntermediateSqlMedianAggregateFunction.java    |  50 +++
 .../std/LocalSqlMedianAggregateDescriptor.java     |  75 ++++
 .../std/LocalSqlMedianAggregateFunction.java       |  50 +++
 .../std/SqlMedianAggregateDescriptor.java          |  77 +++++
 .../aggregates/std/SqlMedianAggregateFunction.java |  85 +++++
 .../runtime/functions/FunctionCollection.java      |  10 +
 .../runtime/functions/FunctionTypeInferers.java    |   3 +
 asterixdb/pom.xml                                  |   1 +
 .../hyracks/api/context/IHyracksJobletContext.java |   2 +
 ...utChannel.java => FileNetworkInputChannel.java} |  57 ++--
 .../hyracks/comm/channels/NetworkInputChannel.java |   4 +-
 .../java/org/apache/hyracks/control/nc/Joblet.java |   7 +
 .../hyracks/control/nc/net/NetworkManager.java     |  45 ++-
 .../control/nc/partitions/JobFileState.java        |  92 +++++
 .../nc/partitions/MaterializedPartition.java       |  43 +--
 .../control/nc/partitions/PartitionFileReader.java |  91 +++++
 .../nc/partitions/PartitionFileReaderUtil.java     |  58 ++++
 .../control/nc/partitions/PartitionManager.java    |  23 ++
 .../hyracks/control/nc/service/NCService.java      |  17 +-
 .../hyracks/control/nc/service/NCServiceTest.java  |   4 +-
 .../hyracks/dataflow/common/io/RunFileReader.java  |   4 +
 .../storage/common/buffercache/IRateLimiter.java   |   2 +-
 .../common/buffercache/NoOpRateLimiter.java        |   2 +-
 .../common/buffercache/SleepRateLimiter.java       |   5 +-
 .../hyracks/test/support/TestJobletContext.java    |   7 +
 .../am/lsm/btree/LSMBTreeMergeFailTest.java        |   4 -
 .../lsm/btree/LSMBTreePageWriteCallbackTest.java   |   4 +-
 .../storage/am/lsm/btree/impl/TestLsmBtree.java    |  16 +-
 hyracks-fullstack/pom.xml                          |   3 +-
 73 files changed, 1869 insertions(+), 268 deletions(-)

diff --cc 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
index 16f922f6d7,1237551a20..47498ead58
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
@@@ -341,8 -339,7 +341,8 @@@ public class APIFramework 
                      final AlgebricksAbsolutePartitionConstraint jobLocations =
                              getJobLocations(spec, nodeJobTracker, 
computationLocations);
                      final IClusterCapacity jobRequiredCapacity =
-                             ResourceUtils.getRequiredCapacity(plan, 
jobLocations, physOptConf);
+                             ResourceUtils.getRequiredCapacity(plan, 
jobLocations, physOptConf, compilerProperties);
 +                    addRuntimeMemoryOverhead(jobRequiredCapacity, 
compilerProperties);
                      spec.setRequiredClusterCapacity(jobRequiredCapacity);
                  }
              }
diff --cc 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
index edd25bf0f3,6d9a158f85..042516e0c9
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
@@@ -311,11 -297,8 +311,16 @@@ public class CompilerProperties extend
          return queryPlanShapeMode;
      }
  
+     public int getSortMemoryFrames() {
+         int numFrames = (int) getSortMemorySize() / getFrameSize();
+         return Math.max(numFrames, 
OptimizationConfUtil.MIN_FRAME_LIMIT_FOR_SORT);
+     }
++
 +    public boolean isColumnFilter() {
 +        return accessor.getBoolean(Option.COMPILER_COLUMN_FILTER);
 +    }
 +
 +    public int getRuntimeMemoryOverheadPercentage() {
 +        return accessor.getInt(Option.COMPILER_RUNTIME_MEMORY_OVERHEAD);
 +    }
  }
diff --cc 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
index f2ede19c8f,0f7f71acff..7a1bdad9cb
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
@@@ -49,11 -49,11 +50,12 @@@ public class AwsS3InputStream extends A
      // Configuration
      private final String bucket;
      private final S3Client s3Client;
+     private ResponseInputStream<?> s3InStream;
      private static final int MAX_RETRIES = 5; // We will retry 5 times in 
case of internal error from AWS S3 service
  
 -    public AwsS3InputStream(Map<String, String> configuration, List<String> 
filePaths) throws HyracksDataException {
 -        super(configuration, filePaths);
 +    public AwsS3InputStream(Map<String, String> configuration, List<String> 
filePaths,
 +            IExternalFilterValueEmbedder valueEmbedder) throws 
HyracksDataException {
 +        super(configuration, filePaths, valueEmbedder);
          this.s3Client = buildAwsS3Client(configuration);
          this.bucket = 
configuration.get(ExternalDataConstants.CONTAINER_NAME_FIELD_NAME);
      }
diff --cc 
asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index 255af53dfe,08414c6d39..c65cf38c98
--- 
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
@@@ -197,536 -204,778 +198,544 @@@ public class BuiltinFunctions 
  
      // array functions
      public static final FunctionIdentifier ARRAY_REMOVE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-remove", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("array-remove", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier ARRAY_PUT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "array-put", 
FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("array-put", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier ARRAY_PREPEND =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-prepend", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("array-prepend", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier ARRAY_APPEND =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-append", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("array-append", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier ARRAY_INSERT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-insert", FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier ARRAY_POSITION =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-position", 2);
 -    public static final FunctionIdentifier ARRAY_REPEAT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-repeat", 2);
 -    public static final FunctionIdentifier ARRAY_REVERSE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-reverse", 1);
 -    public static final FunctionIdentifier ARRAY_CONTAINS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-contains", 2);
 -    public static final FunctionIdentifier ARRAY_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-distinct", 1);
 -    public static final FunctionIdentifier ARRAY_SORT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-sort", 1);
 +            FunctionConstants.newAsterix("array-insert", 
FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier ARRAY_POSITION = 
FunctionConstants.newAsterix("array-position", 2);
 +    public static final FunctionIdentifier ARRAY_REPEAT = 
FunctionConstants.newAsterix("array-repeat", 2);
 +    public static final FunctionIdentifier ARRAY_REVERSE = 
FunctionConstants.newAsterix("array-reverse", 1);
 +    public static final FunctionIdentifier ARRAY_CONTAINS = 
FunctionConstants.newAsterix("array-contains", 2);
 +    public static final FunctionIdentifier ARRAY_DISTINCT = 
FunctionConstants.newAsterix("array-distinct", 1);
 +    public static final FunctionIdentifier ARRAY_SORT = 
FunctionConstants.newAsterix("array-sort", 1);
      public static final FunctionIdentifier ARRAY_UNION =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-union", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("array-union", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier ARRAY_INTERSECT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-intersect", FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier ARRAY_IFNULL =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-ifnull", 1);
 +            FunctionConstants.newAsterix("array-intersect", 
FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier ARRAY_IFNULL = 
FunctionConstants.newAsterix("array-ifnull", 1);
      public static final FunctionIdentifier ARRAY_CONCAT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-concat", FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier ARRAY_RANGE_WITHOUT_STEP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-range", 2);
 -    public static final FunctionIdentifier ARRAY_RANGE_WITH_STEP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-range", 3);
 -    public static final FunctionIdentifier ARRAY_FLATTEN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-flatten", 2);
 +            FunctionConstants.newAsterix("array-concat", 
FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier ARRAY_RANGE_WITHOUT_STEP = 
FunctionConstants.newAsterix("array-range", 2);
 +    public static final FunctionIdentifier ARRAY_RANGE_WITH_STEP = 
FunctionConstants.newAsterix("array-range", 3);
 +    public static final FunctionIdentifier ARRAY_FLATTEN = 
FunctionConstants.newAsterix("array-flatten", 2);
      public static final FunctionIdentifier ARRAY_REPLACE_WITHOUT_MAXIMUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-replace", 3);
 +            FunctionConstants.newAsterix("array-replace", 3);
      public static final FunctionIdentifier ARRAY_REPLACE_WITH_MAXIMUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-replace", 4);
 +            FunctionConstants.newAsterix("array-replace", 4);
      public static final FunctionIdentifier ARRAY_SYMDIFF =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-symdiff", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("array-symdiff", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier ARRAY_SYMDIFFN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-symdiffn", FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier ARRAY_STAR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-star", 1);
 +            FunctionConstants.newAsterix("array-symdiffn", 
FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier ARRAY_STAR = 
FunctionConstants.newAsterix("array-star", 1);
      public static final FunctionIdentifier ARRAY_SLICE_WITHOUT_END_POSITION =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-slice", 2);
 +            FunctionConstants.newAsterix("array-slice", 2);
      public static final FunctionIdentifier ARRAY_SLICE_WITH_END_POSITION =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-slice", 3);
 -    public static final FunctionIdentifier ARRAY_EXCEPT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-except", 2);
 -    public static final FunctionIdentifier ARRAY_SWAP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-swap", 3);
 -    public static final FunctionIdentifier ARRAY_MOVE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-move", 3);
 -    public static final FunctionIdentifier ARRAY_BINARY_SEARCH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"array-binary-search", 2);
 +            FunctionConstants.newAsterix("array-slice", 3);
 +    public static final FunctionIdentifier ARRAY_EXCEPT = 
FunctionConstants.newAsterix("array-except", 2);
 +    public static final FunctionIdentifier ARRAY_SWAP = 
FunctionConstants.newAsterix("array-swap", 3);
 +    public static final FunctionIdentifier ARRAY_MOVE = 
FunctionConstants.newAsterix("array-move", 3);
 +    public static final FunctionIdentifier ARRAY_BINARY_SEARCH = 
FunctionConstants.newAsterix("array-binary-search", 2);
  
      // objects
 -    public static final FunctionIdentifier RECORD_MERGE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-merge", 2);
 +    public static final FunctionIdentifier RECORD_MERGE = 
FunctionConstants.newAsterix("object-merge", 2);
      public static final FunctionIdentifier RECORD_MERGE_IGNORE_DUPLICATES =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-merge-ignore-duplicates", 2);
 +            FunctionConstants.newAsterix("object-merge-ignore-duplicates", 2);
      public static final FunctionIdentifier RECORD_CONCAT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-concat", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("object-concat", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier RECORD_CONCAT_STRICT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-concat-strict", FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier REMOVE_FIELDS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-remove-fields", 2);
 -    public static final FunctionIdentifier ADD_FIELDS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-add-fields", 2);
 -
 -    public static final FunctionIdentifier CLOSED_RECORD_CONSTRUCTOR = new 
FunctionIdentifier(
 -            FunctionConstants.ASTERIX_NS, "closed-object-constructor", 
FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("object-concat-strict", 
FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier REMOVE_FIELDS = 
FunctionConstants.newAsterix("object-remove-fields", 2);
 +    public static final FunctionIdentifier ADD_FIELDS = 
FunctionConstants.newAsterix("object-add-fields", 2);
 +
 +    public static final FunctionIdentifier CLOSED_RECORD_CONSTRUCTOR =
 +            FunctionConstants.newAsterix("closed-object-constructor", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier OPEN_RECORD_CONSTRUCTOR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"open-object-constructor", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("open-object-constructor", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier FIELD_ACCESS_BY_INDEX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"field-access-by-index", 2);
 +            FunctionConstants.newAsterix("field-access-by-index", 2);
      public static final FunctionIdentifier FIELD_ACCESS_BY_NAME =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"field-access-by-name", 2);
 -    public static final FunctionIdentifier FIELD_ACCESS_NESTED =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"field-access-nested", 2);
 -    public static final FunctionIdentifier GET_RECORD_FIELDS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"get-object-fields", 1);
 +            FunctionConstants.newAsterix("field-access-by-name", 2);
 +    public static final FunctionIdentifier FIELD_ACCESS_NESTED = 
FunctionConstants.newAsterix("field-access-nested", 2);
 +    public static final FunctionIdentifier GET_RECORD_FIELDS = 
FunctionConstants.newAsterix("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);
 +            FunctionConstants.newAsterix("get-object-field-value", 2);
 +    public static final FunctionIdentifier RECORD_LENGTH = 
FunctionConstants.newAsterix("object-length", 1);
 +    public static final FunctionIdentifier RECORD_NAMES = 
FunctionConstants.newAsterix("object-names", 1);
      public static final FunctionIdentifier RECORD_PAIRS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-pairs", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("object-pairs", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier GEOMETRY_CONSTRUCTOR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"st-geom-from-geojson", FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier RECORD_REMOVE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-remove", 2);
 -    public static final FunctionIdentifier RECORD_RENAME =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-rename", 3);
 -    public static final FunctionIdentifier RECORD_UNWRAP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-unwrap", 1);
 -    public static final FunctionIdentifier RECORD_REPLACE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-replace", 3);
 -    public static final FunctionIdentifier RECORD_ADD =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-add", 3);
 -    public static final FunctionIdentifier RECORD_PUT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-put", 3);
 -    public static final FunctionIdentifier RECORD_VALUES =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"object-values", 1);
 -    public static final FunctionIdentifier PAIRS = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "pairs", 1);
 +            FunctionConstants.newAsterix("st-geom-from-geojson", 
FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier RECORD_REMOVE = 
FunctionConstants.newAsterix("object-remove", 2);
 +    public static final FunctionIdentifier RECORD_RENAME = 
FunctionConstants.newAsterix("object-rename", 3);
 +    public static final FunctionIdentifier RECORD_UNWRAP = 
FunctionConstants.newAsterix("object-unwrap", 1);
 +    public static final FunctionIdentifier RECORD_REPLACE = 
FunctionConstants.newAsterix("object-replace", 3);
 +    public static final FunctionIdentifier RECORD_ADD = 
FunctionConstants.newAsterix("object-add", 3);
 +    public static final FunctionIdentifier RECORD_PUT = 
FunctionConstants.newAsterix("object-put", 3);
 +    public static final FunctionIdentifier RECORD_VALUES = 
FunctionConstants.newAsterix("object-values", 1);
 +    public static final FunctionIdentifier PAIRS = 
FunctionConstants.newAsterix("pairs", 1);
  
      // numeric
 -    public static final FunctionIdentifier NUMERIC_UNARY_MINUS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"numeric-unary-minus", 1);
 -    public static final FunctionIdentifier NUMERIC_SUBTRACT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"numeric-subtract", 2);
 -    public static final FunctionIdentifier NUMERIC_MULTIPLY =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"numeric-multiply", 2);
 -    public static final FunctionIdentifier NUMERIC_DIVIDE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"numeric-divide", 2);
 -    public static final FunctionIdentifier NUMERIC_MOD =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"numeric-mod", 2);
 -    public static final FunctionIdentifier NUMERIC_DIV =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"numeric-div", 2);
 -    public static final FunctionIdentifier NUMERIC_POWER =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "power", 2);
 -    public static final FunctionIdentifier NUMERIC_ABS = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "abs", 1);
 -    public static final FunctionIdentifier NUMERIC_ACOS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "acos", 1);
 -    public static final FunctionIdentifier NUMERIC_ASIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "asin", 1);
 -    public static final FunctionIdentifier NUMERIC_ATAN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "atan", 1);
 -    public static final FunctionIdentifier NUMERIC_ATAN2 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "atan2", 2);
 -    public static final FunctionIdentifier NUMERIC_DEGREES =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "degrees", 
1);
 -    public static final FunctionIdentifier NUMERIC_RADIANS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "radians", 
1);
 -    public static final FunctionIdentifier NUMERIC_COS = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "cos", 1);
 -    public static final FunctionIdentifier NUMERIC_COSH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "cosh", 1);
 -    public static final FunctionIdentifier NUMERIC_SIN = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sin", 1);
 -    public static final FunctionIdentifier NUMERIC_SINH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sinh", 1);
 -    public static final FunctionIdentifier NUMERIC_TAN = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "tan", 1);
 -    public static final FunctionIdentifier NUMERIC_TANH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "tanh", 1);
 -    public static final FunctionIdentifier NUMERIC_EXP = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "exp", 1);
 -    public static final FunctionIdentifier NUMERIC_LN = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "ln", 1);
 -    public static final FunctionIdentifier NUMERIC_LOG = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "log", 1);
 -    public static final FunctionIdentifier NUMERIC_SQRT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sqrt", 1);
 -    public static final FunctionIdentifier NUMERIC_SIGN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sign", 1);
 -    public static final FunctionIdentifier NUMERIC_E = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "e", 0);
 -    public static final FunctionIdentifier NUMERIC_PI = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "pi", 0);
 -
 -    public static final FunctionIdentifier NUMERIC_CEILING =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "ceiling", 
1);
 -    public static final FunctionIdentifier NUMERIC_FLOOR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "floor", 1);
 -    public static final FunctionIdentifier NUMERIC_ROUND =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "round", 1);
 -    public static final FunctionIdentifier NUMERIC_ROUND_WITH_ROUND_DIGIT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "round", 2);
 +    public static final FunctionIdentifier NUMERIC_UNARY_MINUS = 
FunctionConstants.newAsterix("numeric-unary-minus", 1);
 +    public static final FunctionIdentifier NUMERIC_SUBTRACT = 
FunctionConstants.newAsterix("numeric-subtract", 2);
 +    public static final FunctionIdentifier NUMERIC_MULTIPLY = 
FunctionConstants.newAsterix("numeric-multiply", 2);
 +    public static final FunctionIdentifier NUMERIC_DIVIDE = 
FunctionConstants.newAsterix("numeric-divide", 2);
 +    public static final FunctionIdentifier NUMERIC_MOD = 
FunctionConstants.newAsterix("numeric-mod", 2);
 +    public static final FunctionIdentifier NUMERIC_DIV = 
FunctionConstants.newAsterix("numeric-div", 2);
 +    public static final FunctionIdentifier NUMERIC_POWER = 
FunctionConstants.newAsterix("power", 2);
 +    public static final FunctionIdentifier NUMERIC_ABS = 
FunctionConstants.newAsterix("abs", 1);
 +    public static final FunctionIdentifier NUMERIC_ACOS = 
FunctionConstants.newAsterix("acos", 1);
 +    public static final FunctionIdentifier NUMERIC_ASIN = 
FunctionConstants.newAsterix("asin", 1);
 +    public static final FunctionIdentifier NUMERIC_ATAN = 
FunctionConstants.newAsterix("atan", 1);
 +    public static final FunctionIdentifier NUMERIC_ATAN2 = 
FunctionConstants.newAsterix("atan2", 2);
 +    public static final FunctionIdentifier NUMERIC_DEGREES = 
FunctionConstants.newAsterix("degrees", 1);
 +    public static final FunctionIdentifier NUMERIC_RADIANS = 
FunctionConstants.newAsterix("radians", 1);
 +    public static final FunctionIdentifier NUMERIC_COS = 
FunctionConstants.newAsterix("cos", 1);
 +    public static final FunctionIdentifier NUMERIC_COSH = 
FunctionConstants.newAsterix("cosh", 1);
 +    public static final FunctionIdentifier NUMERIC_SIN = 
FunctionConstants.newAsterix("sin", 1);
 +    public static final FunctionIdentifier NUMERIC_SINH = 
FunctionConstants.newAsterix("sinh", 1);
 +    public static final FunctionIdentifier NUMERIC_TAN = 
FunctionConstants.newAsterix("tan", 1);
 +    public static final FunctionIdentifier NUMERIC_TANH = 
FunctionConstants.newAsterix("tanh", 1);
 +    public static final FunctionIdentifier NUMERIC_EXP = 
FunctionConstants.newAsterix("exp", 1);
 +    public static final FunctionIdentifier NUMERIC_LN = 
FunctionConstants.newAsterix("ln", 1);
 +    public static final FunctionIdentifier NUMERIC_LOG = 
FunctionConstants.newAsterix("log", 1);
 +    public static final FunctionIdentifier NUMERIC_SQRT = 
FunctionConstants.newAsterix("sqrt", 1);
 +    public static final FunctionIdentifier NUMERIC_SIGN = 
FunctionConstants.newAsterix("sign", 1);
 +    public static final FunctionIdentifier NUMERIC_E = 
FunctionConstants.newAsterix("e", 0);
 +    public static final FunctionIdentifier NUMERIC_PI = 
FunctionConstants.newAsterix("pi", 0);
 +
 +    public static final FunctionIdentifier NUMERIC_CEILING = 
FunctionConstants.newAsterix("ceiling", 1);
 +    public static final FunctionIdentifier NUMERIC_FLOOR = 
FunctionConstants.newAsterix("floor", 1);
 +    public static final FunctionIdentifier NUMERIC_ROUND = 
FunctionConstants.newAsterix("round", 1);
 +    public static final FunctionIdentifier NUMERIC_ROUND_WITH_ROUND_DIGIT = 
FunctionConstants.newAsterix("round", 2);
      public static final FunctionIdentifier NUMERIC_ROUND_HALF_TO_EVEN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"round-half-to-even", 1);
 +            FunctionConstants.newAsterix("round-half-to-even", 1);
      public static final FunctionIdentifier NUMERIC_ROUND_HALF_TO_EVEN2 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"round-half-to-even", 2);
 -    public static final FunctionIdentifier NUMERIC_ROUND_HALF_UP2 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"round-half-up", 2);
 -    public static final FunctionIdentifier NUMERIC_TRUNC =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "trunc", 2);
 +            FunctionConstants.newAsterix("round-half-to-even", 2);
 +    public static final FunctionIdentifier NUMERIC_ROUND_HALF_UP2 = 
FunctionConstants.newAsterix("round-half-up", 2);
 +    public static final FunctionIdentifier NUMERIC_TRUNC = 
FunctionConstants.newAsterix("trunc", 2);
  
      // binary functions
 -    public static final FunctionIdentifier BINARY_LENGTH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"binary-length", 1);
 -    public static final FunctionIdentifier PARSE_BINARY =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"parse-binary", 2);
 -    public static final FunctionIdentifier PRINT_BINARY =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"print-binary", 2);
 -    public static final FunctionIdentifier BINARY_CONCAT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"binary-concat", 1);
 -    public static final FunctionIdentifier SUBBINARY_FROM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sub-binary", 2);
 -    public static final FunctionIdentifier SUBBINARY_FROM_TO =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sub-binary", 3);
 -    public static final FunctionIdentifier FIND_BINARY =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"find-binary", 2);
 -    public static final FunctionIdentifier FIND_BINARY_FROM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"find-binary", 3);
 +    public static final FunctionIdentifier BINARY_LENGTH = 
FunctionConstants.newAsterix("binary-length", 1);
 +    public static final FunctionIdentifier PARSE_BINARY = 
FunctionConstants.newAsterix("parse-binary", 2);
 +    public static final FunctionIdentifier PRINT_BINARY = 
FunctionConstants.newAsterix("print-binary", 2);
 +    public static final FunctionIdentifier BINARY_CONCAT = 
FunctionConstants.newAsterix("binary-concat", 1);
 +    public static final FunctionIdentifier SUBBINARY_FROM = 
FunctionConstants.newAsterix("sub-binary", 2);
 +    public static final FunctionIdentifier SUBBINARY_FROM_TO = 
FunctionConstants.newAsterix("sub-binary", 3);
 +    public static final FunctionIdentifier FIND_BINARY = 
FunctionConstants.newAsterix("find-binary", 2);
 +    public static final FunctionIdentifier FIND_BINARY_FROM = 
FunctionConstants.newAsterix("find-binary", 3);
  
      // bitwise functions
 -    public static final FunctionIdentifier BIT_AND =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitand", 
FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier BIT_OR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitor", 
FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier BIT_XOR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitxor", 
FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier BIT_NOT = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitnot", 1);
 -    public static final FunctionIdentifier BIT_COUNT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitcount", 
1);
 -    public static final FunctionIdentifier BIT_SET = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitset", 2);
 -    public static final FunctionIdentifier BIT_CLEAR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitclear", 
2);
 -    public static final FunctionIdentifier BIT_SHIFT_WITHOUT_ROTATE_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitshift", 
2);
 -    public static final FunctionIdentifier BIT_SHIFT_WITH_ROTATE_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bitshift", 
3);
 -    public static final FunctionIdentifier BIT_TEST_WITHOUT_ALL_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bittest", 
2);
 -    public static final FunctionIdentifier BIT_TEST_WITH_ALL_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "bittest", 
3);
 -    public static final FunctionIdentifier IS_BIT_SET_WITHOUT_ALL_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "isbitset", 
2);
 -    public static final FunctionIdentifier IS_BIT_SET_WITH_ALL_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "isbitset", 
3);
 +    public static final FunctionIdentifier BIT_AND = 
FunctionConstants.newAsterix("bitand", FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier BIT_OR = 
FunctionConstants.newAsterix("bitor", FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier BIT_XOR = 
FunctionConstants.newAsterix("bitxor", FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier BIT_NOT = 
FunctionConstants.newAsterix("bitnot", 1);
 +    public static final FunctionIdentifier BIT_COUNT = 
FunctionConstants.newAsterix("bitcount", 1);
 +    public static final FunctionIdentifier BIT_SET = 
FunctionConstants.newAsterix("bitset", 2);
 +    public static final FunctionIdentifier BIT_CLEAR = 
FunctionConstants.newAsterix("bitclear", 2);
 +    public static final FunctionIdentifier BIT_SHIFT_WITHOUT_ROTATE_FLAG = 
FunctionConstants.newAsterix("bitshift", 2);
 +    public static final FunctionIdentifier BIT_SHIFT_WITH_ROTATE_FLAG = 
FunctionConstants.newAsterix("bitshift", 3);
 +    public static final FunctionIdentifier BIT_TEST_WITHOUT_ALL_FLAG = 
FunctionConstants.newAsterix("bittest", 2);
 +    public static final FunctionIdentifier BIT_TEST_WITH_ALL_FLAG = 
FunctionConstants.newAsterix("bittest", 3);
 +    public static final FunctionIdentifier IS_BIT_SET_WITHOUT_ALL_FLAG = 
FunctionConstants.newAsterix("isbitset", 2);
 +    public static final FunctionIdentifier IS_BIT_SET_WITH_ALL_FLAG = 
FunctionConstants.newAsterix("isbitset", 3);
  
      // String functions
 -    public static final FunctionIdentifier STRING_EQUAL =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"string-equal", 2);
 -    public static final FunctionIdentifier STRING_MATCHES =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "matches", 
2);
 -    public static final FunctionIdentifier STRING_MATCHES_WITH_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "matches", 
3);
 -    public static final FunctionIdentifier STRING_REGEXP_LIKE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-like", 2);
 +    public static final FunctionIdentifier STRING_EQUAL = 
FunctionConstants.newAsterix("string-equal", 2);
 +    public static final FunctionIdentifier STRING_MATCHES = 
FunctionConstants.newAsterix("matches", 2);
 +    public static final FunctionIdentifier STRING_MATCHES_WITH_FLAG = 
FunctionConstants.newAsterix("matches", 3);
 +    public static final FunctionIdentifier STRING_REGEXP_LIKE = 
FunctionConstants.newAsterix("regexp-like", 2);
      public static final FunctionIdentifier STRING_REGEXP_LIKE_WITH_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-like", 3);
 -    public static final FunctionIdentifier STRING_REGEXP_POSITION =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-position", 2);
 +            FunctionConstants.newAsterix("regexp-like", 3);
 +    public static final FunctionIdentifier STRING_REGEXP_POSITION = 
FunctionConstants.newAsterix("regexp-position", 2);
      public static final FunctionIdentifier STRING_REGEXP_POSITION_OFFSET_1 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-position1", 2);
 +            FunctionConstants.newAsterix("regexp-position1", 2);
      public static final FunctionIdentifier STRING_REGEXP_POSITION_WITH_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-position", 3);
 +            FunctionConstants.newAsterix("regexp-position", 3);
      public static final FunctionIdentifier 
STRING_REGEXP_POSITION_OFFSET_1_WITH_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-position1", 3);
 -    public static final FunctionIdentifier STRING_REGEXP_REPLACE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-replace", 3);
 +            FunctionConstants.newAsterix("regexp-position1", 3);
 +    public static final FunctionIdentifier STRING_REGEXP_REPLACE = 
FunctionConstants.newAsterix("regexp-replace", 3);
      public static final FunctionIdentifier STRING_REGEXP_REPLACE_WITH_FLAG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-replace", 4);
 -    public static final FunctionIdentifier STRING_REGEXP_MATCHES =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-matches", 2);
 -    public static final FunctionIdentifier STRING_REGEXP_SPLIT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"regexp-split", 2);
 -    public static final FunctionIdentifier STRING_LOWERCASE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "lowercase", 
1);
 -    public static final FunctionIdentifier STRING_UPPERCASE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "uppercase", 
1);
 -    public static final FunctionIdentifier STRING_INITCAP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "initcap", 
1);
 -    public static final FunctionIdentifier STRING_TRIM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "trim", 1);
 -    public static final FunctionIdentifier STRING_LTRIM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "ltrim", 1);
 -    public static final FunctionIdentifier STRING_RTRIM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "rtrim", 1);
 -    public static final FunctionIdentifier STRING_TRIM2 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "trim", 2);
 -    public static final FunctionIdentifier STRING_LTRIM2 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "ltrim", 2);
 -    public static final FunctionIdentifier STRING_RTRIM2 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "rtrim", 2);
 -    public static final FunctionIdentifier STRING_POSITION =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "position", 
2);
 -    public static final FunctionIdentifier STRING_POSITION_OFFSET_1 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "position1", 
2);
 -    public static final FunctionIdentifier STRING_REPLACE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "replace", 
3);
 -    public static final FunctionIdentifier STRING_REPLACE_WITH_LIMIT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "replace", 
4);
 -    public static final FunctionIdentifier STRING_REVERSE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "reverse", 
1);
 -    public static final FunctionIdentifier STRING_LENGTH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"string-length", 1);
 -    public static final FunctionIdentifier STRING_LIKE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "like", 2);
 -    public static final FunctionIdentifier STRING_CONTAINS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "contains", 
2);
 -    public static final FunctionIdentifier STRING_STARTS_WITH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"starts-with", 2);
 -    public static final FunctionIdentifier STRING_ENDS_WITH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "ends-with", 
2);
 -    public static final FunctionIdentifier SUBSTRING =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "substring", 
3);
 -    public static final FunctionIdentifier SUBSTRING_OFFSET_1 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"substring1", 3);
 -    public static final FunctionIdentifier SUBSTRING2 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "substring", 
2);
 -    public static final FunctionIdentifier SUBSTRING2_OFFSET_1 =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"substring1", 2);
 -    public static final FunctionIdentifier SUBSTRING_BEFORE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"substring-before", 2);
 -    public static final FunctionIdentifier SUBSTRING_AFTER =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"substring-after", 2);
 -    public static final FunctionIdentifier STRING_TO_CODEPOINT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"string-to-codepoint", 1);
 -    public static final FunctionIdentifier CODEPOINT_TO_STRING =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"codepoint-to-string", 1);
 -    public static final FunctionIdentifier STRING_CONCAT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"string-concat", 1);
 -    public static final FunctionIdentifier STRING_JOIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"string-join", 2);
 -    public static final FunctionIdentifier STRING_REPEAT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "repeat", 2);
 -    public static final FunctionIdentifier STRING_SPLIT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "split", 2);
 -    public static final FunctionIdentifier STRING_PARSE_JSON =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"parse-json", 1);
 +            FunctionConstants.newAsterix("regexp-replace", 4);
 +    public static final FunctionIdentifier STRING_REGEXP_MATCHES = 
FunctionConstants.newAsterix("regexp-matches", 2);
 +    public static final FunctionIdentifier STRING_REGEXP_SPLIT = 
FunctionConstants.newAsterix("regexp-split", 2);
 +    public static final FunctionIdentifier STRING_LOWERCASE = 
FunctionConstants.newAsterix("lowercase", 1);
 +    public static final FunctionIdentifier STRING_UPPERCASE = 
FunctionConstants.newAsterix("uppercase", 1);
 +    public static final FunctionIdentifier STRING_INITCAP = 
FunctionConstants.newAsterix("initcap", 1);
 +    public static final FunctionIdentifier STRING_TRIM = 
FunctionConstants.newAsterix("trim", 1);
 +    public static final FunctionIdentifier STRING_LTRIM = 
FunctionConstants.newAsterix("ltrim", 1);
 +    public static final FunctionIdentifier STRING_RTRIM = 
FunctionConstants.newAsterix("rtrim", 1);
 +    public static final FunctionIdentifier STRING_TRIM2 = 
FunctionConstants.newAsterix("trim", 2);
 +    public static final FunctionIdentifier STRING_LTRIM2 = 
FunctionConstants.newAsterix("ltrim", 2);
 +    public static final FunctionIdentifier STRING_RTRIM2 = 
FunctionConstants.newAsterix("rtrim", 2);
 +    public static final FunctionIdentifier STRING_POSITION = 
FunctionConstants.newAsterix("position", 2);
 +    public static final FunctionIdentifier STRING_POSITION_OFFSET_1 = 
FunctionConstants.newAsterix("position1", 2);
 +    public static final FunctionIdentifier STRING_REPLACE = 
FunctionConstants.newAsterix("replace", 3);
 +    public static final FunctionIdentifier STRING_REPLACE_WITH_LIMIT = 
FunctionConstants.newAsterix("replace", 4);
 +    public static final FunctionIdentifier STRING_REVERSE = 
FunctionConstants.newAsterix("reverse", 1);
 +    public static final FunctionIdentifier STRING_LENGTH = 
FunctionConstants.newAsterix("string-length", 1);
 +    public static final FunctionIdentifier STRING_LIKE = 
FunctionConstants.newAsterix("like", 2);
 +    public static final FunctionIdentifier STRING_CONTAINS = 
FunctionConstants.newAsterix("contains", 2);
 +    public static final FunctionIdentifier STRING_STARTS_WITH = 
FunctionConstants.newAsterix("starts-with", 2);
 +    public static final FunctionIdentifier STRING_ENDS_WITH = 
FunctionConstants.newAsterix("ends-with", 2);
 +    public static final FunctionIdentifier SUBSTRING = 
FunctionConstants.newAsterix("substring", 3);
 +    public static final FunctionIdentifier SUBSTRING_OFFSET_1 = 
FunctionConstants.newAsterix("substring1", 3);
 +    public static final FunctionIdentifier SUBSTRING2 = 
FunctionConstants.newAsterix("substring", 2);
 +    public static final FunctionIdentifier SUBSTRING2_OFFSET_1 = 
FunctionConstants.newAsterix("substring1", 2);
 +    public static final FunctionIdentifier SUBSTRING_BEFORE = 
FunctionConstants.newAsterix("substring-before", 2);
 +    public static final FunctionIdentifier SUBSTRING_AFTER = 
FunctionConstants.newAsterix("substring-after", 2);
 +    public static final FunctionIdentifier STRING_TO_CODEPOINT = 
FunctionConstants.newAsterix("string-to-codepoint", 1);
 +    public static final FunctionIdentifier CODEPOINT_TO_STRING = 
FunctionConstants.newAsterix("codepoint-to-string", 1);
 +    public static final FunctionIdentifier STRING_CONCAT = 
FunctionConstants.newAsterix("string-concat", 1);
 +    public static final FunctionIdentifier STRING_JOIN = 
FunctionConstants.newAsterix("string-join", 2);
 +    public static final FunctionIdentifier STRING_REPEAT = 
FunctionConstants.newAsterix("repeat", 2);
 +    public static final FunctionIdentifier STRING_SPLIT = 
FunctionConstants.newAsterix("split", 2);
 +    public static final FunctionIdentifier STRING_PARSE_JSON = 
FunctionConstants.newAsterix("parse-json", 1);
  
      public static final FunctionIdentifier DATASET =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "dataset", 
FunctionIdentifier.VARARGS); // 1 or 2
 -    public static final FunctionIdentifier FEED_COLLECT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"feed-collect", 6);
 -    public static final FunctionIdentifier FEED_INTERCEPT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"feed-intercept", 1);
 +            FunctionConstants.newAsterix("dataset", 
FunctionIdentifier.VARARGS); // 1, 2 or 3
 +    public static final FunctionIdentifier FEED_COLLECT = 
FunctionConstants.newAsterix("feed-collect", 7);
 +    public static final FunctionIdentifier FEED_INTERCEPT = 
FunctionConstants.newAsterix("feed-intercept", 1);
  
      public static final FunctionIdentifier INDEX_SEARCH =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"index-search", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("index-search", 
FunctionIdentifier.VARARGS);
  
      public static final FunctionIdentifier MAKE_FIELD_INDEX_HANDLE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"make-field-index-handle", 2);
 +            FunctionConstants.newAsterix("make-field-index-handle", 2);
      public static final FunctionIdentifier MAKE_FIELD_NESTED_HANDLE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"make-field-nested-handle", 3);
 +            FunctionConstants.newAsterix("make-field-nested-handle", 3);
      public static final FunctionIdentifier MAKE_FIELD_NAME_HANDLE =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"make-field-name-handle", 1);
 +            FunctionConstants.newAsterix("make-field-name-handle", 1);
  
      // aggregate functions
 -    public static final FunctionIdentifier LISTIFY = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "listify", 1);
 -    public static final FunctionIdentifier AVG = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-avg", 1);
 -    public static final FunctionIdentifier COUNT = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-count", 1);
 -    public static final FunctionIdentifier SUM = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-sum", 1);
 -    public static final FunctionIdentifier LOCAL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sum", 1);
 -    public static final FunctionIdentifier INTERMEDIATE_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-sum", 1);
 -    public static final FunctionIdentifier GLOBAL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sum", 1);
 -    public static final FunctionIdentifier MAX = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-max", 1);
 -    public static final FunctionIdentifier LOCAL_MAX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-max", 1);
 -    public static final FunctionIdentifier INTERMEDIATE_MAX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-max", 1);
 -    public static final FunctionIdentifier GLOBAL_MAX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-max", 1);
 -    public static final FunctionIdentifier MIN = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-min", 1);
 -    public static final FunctionIdentifier LOCAL_MIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-min", 1);
 -    public static final FunctionIdentifier INTERMEDIATE_MIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-min", 1);
 -    public static final FunctionIdentifier GLOBAL_MIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-min", 1);
 -    public static final FunctionIdentifier GLOBAL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-avg", 1);
 -    public static final FunctionIdentifier INTERMEDIATE_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-avg", 1);
 -    public static final FunctionIdentifier LOCAL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-avg", 1);
 -    public static final FunctionIdentifier MEDIAN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-median", 1);
 -    public static final FunctionIdentifier FIRST_ELEMENT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-first-element", 1);
 +    public static final FunctionIdentifier LISTIFY = 
FunctionConstants.newAsterix("listify", 1);
 +    public static final FunctionIdentifier AVG = 
FunctionConstants.newAsterix("agg-avg", 1);
 +    public static final FunctionIdentifier COUNT = 
FunctionConstants.newAsterix("agg-count", 1);
 +    public static final FunctionIdentifier SUM = 
FunctionConstants.newAsterix("agg-sum", 1);
 +    public static final FunctionIdentifier LOCAL_SUM = 
FunctionConstants.newAsterix("agg-local-sum", 1);
 +    public static final FunctionIdentifier INTERMEDIATE_SUM = 
FunctionConstants.newAsterix("agg-intermediate-sum", 1);
 +    public static final FunctionIdentifier GLOBAL_SUM = 
FunctionConstants.newAsterix("agg-global-sum", 1);
 +    public static final FunctionIdentifier MAX = 
FunctionConstants.newAsterix("agg-max", 1);
 +    public static final FunctionIdentifier LOCAL_MAX = 
FunctionConstants.newAsterix("agg-local-max", 1);
 +    public static final FunctionIdentifier INTERMEDIATE_MAX = 
FunctionConstants.newAsterix("agg-intermediate-max", 1);
 +    public static final FunctionIdentifier GLOBAL_MAX = 
FunctionConstants.newAsterix("agg-global-max", 1);
 +    public static final FunctionIdentifier MIN = 
FunctionConstants.newAsterix("agg-min", 1);
 +    public static final FunctionIdentifier LOCAL_MIN = 
FunctionConstants.newAsterix("agg-local-min", 1);
 +    public static final FunctionIdentifier INTERMEDIATE_MIN = 
FunctionConstants.newAsterix("agg-intermediate-min", 1);
 +    public static final FunctionIdentifier GLOBAL_MIN = 
FunctionConstants.newAsterix("agg-global-min", 1);
 +    public static final FunctionIdentifier GLOBAL_AVG = 
FunctionConstants.newAsterix("agg-global-avg", 1);
 +    public static final FunctionIdentifier INTERMEDIATE_AVG = 
FunctionConstants.newAsterix("agg-intermediate-avg", 1);
 +    public static final FunctionIdentifier LOCAL_AVG = 
FunctionConstants.newAsterix("agg-local-avg", 1);
++    public static final FunctionIdentifier MEDIAN = 
FunctionConstants.newAsterix("agg-median", 1);
 +    public static final FunctionIdentifier FIRST_ELEMENT = 
FunctionConstants.newAsterix("agg-first-element", 1);
      public static final FunctionIdentifier LOCAL_FIRST_ELEMENT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-first-element", 1);
 -    public static final FunctionIdentifier LAST_ELEMENT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-last-element", 1);
 -    public static final FunctionIdentifier STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-stddev_samp", 1);
 +            FunctionConstants.newAsterix("agg-local-first-element", 1);
 +    public static final FunctionIdentifier LAST_ELEMENT = 
FunctionConstants.newAsterix("agg-last-element", 1);
 +    public static final FunctionIdentifier STDDEV_SAMP = 
FunctionConstants.newAsterix("agg-stddev_samp", 1);
      public static final FunctionIdentifier GLOBAL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-stddev_samp", 1);
 +            FunctionConstants.newAsterix("agg-global-stddev_samp", 1);
      public static final FunctionIdentifier INTERMEDIATE_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-stddev_samp", 1);
 -    public static final FunctionIdentifier LOCAL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-stddev_samp", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-stddev_samp", 1);
 +    public static final FunctionIdentifier LOCAL_STDDEV_SAMP = 
FunctionConstants.newAsterix("agg-local-stddev_samp", 1);
      public static final FunctionIdentifier LOCAL_SAMPLING =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sampling", FunctionIdentifier.VARARGS);
 +            FunctionConstants.newAsterix("agg-local-sampling", 
FunctionIdentifier.VARARGS);
      public static final FunctionIdentifier RANGE_MAP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-range-map", FunctionIdentifier.VARARGS);
 -    public static final FunctionIdentifier STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-stddev_pop", 1);
 -    public static final FunctionIdentifier GLOBAL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-stddev_pop", 1);
 +            FunctionConstants.newAsterix("agg-range-map", 
FunctionIdentifier.VARARGS);
 +    public static final FunctionIdentifier STDDEV_POP = 
FunctionConstants.newAsterix("agg-stddev_pop", 1);
 +    public static final FunctionIdentifier GLOBAL_STDDEV_POP = 
FunctionConstants.newAsterix("agg-global-stddev_pop", 1);
      public static final FunctionIdentifier INTERMEDIATE_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-stddev_pop", 1);
 -    public static final FunctionIdentifier LOCAL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-stddev_pop", 1);
 -    public static final FunctionIdentifier VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-var_samp", 1);
 -    public static final FunctionIdentifier GLOBAL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-var_samp", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-stddev_pop", 1);
 +    public static final FunctionIdentifier LOCAL_STDDEV_POP = 
FunctionConstants.newAsterix("agg-local-stddev_pop", 1);
 +    public static final FunctionIdentifier VAR_SAMP = 
FunctionConstants.newAsterix("agg-var_samp", 1);
 +    public static final FunctionIdentifier GLOBAL_VAR_SAMP = 
FunctionConstants.newAsterix("agg-global-var_samp", 1);
      public static final FunctionIdentifier INTERMEDIATE_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-var_samp", 1);
 -    public static final FunctionIdentifier LOCAL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-var_samp", 1);
 -    public static final FunctionIdentifier VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-var_pop", 1);
 -    public static final FunctionIdentifier GLOBAL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-var_pop", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-var_samp", 1);
 +    public static final FunctionIdentifier LOCAL_VAR_SAMP = 
FunctionConstants.newAsterix("agg-local-var_samp", 1);
 +    public static final FunctionIdentifier VAR_POP = 
FunctionConstants.newAsterix("agg-var_pop", 1);
 +    public static final FunctionIdentifier GLOBAL_VAR_POP = 
FunctionConstants.newAsterix("agg-global-var_pop", 1);
      public static final FunctionIdentifier INTERMEDIATE_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-var_pop", 1);
 -    public static final FunctionIdentifier LOCAL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-var_pop", 1);
 -    public static final FunctionIdentifier SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-skewness", 1);
 -    public static final FunctionIdentifier GLOBAL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-skewness", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-var_pop", 1);
 +    public static final FunctionIdentifier LOCAL_VAR_POP = 
FunctionConstants.newAsterix("agg-local-var_pop", 1);
 +    public static final FunctionIdentifier SKEWNESS = 
FunctionConstants.newAsterix("agg-skewness", 1);
 +    public static final FunctionIdentifier GLOBAL_SKEWNESS = 
FunctionConstants.newAsterix("agg-global-skewness", 1);
      public static final FunctionIdentifier INTERMEDIATE_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-skewness", 1);
 -    public static final FunctionIdentifier LOCAL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-skewness", 1);
 -    public static final FunctionIdentifier KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-kurtosis", 1);
 -    public static final FunctionIdentifier GLOBAL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-kurtosis", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-skewness", 1);
 +    public static final FunctionIdentifier LOCAL_SKEWNESS = 
FunctionConstants.newAsterix("agg-local-skewness", 1);
 +    public static final FunctionIdentifier KURTOSIS = 
FunctionConstants.newAsterix("agg-kurtosis", 1);
 +    public static final FunctionIdentifier GLOBAL_KURTOSIS = 
FunctionConstants.newAsterix("agg-global-kurtosis", 1);
      public static final FunctionIdentifier INTERMEDIATE_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-kurtosis", 1);
 -    public static final FunctionIdentifier LOCAL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-kurtosis", 1);
 -    public static final FunctionIdentifier NULL_WRITER =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-null-writer", 1);
 -    public static final FunctionIdentifier UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-union_mbr", 1);
 -    public static final FunctionIdentifier LOCAL_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-union_mbr", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-kurtosis", 1);
 +    public static final FunctionIdentifier LOCAL_KURTOSIS = 
FunctionConstants.newAsterix("agg-local-kurtosis", 1);
 +    public static final FunctionIdentifier NULL_WRITER = 
FunctionConstants.newAsterix("agg-null-writer", 1);
 +    public static final FunctionIdentifier UNION_MBR = 
FunctionConstants.newAsterix("agg-union_mbr", 1);
 +    public static final FunctionIdentifier LOCAL_UNION_MBR = 
FunctionConstants.newAsterix("agg-local-union_mbr", 1);
      public static final FunctionIdentifier INTERMEDIATE_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-union_mbr", 1);
 -    public static final FunctionIdentifier GLOBAL_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-union_mbr", 1);
 -
 -    public static final FunctionIdentifier SCALAR_ARRAYAGG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "arrayagg", 
1);
 -    public static final FunctionIdentifier SCALAR_AVG = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "avg", 1);
 -    public static final FunctionIdentifier SCALAR_COUNT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "count", 1);
 -    public static final FunctionIdentifier SCALAR_SUM = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sum", 1);
 -    public static final FunctionIdentifier SCALAR_MAX = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "max", 1);
 -    public static final FunctionIdentifier SCALAR_MIN = new 
FunctionIdentifier(FunctionConstants.ASTERIX_NS, "min", 1);
 -    public static final FunctionIdentifier SCALAR_MEDIAN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "median", 1);
 -    public static final FunctionIdentifier SCALAR_FIRST_ELEMENT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"first-element", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-union_mbr", 1);
 +    public static final FunctionIdentifier GLOBAL_UNION_MBR = 
FunctionConstants.newAsterix("agg-global-union_mbr", 1);
 +
 +    public static final FunctionIdentifier SCALAR_ARRAYAGG = 
FunctionConstants.newAsterix("arrayagg", 1);
 +    public static final FunctionIdentifier SCALAR_AVG = 
FunctionConstants.newAsterix("avg", 1);
 +    public static final FunctionIdentifier SCALAR_COUNT = 
FunctionConstants.newAsterix("count", 1);
 +    public static final FunctionIdentifier SCALAR_SUM = 
FunctionConstants.newAsterix("sum", 1);
 +    public static final FunctionIdentifier SCALAR_MAX = 
FunctionConstants.newAsterix("max", 1);
 +    public static final FunctionIdentifier SCALAR_MIN = 
FunctionConstants.newAsterix("min", 1);
++    public static final FunctionIdentifier SCALAR_MEDIAN = 
FunctionConstants.newAsterix("median", 1);
 +    public static final FunctionIdentifier SCALAR_FIRST_ELEMENT = 
FunctionConstants.newAsterix("first-element", 1);
      public static final FunctionIdentifier SCALAR_LOCAL_FIRST_ELEMENT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-first-element", 1);
 -    public static final FunctionIdentifier SCALAR_LAST_ELEMENT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"last-element", 1);
 -    public static final FunctionIdentifier SCALAR_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"stddev_samp", 1);
 -    public static final FunctionIdentifier SCALAR_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"stddev_pop", 1);
 -    public static final FunctionIdentifier SCALAR_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "var_samp", 
1);
 -    public static final FunctionIdentifier SCALAR_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "var_pop", 
1);
 -    public static final FunctionIdentifier SCALAR_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "skewness", 
1);
 -    public static final FunctionIdentifier SCALAR_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "kurtosis", 
1);
 -    public static final FunctionIdentifier SCALAR_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "union_mbr", 
1);
 +            FunctionConstants.newAsterix("local-first-element", 1);
 +    public static final FunctionIdentifier SCALAR_LAST_ELEMENT = 
FunctionConstants.newAsterix("last-element", 1);
 +    public static final FunctionIdentifier SCALAR_STDDEV_SAMP = 
FunctionConstants.newAsterix("stddev_samp", 1);
 +    public static final FunctionIdentifier SCALAR_STDDEV_POP = 
FunctionConstants.newAsterix("stddev_pop", 1);
 +    public static final FunctionIdentifier SCALAR_VAR_SAMP = 
FunctionConstants.newAsterix("var_samp", 1);
 +    public static final FunctionIdentifier SCALAR_VAR_POP = 
FunctionConstants.newAsterix("var_pop", 1);
 +    public static final FunctionIdentifier SCALAR_SKEWNESS = 
FunctionConstants.newAsterix("skewness", 1);
 +    public static final FunctionIdentifier SCALAR_KURTOSIS = 
FunctionConstants.newAsterix("kurtosis", 1);
 +    public static final FunctionIdentifier SCALAR_UNION_MBR = 
FunctionConstants.newAsterix("union_mbr", 1);
  
      // serializable aggregate functions
 -    public static final FunctionIdentifier SERIAL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"avg-serial", 1);
 -    public static final FunctionIdentifier SERIAL_COUNT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"count-serial", 1);
 -    public static final FunctionIdentifier SERIAL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sum-serial", 1);
 -    public static final FunctionIdentifier SERIAL_LOCAL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sum-serial", 1);
 +    public static final FunctionIdentifier SERIAL_AVG = 
FunctionConstants.newAsterix("avg-serial", 1);
 +    public static final FunctionIdentifier SERIAL_COUNT = 
FunctionConstants.newAsterix("count-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SUM = 
FunctionConstants.newAsterix("sum-serial", 1);
 +    public static final FunctionIdentifier SERIAL_LOCAL_SUM = 
FunctionConstants.newAsterix("local-sum-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sum-serial", 1);
 -    public static final FunctionIdentifier SERIAL_GLOBAL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sum-serial", 1);
 -    public static final FunctionIdentifier SERIAL_GLOBAL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-avg-serial", 1);
 -    public static final FunctionIdentifier SERIAL_LOCAL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-avg-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-sum-serial", 1);
 +    public static final FunctionIdentifier SERIAL_GLOBAL_SUM = 
FunctionConstants.newAsterix("global-sum-serial", 1);
 +    public static final FunctionIdentifier SERIAL_GLOBAL_AVG = 
FunctionConstants.newAsterix("global-avg-serial", 1);
 +    public static final FunctionIdentifier SERIAL_LOCAL_AVG = 
FunctionConstants.newAsterix("local-avg-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-avg-serial", 1);
 -    public static final FunctionIdentifier SERIAL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"stddev_samp-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-avg-serial", 1);
 +    public static final FunctionIdentifier SERIAL_STDDEV_SAMP = 
FunctionConstants.newAsterix("stddev_samp-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-stddev_samp-serial", 1);
 +            FunctionConstants.newAsterix("global-stddev_samp-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-stddev_samp-serial", 1);
 +            FunctionConstants.newAsterix("local-stddev_samp-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-stddev_samp-serial", 1);
 -    public static final FunctionIdentifier SERIAL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"stddev_pop-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-stddev_samp-serial", 
1);
 +    public static final FunctionIdentifier SERIAL_STDDEV_POP = 
FunctionConstants.newAsterix("stddev_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-stddev_pop-serial", 1);
 +            FunctionConstants.newAsterix("global-stddev_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-stddev_pop-serial", 1);
 +            FunctionConstants.newAsterix("local-stddev_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-stddev_pop-serial", 1);
 -    public static final FunctionIdentifier SERIAL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"var_samp-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-stddev_pop-serial", 1);
 +    public static final FunctionIdentifier SERIAL_VAR_SAMP = 
FunctionConstants.newAsterix("var_samp-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-var_samp-serial", 1);
 +            FunctionConstants.newAsterix("global-var_samp-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-var_samp-serial", 1);
 +            FunctionConstants.newAsterix("local-var_samp-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-var_samp-serial", 1);
 -    public static final FunctionIdentifier SERIAL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"var_pop-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-var_samp-serial", 1);
 +    public static final FunctionIdentifier SERIAL_VAR_POP = 
FunctionConstants.newAsterix("var_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-var_pop-serial", 1);
 +            FunctionConstants.newAsterix("global-var_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-var_pop-serial", 1);
 +            FunctionConstants.newAsterix("local-var_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-var_pop-serial", 1);
 -    public static final FunctionIdentifier SERIAL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"skewness-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-var_pop-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SKEWNESS = 
FunctionConstants.newAsterix("skewness-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-skewness-serial", 1);
 +            FunctionConstants.newAsterix("global-skewness-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-skewness-serial", 1);
 +            FunctionConstants.newAsterix("local-skewness-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-skewness-serial", 1);
 -    public static final FunctionIdentifier SERIAL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"kurtosis-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-skewness-serial", 1);
 +    public static final FunctionIdentifier SERIAL_KURTOSIS = 
FunctionConstants.newAsterix("kurtosis-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-kurtosis-serial", 1);
 +            FunctionConstants.newAsterix("global-kurtosis-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-kurtosis-serial", 1);
 +            FunctionConstants.newAsterix("local-kurtosis-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-kurtosis-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-kurtosis-serial", 1);
  
      // distinct aggregate functions
 -    public static final FunctionIdentifier LISTIFY_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"listify-distinct", 1);
 +    public static final FunctionIdentifier LISTIFY_DISTINCT = 
FunctionConstants.newAsterix("listify-distinct", 1);
      public static final FunctionIdentifier SCALAR_ARRAYAGG_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"arrayagg-distinct", 1);
 -    public static final FunctionIdentifier COUNT_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-count-distinct", 1);
 -    public static final FunctionIdentifier SCALAR_COUNT_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"count-distinct", 1);
 -    public static final FunctionIdentifier SUM_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sum-distinct", 1);
 -    public static final FunctionIdentifier SCALAR_SUM_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sum-distinct", 1);
 -    public static final FunctionIdentifier AVG_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-avg-distinct", 1);
 -    public static final FunctionIdentifier SCALAR_AVG_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"avg-distinct", 1);
 -    public static final FunctionIdentifier MAX_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-max-distinct", 1);
 -    public static final FunctionIdentifier SCALAR_MAX_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"max-distinct", 1);
 -    public static final FunctionIdentifier MIN_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-min-distinct", 1);
 -    public static final FunctionIdentifier SCALAR_MIN_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"min-distinct", 1);
 +            FunctionConstants.newAsterix("arrayagg-distinct", 1);
 +    public static final FunctionIdentifier COUNT_DISTINCT = 
FunctionConstants.newAsterix("agg-count-distinct", 1);
 +    public static final FunctionIdentifier SCALAR_COUNT_DISTINCT = 
FunctionConstants.newAsterix("count-distinct", 1);
 +    public static final FunctionIdentifier SUM_DISTINCT = 
FunctionConstants.newAsterix("agg-sum-distinct", 1);
 +    public static final FunctionIdentifier SCALAR_SUM_DISTINCT = 
FunctionConstants.newAsterix("sum-distinct", 1);
 +    public static final FunctionIdentifier AVG_DISTINCT = 
FunctionConstants.newAsterix("agg-avg-distinct", 1);
 +    public static final FunctionIdentifier SCALAR_AVG_DISTINCT = 
FunctionConstants.newAsterix("avg-distinct", 1);
 +    public static final FunctionIdentifier MAX_DISTINCT = 
FunctionConstants.newAsterix("agg-max-distinct", 1);
 +    public static final FunctionIdentifier SCALAR_MAX_DISTINCT = 
FunctionConstants.newAsterix("max-distinct", 1);
 +    public static final FunctionIdentifier MIN_DISTINCT = 
FunctionConstants.newAsterix("agg-min-distinct", 1);
 +    public static final FunctionIdentifier SCALAR_MIN_DISTINCT = 
FunctionConstants.newAsterix("min-distinct", 1);
      public static final FunctionIdentifier STDDEV_SAMP_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-stddev_samp-distinct", 1);
 +            FunctionConstants.newAsterix("agg-stddev_samp-distinct", 1);
      public static final FunctionIdentifier SCALAR_STDDEV_SAMP_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"stddev_samp-distinct", 1);
 +            FunctionConstants.newAsterix("stddev_samp-distinct", 1);
      public static final FunctionIdentifier STDDEV_POP_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-stddev_pop-distinct", 1);
 +            FunctionConstants.newAsterix("agg-stddev_pop-distinct", 1);
      public static final FunctionIdentifier SCALAR_STDDEV_POP_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"stddev_pop-distinct", 1);
 -    public static final FunctionIdentifier VAR_SAMP_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-var_samp-distinct", 1);
 +            FunctionConstants.newAsterix("stddev_pop-distinct", 1);
 +    public static final FunctionIdentifier VAR_SAMP_DISTINCT = 
FunctionConstants.newAsterix("agg-var_samp-distinct", 1);
      public static final FunctionIdentifier SCALAR_VAR_SAMP_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"var_samp-distinct", 1);
 -    public static final FunctionIdentifier VAR_POP_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-var_pop-distinct", 1);
 +            FunctionConstants.newAsterix("var_samp-distinct", 1);
 +    public static final FunctionIdentifier VAR_POP_DISTINCT = 
FunctionConstants.newAsterix("agg-var_pop-distinct", 1);
      public static final FunctionIdentifier SCALAR_VAR_POP_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"var_pop-distinct", 1);
 -    public static final FunctionIdentifier SKEWNESS_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-skewness-distinct", 1);
 +            FunctionConstants.newAsterix("var_pop-distinct", 1);
 +    public static final FunctionIdentifier SKEWNESS_DISTINCT = 
FunctionConstants.newAsterix("agg-skewness-distinct", 1);
      public static final FunctionIdentifier SCALAR_SKEWNESS_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"skewness-distinct", 1);
 -    public static final FunctionIdentifier KURTOSIS_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-kurtosis-distinct", 1);
 +            FunctionConstants.newAsterix("skewness-distinct", 1);
 +    public static final FunctionIdentifier KURTOSIS_DISTINCT = 
FunctionConstants.newAsterix("agg-kurtosis-distinct", 1);
      public static final FunctionIdentifier SCALAR_KURTOSIS_DISTINCT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"kurtosis-distinct", 1);
 +            FunctionConstants.newAsterix("kurtosis-distinct", 1);
  
      // sql aggregate functions
 -    public static final FunctionIdentifier SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-avg", 1);
 +    public static final FunctionIdentifier SQL_AVG = 
FunctionConstants.newAsterix("agg-sql-avg", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-agg-sql-avg", 1);
 -    public static final FunctionIdentifier SQL_COUNT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-count", 1);
 -    public static final FunctionIdentifier SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-sum", 1);
 -    public static final FunctionIdentifier LOCAL_SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-sum", 1);
 +            FunctionConstants.newAsterix("intermediate-agg-sql-avg", 1);
 +    public static final FunctionIdentifier SQL_COUNT = 
FunctionConstants.newAsterix("agg-sql-count", 1);
 +    public static final FunctionIdentifier SQL_SUM = 
FunctionConstants.newAsterix("agg-sql-sum", 1);
 +    public static final FunctionIdentifier LOCAL_SQL_SUM = 
FunctionConstants.newAsterix("agg-local-sql-sum", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-sql-sum", 1);
 -    public static final FunctionIdentifier GLOBAL_SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-sum", 1);
 -    public static final FunctionIdentifier SQL_MAX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-max", 1);
 -    public static final FunctionIdentifier LOCAL_SQL_MAX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-max", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-sql-sum", 1);
 +    public static final FunctionIdentifier GLOBAL_SQL_SUM = 
FunctionConstants.newAsterix("agg-global-sql-sum", 1);
 +    public static final FunctionIdentifier SQL_MAX = 
FunctionConstants.newAsterix("agg-sql-max", 1);
 +    public static final FunctionIdentifier LOCAL_SQL_MAX = 
FunctionConstants.newAsterix("agg-local-sql-max", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_MAX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-sql-max", 1);
 -    public static final FunctionIdentifier GLOBAL_SQL_MAX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-max", 1);
 -    public static final FunctionIdentifier SQL_MIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-min", 1);
 -    public static final FunctionIdentifier LOCAL_SQL_MIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-min", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-sql-max", 1);
 +    public static final FunctionIdentifier GLOBAL_SQL_MAX = 
FunctionConstants.newAsterix("agg-global-sql-max", 1);
 +    public static final FunctionIdentifier SQL_MIN = 
FunctionConstants.newAsterix("agg-sql-min", 1);
 +    public static final FunctionIdentifier LOCAL_SQL_MIN = 
FunctionConstants.newAsterix("agg-local-sql-min", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_MIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-sql-min", 1);
 -    public static final FunctionIdentifier GLOBAL_SQL_MIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-min", 1);
 -    public static final FunctionIdentifier GLOBAL_SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-avg", 1);
 -    public static final FunctionIdentifier LOCAL_SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-avg", 1);
 -    public static final FunctionIdentifier SQL_MEDIAN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-median", 1);
 -    public static final FunctionIdentifier LOCAL_SQL_MEDIAN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-median", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-sql-min", 1);
 +    public static final FunctionIdentifier GLOBAL_SQL_MIN = 
FunctionConstants.newAsterix("agg-global-sql-min", 1);
 +    public static final FunctionIdentifier GLOBAL_SQL_AVG = 
FunctionConstants.newAsterix("agg-global-sql-avg", 1);
 +    public static final FunctionIdentifier LOCAL_SQL_AVG = 
FunctionConstants.newAsterix("agg-local-sql-avg", 1);
++    public static final FunctionIdentifier SQL_MEDIAN = 
FunctionConstants.newAsterix("agg-sql-median", 1);
++    public static final FunctionIdentifier LOCAL_SQL_MEDIAN = 
FunctionConstants.newAsterix("agg-local-sql-median", 1);
+     public static final FunctionIdentifier INTERMEDIATE_SQL_MEDIAN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-sql-median", 1);
 -    public static final FunctionIdentifier GLOBAL_SQL_MEDIAN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-median", 1);
 -    public static final FunctionIdentifier SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-stddev_samp", 1);
++            FunctionConstants.newAsterix("agg-intermediate-sql-median", 1);
++    public static final FunctionIdentifier GLOBAL_SQL_MEDIAN = 
FunctionConstants.newAsterix("agg-global-sql-median", 1);
 +    public static final FunctionIdentifier SQL_STDDEV_SAMP = 
FunctionConstants.newAsterix("agg-sql-stddev_samp", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-agg-sql-stddev_samp", 1);
 +            FunctionConstants.newAsterix("intermediate-agg-sql-stddev_samp", 
1);
      public static final FunctionIdentifier GLOBAL_SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-stddev_samp", 1);
 +            FunctionConstants.newAsterix("agg-global-sql-stddev_samp", 1);
      public static final FunctionIdentifier LOCAL_SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-stddev_samp", 1);
 -    public static final FunctionIdentifier SQL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-stddev_pop", 1);
 +            FunctionConstants.newAsterix("agg-local-sql-stddev_samp", 1);
 +    public static final FunctionIdentifier SQL_STDDEV_POP = 
FunctionConstants.newAsterix("agg-sql-stddev_pop", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-agg-sql-stddev_pop", 1);
 +            FunctionConstants.newAsterix("intermediate-agg-sql-stddev_pop", 
1);
      public static final FunctionIdentifier GLOBAL_SQL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-stddev_pop", 1);
 +            FunctionConstants.newAsterix("agg-global-sql-stddev_pop", 1);
      public static final FunctionIdentifier LOCAL_SQL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-stddev_pop", 1);
 -    public static final FunctionIdentifier SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-var_samp", 1);
 +            FunctionConstants.newAsterix("agg-local-sql-stddev_pop", 1);
 +    public static final FunctionIdentifier SQL_VAR_SAMP = 
FunctionConstants.newAsterix("agg-sql-var_samp", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-agg-sql-var_samp", 1);
 +            FunctionConstants.newAsterix("intermediate-agg-sql-var_samp", 1);
      public static final FunctionIdentifier GLOBAL_SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-var_samp", 1);
 +            FunctionConstants.newAsterix("agg-global-sql-var_samp", 1);
      public static final FunctionIdentifier LOCAL_SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-var_samp", 1);
 -    public static final FunctionIdentifier SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-var_pop", 1);
 +            FunctionConstants.newAsterix("agg-local-sql-var_samp", 1);
 +    public static final FunctionIdentifier SQL_VAR_POP = 
FunctionConstants.newAsterix("agg-sql-var_pop", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-agg-sql-var_pop", 1);
 +            FunctionConstants.newAsterix("intermediate-agg-sql-var_pop", 1);
      public static final FunctionIdentifier GLOBAL_SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-var_pop", 1);
 -    public static final FunctionIdentifier LOCAL_SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-var_pop", 1);
 -    public static final FunctionIdentifier SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-skewness", 1);
 +            FunctionConstants.newAsterix("agg-global-sql-var_pop", 1);
 +    public static final FunctionIdentifier LOCAL_SQL_VAR_POP = 
FunctionConstants.newAsterix("agg-local-sql-var_pop", 1);
 +    public static final FunctionIdentifier SQL_SKEWNESS = 
FunctionConstants.newAsterix("agg-sql-skewness", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-agg-sql-skewness", 1);
 +            FunctionConstants.newAsterix("intermediate-agg-sql-skewness", 1);
      public static final FunctionIdentifier GLOBAL_SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-skewness", 1);
 +            FunctionConstants.newAsterix("agg-global-sql-skewness", 1);
      public static final FunctionIdentifier LOCAL_SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-skewness", 1);
 -    public static final FunctionIdentifier SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-kurtosis", 1);
 +            FunctionConstants.newAsterix("agg-local-sql-skewness", 1);
 +    public static final FunctionIdentifier SQL_KURTOSIS = 
FunctionConstants.newAsterix("agg-sql-kurtosis", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-agg-sql-kurtosis", 1);
 +            FunctionConstants.newAsterix("intermediate-agg-sql-kurtosis", 1);
      public static final FunctionIdentifier GLOBAL_SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-kurtosis", 1);
 +            FunctionConstants.newAsterix("agg-global-sql-kurtosis", 1);
      public static final FunctionIdentifier LOCAL_SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-kurtosis", 1);
 -    public static final FunctionIdentifier SQL_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-sql-union_mbr", 1);
 +            FunctionConstants.newAsterix("agg-local-sql-kurtosis", 1);
 +    public static final FunctionIdentifier SQL_UNION_MBR = 
FunctionConstants.newAsterix("agg-sql-union_mbr", 1);
      public static final FunctionIdentifier LOCAL_SQL_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-local-sql-union_mbr", 1);
 +            FunctionConstants.newAsterix("agg-local-sql-union_mbr", 1);
      public static final FunctionIdentifier INTERMEDIATE_SQL_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-intermediate-sql-union_mbr", 1);
 +            FunctionConstants.newAsterix("agg-intermediate-sql-union_mbr", 1);
      public static final FunctionIdentifier GLOBAL_SQL_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"agg-global-sql-union_mbr", 1);
 -
 -    public static final FunctionIdentifier SCALAR_SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-avg", 
1);
 -    public static final FunctionIdentifier SCALAR_SQL_COUNT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-count", 
1);
 -    public static final FunctionIdentifier SCALAR_SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-sum", 
1);
 -    public static final FunctionIdentifier SCALAR_SQL_MAX =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-max", 
1);
 -    public static final FunctionIdentifier SCALAR_SQL_MIN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-min", 
1);
 -    public static final FunctionIdentifier SCALAR_SQL_MEDIAN =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-median", 1);
 -    public static final FunctionIdentifier SCALAR_SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-stddev_samp", 1);
 -    public static final FunctionIdentifier SCALAR_SQL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-stddev_pop", 1);
 -    public static final FunctionIdentifier SCALAR_SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-var_samp", 1);
 -    public static final FunctionIdentifier SCALAR_SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-var_pop", 1);
 -    public static final FunctionIdentifier SCALAR_SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-skewness", 1);
 -    public static final FunctionIdentifier SCALAR_SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-kurtosis", 1);
 -    public static final FunctionIdentifier SCALAR_SQL_UNION_MBR =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-union_mbr", 1);
 +            FunctionConstants.newAsterix("agg-global-sql-union_mbr", 1);
 +
 +    public static final FunctionIdentifier SCALAR_SQL_AVG = 
FunctionConstants.newAsterix("sql-avg", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_COUNT = 
FunctionConstants.newAsterix("sql-count", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_SUM = 
FunctionConstants.newAsterix("sql-sum", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_MAX = 
FunctionConstants.newAsterix("sql-max", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_MIN = 
FunctionConstants.newAsterix("sql-min", 1);
++    public static final FunctionIdentifier SCALAR_SQL_MEDIAN = 
FunctionConstants.newAsterix("sql-median", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_STDDEV_SAMP = 
FunctionConstants.newAsterix("sql-stddev_samp", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_STDDEV_POP = 
FunctionConstants.newAsterix("sql-stddev_pop", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_VAR_SAMP = 
FunctionConstants.newAsterix("sql-var_samp", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_VAR_POP = 
FunctionConstants.newAsterix("sql-var_pop", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_SKEWNESS = 
FunctionConstants.newAsterix("sql-skewness", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_KURTOSIS = 
FunctionConstants.newAsterix("sql-kurtosis", 1);
 +    public static final FunctionIdentifier SCALAR_SQL_UNION_MBR = 
FunctionConstants.newAsterix("sql-union_mbr", 1);
  
      // serializable sql aggregate functions
 -    public static final FunctionIdentifier SERIAL_SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-avg-serial", 1);
 -    public static final FunctionIdentifier SERIAL_SQL_COUNT =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-count-serial", 1);
 -    public static final FunctionIdentifier SERIAL_SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-sum-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SQL_AVG = 
FunctionConstants.newAsterix("sql-avg-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SQL_COUNT = 
FunctionConstants.newAsterix("sql-count-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SQL_SUM = 
FunctionConstants.newAsterix("sql-sum-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sql-sum-serial", 1);
 +            FunctionConstants.newAsterix("local-sql-sum-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sql-sum-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-sql-sum-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SQL_SUM =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sql-sum-serial", 1);
 +            FunctionConstants.newAsterix("global-sql-sum-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sql-avg-serial", 1);
 +            FunctionConstants.newAsterix("global-sql-avg-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sql-avg-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-sql-avg-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_SQL_AVG =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sql-avg-serial", 1);
 +            FunctionConstants.newAsterix("local-sql-avg-serial", 1);
      public static final FunctionIdentifier SERIAL_SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-stddev-serial_samp", 1);
 +            FunctionConstants.newAsterix("sql-stddev-serial_samp", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sql-stddev-serial_samp", 1);
 +            FunctionConstants.newAsterix("global-sql-stddev-serial_samp", 1);
      public static final FunctionIdentifier 
SERIAL_INTERMEDIATE_SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sql-stddev-serial_samp", 1);
 +            
FunctionConstants.newAsterix("intermediate-sql-stddev-serial_samp", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_SQL_STDDEV_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sql-stddev-serial_samp", 1);
 +            FunctionConstants.newAsterix("local-sql-stddev-serial_samp", 1);
      public static final FunctionIdentifier SERIAL_SQL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-stddev_pop-serial", 1);
 +            FunctionConstants.newAsterix("sql-stddev_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SQL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sql-stddev_pop-serial", 1);
 +            FunctionConstants.newAsterix("global-sql-stddev_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SQL_STDDEV_POP 
=
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sql-stddev_pop-serial", 1);
 +            
FunctionConstants.newAsterix("intermediate-sql-stddev_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_LOCAL_SQL_STDDEV_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sql-stddev_pop-serial", 1);
 -    public static final FunctionIdentifier SERIAL_SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-var_samp-serial", 1);
 +            FunctionConstants.newAsterix("local-sql-stddev_pop-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SQL_VAR_SAMP = 
FunctionConstants.newAsterix("sql-var_samp-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sql-var_samp-serial", 1);
 +            FunctionConstants.newAsterix("global-sql-var_samp-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sql-var_samp-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-sql-var_samp-serial", 
1);
      public static final FunctionIdentifier SERIAL_LOCAL_SQL_VAR_SAMP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sql-var_samp-serial", 1);
 -    public static final FunctionIdentifier SERIAL_SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-var_pop-serial", 1);
 +            FunctionConstants.newAsterix("local-sql-var_samp-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SQL_VAR_POP = 
FunctionConstants.newAsterix("sql-var_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sql-var_pop-serial", 1);
 +            FunctionConstants.newAsterix("global-sql-var_pop-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sql-var_pop-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-sql-var_pop-serial", 
1);
      public static final FunctionIdentifier SERIAL_LOCAL_SQL_VAR_POP =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sql-var_pop-serial", 1);
 -    public static final FunctionIdentifier SERIAL_SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-skewness-serial", 1);
 +            FunctionConstants.newAsterix("local-sql-var_pop-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SQL_SKEWNESS = 
FunctionConstants.newAsterix("sql-skewness-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sql-skewness-serial", 1);
 +            FunctionConstants.newAsterix("global-sql-skewness-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sql-skewness-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-sql-skewness-serial", 
1);
      public static final FunctionIdentifier SERIAL_LOCAL_SQL_SKEWNESS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sql-skewness-serial", 1);
 -    public static final FunctionIdentifier SERIAL_SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"sql-kurtosis-serial", 1);
 +            FunctionConstants.newAsterix("local-sql-skewness-serial", 1);
 +    public static final FunctionIdentifier SERIAL_SQL_KURTOSIS = 
FunctionConstants.newAsterix("sql-kurtosis-serial", 1);
      public static final FunctionIdentifier SERIAL_GLOBAL_SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"global-sql-kurtosis-serial", 1);
 +            FunctionConstants.newAsterix("global-sql-kurtosis-serial", 1);
      public static final FunctionIdentifier SERIAL_INTERMEDIATE_SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"intermediate-sql-kurtosis-serial", 1);
 +            FunctionConstants.newAsterix("intermediate-sql-kurtosis-serial", 
1);
      public static final FunctionIdentifier SERIAL_LOCAL_SQL_KURTOSIS =
 -            new FunctionIdentifier(FunctionConstants.ASTERIX_NS, 
"local-sql-kurtosis-serial", 1);
 +            FunctionConstants.newAsterix("local-sql-kurtosis-serial", 1);
  
      // distinct sql aggregate functions
      public static final FunctionIdentifier SQL_COUNT_DISTINCT =
@@@ -2779,34 -3257,27 +2814,41 @@@
      interface BuiltinFunctionProperty {
      }
  
+     public enum AggregateFunctionProperty implements BuiltinFunctionProperty {
+         /** Whether the order clause is prohibited */
+         NO_ORDER_CLAUSE,
+         /** Whether the frame clause is prohibited */
+         NO_FRAME_CLAUSE
+     }
+ 
      public enum WindowFunctionProperty implements BuiltinFunctionProperty {
 -        /** Whether the order clause is prohibited */
 +        /**
 +         * Whether the order clause is prohibited
 +         */
          NO_ORDER_CLAUSE,
 -        /** Whether the frame clause is prohibited */
 +        /**
 +         * Whether the frame clause is prohibited
 +         */
          NO_FRAME_CLAUSE,
 -        /** Whether the first argument is a list */
 +        /**
 +         * Whether the first argument is a list
 +         */
          HAS_LIST_ARG,
 -        /** Whether order by expressions must be injected as arguments */
 +        /**
 +         * Whether order by expressions must be injected as arguments
 +         */
          INJECT_ORDER_ARGS,
 -        /** Whether a running aggregate requires partition materialization 
runtime */
 +        /**
 +         * Whether a running aggregate requires partition materialization 
runtime
 +         */
          MATERIALIZE_PARTITION,
 -        /** Whether FROM (FIRST | LAST) modifier is allowed */
 +        /**
 +         * Whether FROM (FIRST | LAST) modifier is allowed
 +         */
          ALLOW_FROM_FIRST_LAST,
 -        /** Whether (RESPECT | IGNORE) NULLS modifier is allowed */
 +        /**
 +         * Whether (RESPECT | IGNORE) NULLS modifier is allowed
 +         */
          ALLOW_RESPECT_IGNORE_NULLS
      }
  

Reply via email to