public static MultiComparator create(IBinaryComparatorFactory[] cmpFactories) { IBinaryComparator[] cmps = new IBinaryComparator[cmpFactories.length]; for (int i = 0; i < cmpFactories.length; i++) { cmps[i] = cmpFactories[i].createBinaryComparator(); } if (cmps.length == 1) { return new SingleComparator(cmps); } else { return new MultiComparator(cmps); } }
public static MultiComparator create(IBinaryComparatorFactory[] cmpFactories, int startIndex, int numCmps) { IBinaryComparator[] cmps = new IBinaryComparator[numCmps]; for (int i = startIndex; i < startIndex + numCmps; i++) { cmps[i] = cmpFactories[i].createBinaryComparator(); } if (cmps.length == 1) { return new SingleComparator(cmps); } else { return new MultiComparator(cmps); } }
public static MultiComparator create(IBinaryComparatorFactory[]... cmpFactories) { int size = 0; for (int i = 0; i < cmpFactories.length; i++) { size += cmpFactories[i].length; } IBinaryComparator[] cmps = new IBinaryComparator[size]; int x = 0; for (int i = 0; i < cmpFactories.length; i++) { for (int j = 0; j < cmpFactories[i].length; j++) { cmps[x++] = cmpFactories[i][j].createBinaryComparator(); } } if (cmps.length == 1) { return new SingleComparator(cmps); } else { return new MultiComparator(cmps); } } }
public static MultiComparator getSearchMultiComparator(IBinaryComparatorFactory[] cmpFactories, ITupleReference searchKey) { if (searchKey == null || cmpFactories.length == searchKey.getFieldCount()) { return MultiComparator.create(cmpFactories); } IBinaryComparator[] newCmps = new IBinaryComparator[searchKey.getFieldCount()]; for (int i = 0; i < searchKey.getFieldCount(); i++) { newCmps[i] = cmpFactories[i].createBinaryComparator(); } return new MultiComparator(newCmps); }
public static MultiComparator getSearchMultiComparator(IBinaryComparatorFactory[] cmpFactories, ITupleReference searchKey) { if (searchKey == null || cmpFactories.length == searchKey.getFieldCount()) { return MultiComparator.create(cmpFactories); } IBinaryComparator[] newCmps = new IBinaryComparator[searchKey.getFieldCount()]; for (int i = 0; i < searchKey.getFieldCount(); i++) { newCmps[i] = cmpFactories[i].createBinaryComparator(); } return new MultiComparator(newCmps); }
private <T> void searchIndex(TxnId txnId, IMetadataIndex index, ITupleReference searchKey, IValueExtractor<T> valueExtractor, List<T> results) throws AlgebricksException, HyracksDataException, RemoteException { IBinaryComparatorFactory[] comparatorFactories = index.getKeyBinaryComparatorFactory(); if (index.getFile() == null) { throw new AlgebricksException("No file for Index " + index.getDataverseName() + "." + index.getIndexName()); } String resourceName = index.getFile().getRelativePath(); IIndex indexInstance = datasetLifecycleManager.get(resourceName); datasetLifecycleManager.open(resourceName); IIndexAccessor indexAccessor = indexInstance.createAccessor(NoOpIndexAccessParameters.INSTANCE); try { IBinaryComparator[] searchCmps = null; MultiComparator searchCmp = null; if (searchKey != null) { searchCmps = new IBinaryComparator[searchKey.getFieldCount()]; for (int i = 0; i < searchKey.getFieldCount(); i++) { searchCmps[i] = comparatorFactories[i].createBinaryComparator(); } searchCmp = new MultiComparator(searchCmps); } RangePredicate rangePred = new RangePredicate(searchKey, searchKey, true, true, searchCmp, searchCmp); search(indexAccessor, rangePred, results, valueExtractor, txnId); } finally { indexAccessor.destroy(); } datasetLifecycleManager.close(resourceName); }