This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 6a8dafa814c3b654df789dfe9fbb780989003482 Merge: 60b27fc 6c239e7 Author: Michael Blow <[email protected]> AuthorDate: Mon Jun 22 10:38:42 2020 -0400 Merge branch 'gerrit/mad-hatter' Change-Id: I5cd06cc3cd69068faecced6a2b1cc558eecd0784 .../SqlppExpressionToPlanTranslator.java | 24 +++++++++---------- .../apache/asterix/translator/TypeTranslator.java | 20 +++++++++------- .../apache/asterix/app/active/RecoveryTask.java | 6 ++--- .../asterix/app/translator/QueryTranslator.java | 14 ++++++----- .../create-dataset-inline-type-2.5.ddl.sqlpp | 14 +++++++---- .../ASTERIXDB-2750_unnest_join.1.query.sqlpp | 10 ++++---- .../ASTERIXDB-2750_unnest_join.2.query.sqlpp | 11 +++++---- .../ASTERIXDB-2750_unnest_join.1.adm | 1 + .../ASTERIXDB-2750_unnest_join.2.adm | 1 + .../test/resources/runtimets/testsuite_sqlpp.xml | 6 +++++ .../asterix-lang-sqlpp/src/main/javacc/SQLPP.jj | 6 ++--- hyracks-fullstack/hyracks/hyracks-util/pom.xml | 4 ++++ .../java/org/apache/hyracks/util/IRetryPolicy.java | 2 +- .../org/apache/hyracks/util/ThrowingConsumer.java | 19 +++++++++++++++ ...{IRetryPolicy.java => ThrowingIntConsumer.java} | 28 ++++++++++++++++------ 15 files changed, 110 insertions(+), 56 deletions(-) diff --cc asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java index aa00fb3,cb6515b..6e02fc2 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java @@@ -28,7 -29,8 +28,9 @@@ import java.util.Map import org.apache.asterix.common.annotations.IRecordFieldDataGen; import org.apache.asterix.common.annotations.RecordDataGenAnnotation; + import org.apache.asterix.common.exceptions.CompilationException; + import org.apache.asterix.common.exceptions.ErrorCode; +import org.apache.asterix.common.metadata.DataverseName; import org.apache.asterix.lang.common.expression.OrderedListTypeDefinition; import org.apache.asterix.lang.common.expression.RecordTypeDefinition; import org.apache.asterix.lang.common.expression.RecordTypeDefinition.RecordKind; @@@ -51,7 -52,7 +53,8 @@@ import org.apache.asterix.om.types.Abst import org.apache.asterix.om.types.IAType; import org.apache.asterix.om.types.TypeSignature; import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException; +import org.apache.hyracks.algebricks.common.utils.Pair; + import org.apache.hyracks.api.exceptions.SourceLocation; public class TypeTranslator { @@@ -72,12 -70,12 +75,12 @@@ Map<String, Map<ARecordType, List<Integer>>> incompleteFieldTypes = new HashMap<>(); Map<TypeSignature, List<AbstractCollectionType>> incompleteItemTypes = new HashMap<>(); Map<TypeSignature, List<TypeSignature>> incompleteTopLevelTypeReferences = new HashMap<>(); - firstPass(typeExpr, typeName, typeMap, incompleteFieldTypes, incompleteItemTypes, + firstPass(typeDataverse, typeName, typeExpr, outTypeMap, incompleteFieldTypes, incompleteItemTypes, - incompleteTopLevelTypeReferences, defaultDataverse); + incompleteTopLevelTypeReferences, typeDataverse); - secondPass(mdTxnCtx, typeMap, incompleteFieldTypes, incompleteItemTypes, incompleteTopLevelTypeReferences, + secondPass(mdTxnCtx, outTypeMap, incompleteFieldTypes, incompleteItemTypes, incompleteTopLevelTypeReferences, - typeDataverse); + typeDataverse, typeExpr.getSourceLocation()); - for (IAType type : typeMap.values()) { + for (IAType type : outTypeMap.values()) { if (type.getTypeTag().isDerivedType()) { ((AbstractComplexType) type).generateNestedDerivedTypeNames(); } @@@ -136,15 -137,15 +140,15 @@@ private static void secondPass(MetadataTransactionContext mdTxnCtx, Map<TypeSignature, IAType> typeMap, Map<String, Map<ARecordType, List<Integer>>> incompleteFieldTypes, Map<TypeSignature, List<AbstractCollectionType>> incompleteItemTypes, - Map<TypeSignature, List<TypeSignature>> incompleteTopLevelTypeReferences, DataverseName typeDataverse) - throws AlgebricksException { - Map<TypeSignature, List<TypeSignature>> incompleteTopLevelTypeReferences, String typeDataverse, ++ Map<TypeSignature, List<TypeSignature>> incompleteTopLevelTypeReferences, DataverseName typeDataverse, + SourceLocation sourceLoc) throws AlgebricksException { // solve remaining top level references for (TypeSignature typeSignature : incompleteTopLevelTypeReferences.keySet()) { IAType t; - Datatype dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeSignature.getNamespace(), + Datatype dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeSignature.getDataverseName(), typeSignature.getName()); if (dt == null) { - throw new AlgebricksException("Could not resolve type " + typeSignature); + throw new CompilationException(ErrorCode.UNKNOWN_TYPE, sourceLoc, typeSignature.getName()); } else { t = dt.getDatatype(); } @@@ -185,10 -186,10 +189,10 @@@ IAType t; Datatype dt; if (MetadataManager.INSTANCE != null) { - dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeSignature.getNamespace(), + dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeSignature.getDataverseName(), typeSignature.getName()); if (dt == null) { - throw new AlgebricksException("Could not resolve type " + typeSignature); + throw new CompilationException(ErrorCode.UNKNOWN_TYPE, sourceLoc, typeSignature.getName()); } t = dt.getDatatype(); } else { diff --cc asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java index c0a719b,f6536ac..a5fef11 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java @@@ -694,11 -653,10 +695,11 @@@ public class QueryTranslator extends Ab IAType itemType; switch (itemTypeExpr.getTypeKind()) { case TYPEREFERENCE: - Datatype itemTypeEntity = metadataProvider.findTypeEntity(itemTypeDataverseName, itemTypeName); + itemTypeEntity = metadataProvider.findTypeEntity(itemTypeDataverseName, itemTypeName); if (itemTypeEntity == null || itemTypeEntity.getIsAnonymous()) { // anonymous types cannot be referred from CREATE DATASET - throw new AsterixException(ErrorCode.UNKNOWN_TYPE, sourceLoc, itemTypeFullyQualifiedName); + throw new AsterixException(ErrorCode.UNKNOWN_TYPE, sourceLoc, + DatasetUtil.getFullyQualifiedDisplayName(itemTypeDataverseName, itemTypeName)); } itemType = itemTypeEntity.getDatatype(); validateDatasetItemType(dsType, itemType, false, sourceLoc);
