public Iterator<GTRecord> iterator() { // to troubleshoot a myth NPE on line: return internal.iterator() checkNPE(); return internal.iterator(); }
public void close() throws IOException { scanner.close(); }
public boolean isSegmentSkipped() { return scanner.isSegmentSkipped(); }
@Override public Iterator<GTRecord> iterator() { return scanner.iterator(); }
public CubeSegmentScanner(CubeSegment cubeSeg, Cuboid cuboid, Set<TblColRef> dimensions, // Set<TblColRef> groups, List<TblColRef> dynGroups, List<TupleExpression> dynGroupExprs, // Collection<FunctionDesc> metrics, List<DynamicFunctionDesc> dynFuncs, // TupleFilter originalfilter, TupleFilter havingFilter, StorageContext context) { logger.info("Init CubeSegmentScanner for segment {}", cubeSeg.getName()); this.cuboid = cuboid; this.cubeSeg = cubeSeg; //the filter might be changed later in this CubeSegmentScanner (In ITupleFilterTransformer) //to avoid issues like in https://issues.apache.org/jira/browse/KYLIN-1954, make sure each CubeSegmentScanner //is working on its own copy byte[] serialize = TupleFilterSerializer.serialize(originalfilter, StringCodeSystem.INSTANCE); TupleFilter filter = TupleFilterSerializer.deserialize(serialize, StringCodeSystem.INSTANCE); // translate FunctionTupleFilter to IN clause ITupleFilterTransformer translator = new BuiltInFunctionTransformer(cubeSeg.getDimensionEncodingMap()); filter = translator.transform(filter); CubeScanRangePlanner scanRangePlanner; try { scanRangePlanner = new CubeScanRangePlanner(cubeSeg, cuboid, filter, dimensions, groups, dynGroups, dynGroupExprs, metrics, dynFuncs, havingFilter, context); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } scanRequest = scanRangePlanner.planScanRequest(); String gtStorage = ((GTCubeStorageQueryBase) context.getStorageQuery()).getGTStorage(); scanner = new ScannerWorker(cubeSeg, cuboid, scanRequest, gtStorage, context); }
@Override public Iterator<GTRecord> iterator() { return scanner.iterator(); }
public CubeSegmentScanner(CubeSegment cubeSeg, Cuboid cuboid, Set<TblColRef> dimensions, // Set<TblColRef> groups, List<TblColRef> dynGroups, List<TupleExpression> dynGroupExprs, // Collection<FunctionDesc> metrics, List<DynamicFunctionDesc> dynFuncs, // TupleFilter originalfilter, TupleFilter havingFilter, StorageContext context) { logger.info("Init CubeSegmentScanner for segment {}", cubeSeg.getName()); this.cuboid = cuboid; this.cubeSeg = cubeSeg; //the filter might be changed later in this CubeSegmentScanner (In ITupleFilterTransformer) //to avoid issues like in https://issues.apache.org/jira/browse/KYLIN-1954, make sure each CubeSegmentScanner //is working on its own copy byte[] serialize = TupleFilterSerializer.serialize(originalfilter, StringCodeSystem.INSTANCE); TupleFilter filter = TupleFilterSerializer.deserialize(serialize, StringCodeSystem.INSTANCE); // translate FunctionTupleFilter to IN clause ITupleFilterTransformer translator = new BuiltInFunctionTransformer(cubeSeg.getDimensionEncodingMap()); filter = translator.transform(filter); CubeScanRangePlanner scanRangePlanner; try { scanRangePlanner = new CubeScanRangePlanner(cubeSeg, cuboid, filter, dimensions, groups, dynGroups, dynGroupExprs, metrics, dynFuncs, havingFilter, context); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } scanRequest = scanRangePlanner.planScanRequest(); String gtStorage = ((GTCubeStorageQueryBase) context.getStorageQuery()).getGTStorage(); scanner = new ScannerWorker(cubeSeg, cuboid, scanRequest, gtStorage, context); }
public ScannerWorker(ISegment segment, Cuboid cuboid, GTScanRequest scanRequest, String gtStorage, StorageContext context) { inputArgs = new Object[] { segment, cuboid, scanRequest, gtStorage, context }; if (scanRequest == null) { logger.info("Segment {} will be skipped", segment); internal = new EmptyGTScanner(); return; } final GTInfo info = scanRequest.getInfo(); try { IGTStorage rpc = (IGTStorage) Class.forName(gtStorage) .getConstructor(ISegment.class, Cuboid.class, GTInfo.class, StorageContext.class) .newInstance(segment, cuboid, info, context); // default behavior internal = rpc.getGTScanner(scanRequest); } catch (Exception e) { throw new RuntimeException(e); } checkNPE(); }
public void close() throws IOException { scanner.close(); }
public boolean isSegmentSkipped() { return scanner.isSegmentSkipped(); }
public Iterator<GTRecord> iterator() { // to troubleshoot a myth NPE on line: return internal.iterator() checkNPE(); return internal.iterator(); }
public ScannerWorker(ISegment segment, Cuboid cuboid, GTScanRequest scanRequest, String gtStorage, StorageContext context) { inputArgs = new Object[] { segment, cuboid, scanRequest, gtStorage, context }; if (scanRequest == null) { logger.info("Segment {} will be skipped", segment); internal = new EmptyGTScanner(); return; } final GTInfo info = scanRequest.getInfo(); try { IGTStorage rpc = (IGTStorage) Class.forName(gtStorage) .getConstructor(ISegment.class, Cuboid.class, GTInfo.class, StorageContext.class) .newInstance(segment, cuboid, info, context); // default behavior internal = rpc.getGTScanner(scanRequest); } catch (Exception e) { throw new RuntimeException(e); } checkNPE(); }