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;
}
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);
}
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;
}
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;
}
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;
}
Aggregations