Coordinated Change for CREATE OR REPLACE FUNCTION

Change-Id: I5d28fc67de8dc4016339dd75e07cb23b426dabf4
diff --git a/asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/CreateProcedureStatement.java b/asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/CreateProcedureStatement.java
index eb56e35..3d7d7de 100644
--- a/asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/CreateProcedureStatement.java
+++ b/asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/CreateProcedureStatement.java
@@ -192,16 +192,12 @@
         } else if (getProcedureBodyStatement().getKind() == Statement.Kind.QUERY) {
             //TODO: Fix type dependency computation
             SqlppRewriterFactory fact = new SqlppRewriterFactory(new SqlppParserFactory());
-            dependencies.get(1)
-                    .addAll(FunctionUtil.getFunctionDependencies(fact.createQueryRewriter(),
-                            ((Query) getProcedureBodyStatement()).getBody(), metadataProvider, new ArrayList<>())
-                            .get(1));
+            dependencies.get(1).addAll(FunctionUtil.getFunctionDependencies(fact.createQueryRewriter(),
+                    ((Query) getProcedureBodyStatement()).getBody(), metadataProvider).get(1));
             Pair<JobSpecification, PrecompiledType> pair = new Pair<>(BADJobService.compileQueryJob(statementExecutor,
                     metadataProvider, hcc, (Query) getProcedureBodyStatement()), PrecompiledType.QUERY);
-            dependencies.get(0)
-                    .addAll(FunctionUtil.getFunctionDependencies(fact.createQueryRewriter(),
-                            ((Query) getProcedureBodyStatement()).getBody(), metadataProvider, new ArrayList<>())
-                            .get(0));
+            dependencies.get(0).addAll(FunctionUtil.getFunctionDependencies(fact.createQueryRewriter(),
+                    ((Query) getProcedureBodyStatement()).getBody(), metadataProvider).get(0));
             return pair;
         } else if (getProcedureBodyStatement().getKind() == Statement.Kind.DELETE) {
             getProcedureBodyStatement().accept(SqlppDeleteRewriteVisitor.INSTANCE, metadataProvider);
@@ -209,7 +205,7 @@
 
             SqlppRewriterFactory fact = new SqlppRewriterFactory(new SqlppParserFactory());
             dependencies = FunctionUtil.getFunctionDependencies(fact.createQueryRewriter(), delete.getQuery().getBody(),
-                    metadataProvider, new ArrayList<>());
+                    metadataProvider);
             Pair<JobSpecification, PrecompiledType> pair =
                     new Pair<>(((QueryTranslator) statementExecutor).handleDeleteStatement(metadataProvider,
                             getProcedureBodyStatement(), hcc, true, null, null), PrecompiledType.DELETE);
diff --git a/asterix-bad/src/main/java/org/apache/asterix/bad/rules/RewriteChannelTimeFunctionToLocalVarRule.java b/asterix-bad/src/main/java/org/apache/asterix/bad/rules/RewriteChannelTimeFunctionToLocalVarRule.java
index ec922e7..56f5e39 100644
--- a/asterix-bad/src/main/java/org/apache/asterix/bad/rules/RewriteChannelTimeFunctionToLocalVarRule.java
+++ b/asterix-bad/src/main/java/org/apache/asterix/bad/rules/RewriteChannelTimeFunctionToLocalVarRule.java
@@ -138,7 +138,7 @@
             if (needPrevDsSet.contains(dsVar) || needActiveDsSet.contains(dsVar)) {
                 LogicalVariable channelTimeVar = context.newVar();
                 ILogicalExpression previousChannelTimeExpr = new ScalarFunctionCallExpression(
-                        BuiltinFunctions.getAsterixFunctionInfo(BADFunctions.PREVIOUS_CHANNEL_TIME),
+                        BuiltinFunctions.getBuiltinFunctionInfo(BADFunctions.PREVIOUS_CHANNEL_TIME),
                         new MutableObject<>(
                                 new ConstantExpression(new AsterixConstantValue(new AString(channelName)))));
                 AssignOperator assignOp =
@@ -151,7 +151,7 @@
             if (needCurrDsSet.contains(dsVar) || needActiveDsSet.contains(dsVar)) {
                 LogicalVariable channelTimeVar = context.newVar();
                 ILogicalExpression previousChannelTimeExpr = new ScalarFunctionCallExpression(
-                        BuiltinFunctions.getAsterixFunctionInfo(BADFunctions.CURRENT_CHANNEL_TIME), new MutableObject<>(
+                        BuiltinFunctions.getBuiltinFunctionInfo(BADFunctions.CURRENT_CHANNEL_TIME), new MutableObject<>(
                                 new ConstantExpression(new AsterixConstantValue(new AString(channelName)))));
                 AssignOperator assignOp =
                         new AssignOperator(channelTimeVar, new MutableObject<>(previousChannelTimeExpr));
diff --git a/asterix-bad/src/main/resources/lang-extension/lang.txt b/asterix-bad/src/main/resources/lang-extension/lang.txt
index 8b8c507..49f0cb4 100644
--- a/asterix-bad/src/main/resources/lang-extension/lang.txt
+++ b/asterix-bad/src/main/resources/lang-extension/lang.txt
@@ -255,7 +255,7 @@
       removeCurrentScope();
       defaultDataverse = currentDataverse;
       ensureNoTypeDeclsInFunction(fctName.function, params, returnType, startStmtToken);
-      CreateFunctionStatement stmt = new CreateFunctionStatement(signature, params, functionBody, functionBodyExpr, false);
+      CreateFunctionStatement stmt = new CreateFunctionStatement(signature, params, functionBody, functionBodyExpr, true, false);
       ccs =  new CreateContinuousChannelStatement(fctName.dataverse, new Identifier(fctName.function), period, push, stmt);
       return addSourceLocation(ccs, startStmtToken);
     }