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);
     }
diff --git a/asterix-bad/src/test/resources/runtimets/testsuite_bad.xml b/asterix-bad/src/test/resources/runtimets/testsuite_bad.xml
index 5f130e9..51f1cda 100644
--- a/asterix-bad/src/test/resources/runtimets/testsuite_bad.xml
+++ b/asterix-bad/src/test/resources/runtimets/testsuite_bad.xml
@@ -77,7 +77,7 @@
     <test-case FilePath="procedure">
       <compilation-unit name="delete_procedure_drop_function">
         <output-dir compare="Text">delete_procedure_drop_function</output-dir>
-        <expected-error>Cannot drop function two.really_contains@2. two.deleteSome(Procedure) depends on it!</expected-error>
+        <expected-error>Cannot drop function two.really_contains</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="procedure">
@@ -95,7 +95,7 @@
     <test-case FilePath="procedure">
       <compilation-unit name="query_procedure_drop_function">
         <output-dir compare="Text">query_procedure_drop_function</output-dir>
-        <expected-error>Cannot drop function channels.really_contains@2. two.selectSome(Procedure) depends on it!</expected-error>
+        <expected-error>Cannot drop function channels.really_contains</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="procedure">
@@ -133,7 +133,7 @@
     <test-case FilePath="bad_rq">
       <compilation-unit name="drop_function">
         <output-dir compare="Text">drop_function</output-dir>
-        <expected-error>Cannot drop function channels.NearbyTweetsContainingText@2. two.nearbyTweetChannel(Channel) depends on it!</expected-error>
+        <expected-error>Cannot drop function channels.NearbyTweetsContainingText</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="bad_rq">