@Override public Block toBlock(Type desiredType) { checkArgument(DATE.equals(desiredType), "type doesn't match: %s", desiredType); int numberOfRecords = numberOfRecords(); return new IntArrayBlock( numberOfRecords, Optional.ofNullable(nulls), dates == null ? new int[numberOfRecords] : dates); }
public static Block createTestBlock() { BlockBuilder blockBuilder = DATE.createBlockBuilder(null, 15); DATE.writeLong(blockBuilder, 1111); DATE.writeLong(blockBuilder, 1111); DATE.writeLong(blockBuilder, 1111); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 3333); DATE.writeLong(blockBuilder, 3333); DATE.writeLong(blockBuilder, 4444); return blockBuilder.build(); }
@Override Object extractValue(Block block, int position) { return DATE.getLong(block, position); }
public static Block createDateSequenceBlock(int start, int end) { BlockBuilder builder = DATE.createFixedSizeBlockBuilder(end - start); for (int i = start; i < end; i++) { DATE.writeLong(builder, i); } return builder.build(); }
@Override void writeNextRandomValue(Random random, BlockBuilder builder) { DATE.writeLong(builder, nextDate(random)); } }
@Override void writeNextRandomValue(Random random, BlockBuilder builder) { DATE.writeLong(builder, nextDate(random)); } }
public static Block createDateSequenceBlock(int start, int end) { BlockBuilder builder = DATE.createFixedSizeBlockBuilder(end - start); for (int i = start; i < end; i++) { DATE.writeLong(builder, i); } return builder.build(); }
checkArgument(value instanceof Integer, "Expected value %d to be an instance of Integer, but is a %s", i, value.getClass().getSimpleName()); else if (BIGINT.equals(type) || DATE.equals(type) || TIMESTAMP.equals(type) || TIMESTAMP_WITH_TIME_ZONE.equals(type)) { checkArgument(value instanceof Integer || value instanceof Long, "Expected value %d to be an instance of Integer or Long, but is a %s", i, value.getClass().getSimpleName());
public static Block createTestBlock() { BlockBuilder blockBuilder = DATE.createBlockBuilder(null, 15); DATE.writeLong(blockBuilder, 1111); DATE.writeLong(blockBuilder, 1111); DATE.writeLong(blockBuilder, 1111); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 2222); DATE.writeLong(blockBuilder, 3333); DATE.writeLong(blockBuilder, 3333); DATE.writeLong(blockBuilder, 4444); return blockBuilder.build(); }
@Override Object extractValue(Block block, int position) { return DATE.getLong(block, position); }
break; case DATE: DATE.writeLong(blockBuilder, column.getDate(lineItem)); break; case DOUBLE:
static OptionalDouble toStatsRepresentation(FunctionRegistry functionRegistry, ConnectorSession session, Type type, Object value) { if (convertibleToDoubleWithCast(type)) { InterpretedFunctionInvoker functionInvoker = new InterpretedFunctionInvoker(functionRegistry); Signature castSignature = functionRegistry.getCoercion(type, DoubleType.DOUBLE); return OptionalDouble.of((double) functionInvoker.invoke(castSignature, session, singletonList(value))); } if (DateType.DATE.equals(type)) { return OptionalDouble.of(((Long) value).doubleValue()); } return OptionalDouble.empty(); }
@Override public Block[] getSequenceBlocks(int start, int length) { BlockBuilder blockBuilder = DateType.DATE.createBlockBuilder(null, length); for (int i = start; i < start + length; i++) { DateType.DATE.writeLong(blockBuilder, i); } return new Block[] {blockBuilder.build()}; }
public int getDay(Type type, Block block, int position) { if (type.equals(DATE)) { return toIntExact(DATE.getLong(block, position)); } if (type.equals(TIMESTAMP)) { long millis = TIMESTAMP.getLong(block, position); long local = timeZone.convertUTCToLocal(millis); long days = MILLISECONDS.toDays(local); return toIntExact(days); } throw new IllegalArgumentException("Wrong type for temporal column: " + type); }
break; case DATE: DATE.writeLong(blockBuilder, column.getDate(lineItem)); break; case DOUBLE:
static OptionalDouble toStatsRepresentation(FunctionRegistry functionRegistry, ConnectorSession session, Type type, Object value) { if (convertibleToDoubleWithCast(type)) { InterpretedFunctionInvoker functionInvoker = new InterpretedFunctionInvoker(functionRegistry); Signature castSignature = functionRegistry.getCoercion(type, DoubleType.DOUBLE); return OptionalDouble.of((double) functionInvoker.invoke(castSignature, session, singletonList(value))); } if (DateType.DATE.equals(type)) { return OptionalDouble.of(((Long) value).doubleValue()); } return OptionalDouble.empty(); }
@Override public Block[] getSequenceBlocks(int start, int length) { BlockBuilder blockBuilder = DateType.DATE.createBlockBuilder(null, length); for (int i = start; i < start + length; i++) { DateType.DATE.writeLong(blockBuilder, i); } return new Block[] {blockBuilder.build()}; }
@Override public void writeJsonValue(JsonGenerator jsonGenerator, Block block, int position, ConnectorSession session) throws IOException { if (block.isNull(position)) { jsonGenerator.writeNull(); } else { long value = DATE.getLong(block, position); jsonGenerator.writeString(printDate((int) value)); } } }