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

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


The following commit(s) were added to refs/heads/master by this push:
     new 29a2cc9  Coordinated change for function metadata cleanup
29a2cc9 is described below

commit 29a2cc9fcac765fcf217924abaf04521c4c431f3
Author: Dmitry Lychagin <[email protected]>
AuthorDate: Wed Feb 5 15:33:25 2020 -0800

    Coordinated change for function metadata cleanup
    
    Change-Id: I4c5238a6e92b89410bbffc0c9338b36c61896a6b
---
 .../bad/lang/statement/CreateProcedureStatement.java       |  7 ++++---
 .../java/org/apache/asterix/bad/metadata/Procedure.java    |  7 ++++---
 .../asterix/bad/metadata/ProcedureTupleTranslator.java     | 14 +++++++++++---
 3 files changed, 19 insertions(+), 9 deletions(-)

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 1d38597..8605c77 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
@@ -57,6 +57,7 @@ import org.apache.asterix.lang.common.statement.Query;
 import org.apache.asterix.lang.common.struct.VarIdentifier;
 import org.apache.asterix.lang.common.util.FunctionUtil;
 import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import org.apache.asterix.lang.sqlpp.parser.SqlppParserFactory;
 import org.apache.asterix.lang.sqlpp.rewrites.SqlppRewriterFactory;
 import org.apache.asterix.lang.sqlpp.util.SqlppStatementUtil;
 import org.apache.asterix.lang.sqlpp.visitor.SqlppDeleteRewriteVisitor;
@@ -191,7 +192,7 @@ public class CreateProcedureStatement extends 
ExtensionStatement {
                     PrecompiledType.INSERT);
         } else if (getProcedureBodyStatement().getKind() == 
Statement.Kind.QUERY) {
             //TODO: Fix type dependency computation
-            SqlppRewriterFactory fact = new SqlppRewriterFactory();
+            SqlppRewriterFactory fact = new SqlppRewriterFactory(new 
SqlppParserFactory());
             dependencies.get(1)
                     
.addAll(FunctionUtil.getFunctionDependencies(fact.createQueryRewriter(),
                             ((Query) getProcedureBodyStatement()).getBody(), 
metadataProvider, new ArrayList<>())
@@ -207,7 +208,7 @@ public class CreateProcedureStatement extends 
ExtensionStatement {
             
getProcedureBodyStatement().accept(SqlppDeleteRewriteVisitor.INSTANCE, 
metadataProvider);
             DeleteStatement delete = (DeleteStatement) 
getProcedureBodyStatement();
 
-            SqlppRewriterFactory fact = new SqlppRewriterFactory();
+            SqlppRewriterFactory fact = new SqlppRewriterFactory(new 
SqlppParserFactory());
             dependencies = 
FunctionUtil.getFunctionDependencies(fact.createQueryRewriter(), 
delete.getQuery().getBody(),
                     metadataProvider, new ArrayList<>());
             Pair<JobSpecification, PrecompiledType> pair =
@@ -272,7 +273,7 @@ public class CreateProcedureStatement extends 
ExtensionStatement {
                     stats);
 
             procedure = new Procedure(dataverse, signature.getName(), 
signature.getArity(), getParamList(),
-                    procedureJobSpec.second.toString(), getProcedureBody(), 
Function.LANGUAGE_SQLPP, duration,
+                    procedureJobSpec.second.toString(), getProcedureBody(), 
Function.FunctionLanguage.SQLPP, duration,
                     dependencies);
 
             MetadataManager.INSTANCE.addEntity(mdTxnCtx, procedure);
diff --git 
a/asterix-bad/src/main/java/org/apache/asterix/bad/metadata/Procedure.java 
b/asterix-bad/src/main/java/org/apache/asterix/bad/metadata/Procedure.java
index c989611..507c8c7 100644
--- a/asterix-bad/src/main/java/org/apache/asterix/bad/metadata/Procedure.java
+++ b/asterix-bad/src/main/java/org/apache/asterix/bad/metadata/Procedure.java
@@ -26,6 +26,7 @@ import org.apache.asterix.bad.BADConstants;
 import org.apache.asterix.common.metadata.DataverseName;
 import org.apache.asterix.metadata.api.ExtensionMetadataDatasetId;
 import org.apache.asterix.metadata.api.IExtensionMetadataEntity;
+import org.apache.asterix.metadata.entities.Function;
 import org.apache.hyracks.algebricks.common.utils.Triple;
 
 public class Procedure implements IExtensionMetadataEntity {
@@ -37,7 +38,7 @@ public class Procedure implements IExtensionMetadataEntity {
     private final List<String> params;
     private final String body;
     private final String type;
-    private final String language;
+    private final Function.FunctionLanguage language;
     private final String duration;
     /*
     Dependencies are stored as an array of size two:
@@ -49,7 +50,7 @@ public class Procedure implements IExtensionMetadataEntity {
     private final List<List<Triple<DataverseName, String, String>>> 
dependencies;
 
     public Procedure(DataverseName dataverseName, String functionName, int 
arity, List<String> params, String type,
-            String functionBody, String language, String duration,
+            String functionBody, Function.FunctionLanguage language, String 
duration,
             List<List<Triple<DataverseName, String, String>>> dependencies) {
         this.procedureId = new EntityId(BADConstants.PROCEDURE_KEYWORD, 
dataverseName, functionName);
         this.params = params;
@@ -83,7 +84,7 @@ public class Procedure implements IExtensionMetadataEntity {
         return type;
     }
 
-    public String getLanguage() {
+    public Function.FunctionLanguage getLanguage() {
         return language;
     }
 
diff --git 
a/asterix-bad/src/main/java/org/apache/asterix/bad/metadata/ProcedureTupleTranslator.java
 
b/asterix-bad/src/main/java/org/apache/asterix/bad/metadata/ProcedureTupleTranslator.java
index d5395d2..dfcca97 100644
--- 
a/asterix-bad/src/main/java/org/apache/asterix/bad/metadata/ProcedureTupleTranslator.java
+++ 
b/asterix-bad/src/main/java/org/apache/asterix/bad/metadata/ProcedureTupleTranslator.java
@@ -23,8 +23,11 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.asterix.builders.OrderedListBuilder;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.asterix.common.exceptions.MetadataException;
 import org.apache.asterix.common.metadata.DataverseName;
+import org.apache.asterix.metadata.entities.Function;
 import 
org.apache.asterix.metadata.entitytupletranslators.AbstractTupleTranslator;
 import org.apache.asterix.om.base.AOrderedList;
 import org.apache.asterix.om.base.ARecord;
@@ -32,6 +35,7 @@ import org.apache.asterix.om.base.AString;
 import org.apache.asterix.om.base.IACursor;
 import org.apache.asterix.om.types.AOrderedListType;
 import org.apache.asterix.om.types.BuiltinType;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Triple;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -65,7 +69,7 @@ public class ProcedureTupleTranslator extends 
AbstractTupleTranslator<Procedure>
     }
 
     @Override
-    public Procedure createMetadataEntityFromARecord(ARecord procedureRecord) 
throws HyracksDataException {
+    public Procedure createMetadataEntityFromARecord(ARecord procedureRecord) 
throws AlgebricksException {
         String dataverseCanonicalName = ((AString) procedureRecord
                 
.getValueByPos(BADMetadataRecordTypes.PROCEDURE_ARECORD_DATAVERSENAME_FIELD_INDEX)).getStringValue();
         DataverseName dataverseName = 
DataverseName.createFromCanonicalForm(dataverseCanonicalName);
@@ -88,9 +92,13 @@ public class ProcedureTupleTranslator extends 
AbstractTupleTranslator<Procedure>
                 
.getValueByPos(BADMetadataRecordTypes.PROCEDURE_ARECORD_PROCEDURE_DEFINITION_FIELD_INDEX))
                         .getStringValue();
 
-        String language = ((AString) procedureRecord
+        String languageValue = ((AString) procedureRecord
                 
.getValueByPos(BADMetadataRecordTypes.PROCEDURE_ARECORD_PROCEDURE_LANGUAGE_FIELD_INDEX))
                         .getStringValue();
+        Function.FunctionLanguage language = 
Function.FunctionLanguage.findByName(languageValue);
+        if (language == null) {
+            throw new AsterixException(ErrorCode.METADATA_ERROR, 
languageValue);
+        }
 
         String duration = ((AString) procedureRecord
                 
.getValueByPos(BADMetadataRecordTypes.PROCEDURE_ARECORD_PROCEDURE_DURATION_FIELD_INDEX))
@@ -196,7 +204,7 @@ public class ProcedureTupleTranslator extends 
AbstractTupleTranslator<Procedure>
 
         // write field 6
         fieldValue.reset();
-        aString.setValue(procedure.getLanguage());
+        aString.setValue(procedure.getLanguage().getName());
         stringSerde.serialize(aString, fieldValue.getDataOutput());
         
recordBuilder.addField(BADMetadataRecordTypes.PROCEDURE_ARECORD_PROCEDURE_LANGUAGE_FIELD_INDEX,
 fieldValue);
 

Reply via email to