Search in sources :

Example 6 with IAType

use of org.apache.asterix.om.types.IAType in project asterixdb by apache.

the class Index method keyFieldType.

private static IAType keyFieldType(List<String> expr, ARecordType recType) throws AlgebricksException {
    IAType fieldType = recType;
    fieldType = recType.getSubFieldType(expr);
    return fieldType;
}
Also used : IAType(org.apache.asterix.om.types.IAType)

Example 7 with IAType

use of org.apache.asterix.om.types.IAType in project asterixdb by apache.

the class Index method getNonNullableType.

public static Pair<IAType, Boolean> getNonNullableType(IAType keyType) {
    boolean nullable = false;
    IAType actualKeyType = keyType;
    if (NonTaggedFormatUtil.isOptional(keyType)) {
        actualKeyType = ((AUnionType) keyType).getActualType();
        nullable = true;
    }
    return new Pair<>(actualKeyType, nullable);
}
Also used : IAType(org.apache.asterix.om.types.IAType) Pair(org.apache.hyracks.algebricks.common.utils.Pair)

Example 8 with IAType

use of org.apache.asterix.om.types.IAType in project asterixdb by apache.

the class BTreeResourceFactoryProvider method getCmpFactories.

private static IBinaryComparatorFactory[] getCmpFactories(MetadataProvider metadataProvider, Dataset dataset, Index index, ARecordType recordType, ARecordType metaType) throws AlgebricksException {
    IBinaryComparatorFactory[] primaryCmpFactories = dataset.getPrimaryComparatorFactories(metadataProvider, recordType, metaType);
    if (index.isPrimaryIndex()) {
        return dataset.getPrimaryComparatorFactories(metadataProvider, recordType, metaType);
    } else if (dataset.getDatasetType() == DatasetType.EXTERNAL && index.getIndexName().equals(IndexingConstants.getFilesIndexName(dataset.getDatasetName()))) {
        return FilesIndexDescription.FILES_INDEX_COMP_FACTORIES;
    }
    int numPrimaryKeys = dataset.getPrimaryKeys().size();
    int numSecondaryKeys = index.getKeyFieldNames().size();
    IBinaryComparatorFactoryProvider cmpFactoryProvider = metadataProvider.getStorageComponentProvider().getComparatorFactoryProvider();
    IBinaryComparatorFactory[] secondaryCmpFactories = new IBinaryComparatorFactory[numSecondaryKeys + numPrimaryKeys];
    for (int i = 0; i < numSecondaryKeys; i++) {
        ARecordType sourceType;
        List<Integer> keySourceIndicators = index.getKeyFieldSourceIndicators();
        if (keySourceIndicators == null || keySourceIndicators.get(i) == 0) {
            sourceType = recordType;
        } else {
            sourceType = metaType;
        }
        Pair<IAType, Boolean> keyTypePair = Index.getNonNullableOpenFieldType(index.getKeyFieldTypes().get(i), index.getKeyFieldNames().get(i), sourceType);
        IAType keyType = keyTypePair.first;
        secondaryCmpFactories[i] = cmpFactoryProvider.getBinaryComparatorFactory(keyType, true);
    }
    // Add serializers and comparators for primary index fields.
    for (int i = 0; i < numPrimaryKeys; i++) {
        secondaryCmpFactories[numSecondaryKeys + i] = primaryCmpFactories[i];
    }
    return secondaryCmpFactories;
}
Also used : IBinaryComparatorFactory(org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory) IBinaryComparatorFactoryProvider(org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider) ARecordType(org.apache.asterix.om.types.ARecordType) IAType(org.apache.asterix.om.types.IAType)

Example 9 with IAType

use of org.apache.asterix.om.types.IAType in project asterixdb by apache.

the class BuiltinTypeMap method getTypeFromTypeName.

public static IAType getTypeFromTypeName(MetadataNode metadataNode, JobId jobId, String dataverseName, String typeName, boolean optional) throws MetadataException {
    IAType type = _builtinTypeMap.get(typeName);
    if (type == null) {
        try {
            Datatype dt = metadataNode.getDatatype(jobId, dataverseName, typeName);
            type = dt.getDatatype();
        } catch (RemoteException e) {
            throw new MetadataException(e);
        }
    }
    if (optional) {
        type = AUnionType.createUnknownableType(type);
    }
    return type;
}
Also used : RemoteException(java.rmi.RemoteException) MetadataException(org.apache.asterix.metadata.MetadataException) IAType(org.apache.asterix.om.types.IAType)

Example 10 with IAType

use of org.apache.asterix.om.types.IAType in project asterixdb by apache.

the class Dataset method getPrimaryComparatorFactories.

/**
     * Gets the comparator factories for the primary key fields of this dataset.
     *
     * @param metadataProvider,
     *            the metadata provider.
     * @return the comparator factories for the primary key fields of this dataset.
     * @throws AlgebricksException
     */
public IBinaryComparatorFactory[] getPrimaryComparatorFactories(MetadataProvider metadataProvider, ARecordType recordType, ARecordType metaType) throws AlgebricksException {
    IStorageComponentProvider storageComponentProvider = metadataProvider.getStorageComponentProvider();
    IBinaryComparatorFactoryProvider cmpFactoryProvider = storageComponentProvider.getComparatorFactoryProvider();
    List<List<String>> partitioningKeys = getPrimaryKeys();
    int numPrimaryKeys = partitioningKeys.size();
    IBinaryComparatorFactory[] cmpFactories = new IBinaryComparatorFactory[numPrimaryKeys];
    List<Integer> indicators = null;
    if (hasMetaPart()) {
        indicators = ((InternalDatasetDetails) getDatasetDetails()).getKeySourceIndicator();
    }
    for (int i = 0; i < numPrimaryKeys; i++) {
        IAType keyType = (indicators == null || indicators.get(i) == 0) ? recordType.getSubFieldType(partitioningKeys.get(i)) : metaType.getSubFieldType(partitioningKeys.get(i));
        cmpFactories[i] = cmpFactoryProvider.getBinaryComparatorFactory(keyType, true);
    }
    return cmpFactories;
}
Also used : IStorageComponentProvider(org.apache.asterix.common.context.IStorageComponentProvider) IBinaryComparatorFactory(org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory) List(java.util.List) IBinaryComparatorFactoryProvider(org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider) IAType(org.apache.asterix.om.types.IAType)

Aggregations

IAType (org.apache.asterix.om.types.IAType)190 ARecordType (org.apache.asterix.om.types.ARecordType)73 ArrayList (java.util.ArrayList)64 ILogicalExpression (org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression)42 ATypeTag (org.apache.asterix.om.types.ATypeTag)40 AbstractFunctionCallExpression (org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression)37 List (java.util.List)32 AlgebricksException (org.apache.hyracks.algebricks.common.exceptions.AlgebricksException)32 AUnionType (org.apache.asterix.om.types.AUnionType)31 AString (org.apache.asterix.om.base.AString)28 LogicalVariable (org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable)27 Mutable (org.apache.commons.lang3.mutable.Mutable)25 Pair (org.apache.hyracks.algebricks.common.utils.Pair)24 HyracksDataException (org.apache.hyracks.api.exceptions.HyracksDataException)20 Dataset (org.apache.asterix.metadata.entities.Dataset)18 AsterixException (org.apache.asterix.common.exceptions.AsterixException)17 AOrderedListType (org.apache.asterix.om.types.AOrderedListType)16 VariableReferenceExpression (org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression)16 IVisitablePointable (org.apache.asterix.om.pointables.base.IVisitablePointable)15 IVariableTypeEnvironment (org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment)15