@Override public Block toBlock(Type desiredType) { checkArgument(TIMESTAMP.equals(desiredType), "type doesn't match: %s", desiredType); int numberOfRecords = numberOfRecords(); return new LongArrayBlock( numberOfRecords, Optional.ofNullable(nulls), timestamps == null ? new long[numberOfRecords] : timestamps); }
@Override Object extractValue(Block block, int position) { return TIMESTAMP.getLong(block, position); }
public static Block createTestBlock() { BlockBuilder blockBuilder = TIMESTAMP.createBlockBuilder(null, 15); TIMESTAMP.writeLong(blockBuilder, 1111); TIMESTAMP.writeLong(blockBuilder, 1111); TIMESTAMP.writeLong(blockBuilder, 1111); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 3333); TIMESTAMP.writeLong(blockBuilder, 3333); TIMESTAMP.writeLong(blockBuilder, 4444); return blockBuilder.build(); }
public static Block createTimestampSequenceBlock(int start, int end) { BlockBuilder builder = TIMESTAMP.createFixedSizeBlockBuilder(end - start); for (int i = start; i < end; i++) { TIMESTAMP.writeLong(builder, i); } return builder.build(); }
@Override void writeNextRandomValue(Random random, BlockBuilder builder) { TIMESTAMP.writeLong(builder, nextTimestamp(random)); } }
@Override void writeNextRandomValue(Random random, BlockBuilder builder) { TIMESTAMP.writeLong(builder, nextTimestamp(random)); } }
public static Block createTimestampSequenceBlock(int start, int end) { BlockBuilder builder = TIMESTAMP.createFixedSizeBlockBuilder(end - start); for (int i = start; i < end; i++) { TIMESTAMP.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());
@Override Object extractValue(Block block, int position) { return TIMESTAMP.getLong(block, position); }
public static Block createTestBlock() { BlockBuilder blockBuilder = TIMESTAMP.createBlockBuilder(null, 15); TIMESTAMP.writeLong(blockBuilder, 1111); TIMESTAMP.writeLong(blockBuilder, 1111); TIMESTAMP.writeLong(blockBuilder, 1111); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 2222); TIMESTAMP.writeLong(blockBuilder, 3333); TIMESTAMP.writeLong(blockBuilder, 3333); TIMESTAMP.writeLong(blockBuilder, 4444); return blockBuilder.build(); }
private static List<Page> buildPages(MetadataDao dao, TupleDomain<Integer> tupleDomain) { Map<Integer, NullableValue> domainValues = extractFixedValues(tupleDomain).orElse(ImmutableMap.of()); String schemaName = getStringValue(domainValues.get(getColumnIndex(METADATA, SCHEMA_NAME))); String tableName = getStringValue(domainValues.get(getColumnIndex(METADATA, TABLE_NAME))); PageListBuilder pageBuilder = new PageListBuilder(METADATA.getColumns().stream() .map(ColumnMetadata::getType) .collect(toList())); for (TableStatsRow row : dao.getTableStatsRows(schemaName, tableName)) { pageBuilder.beginRow(); VARCHAR.writeSlice(pageBuilder.nextBlockBuilder(), utf8Slice(row.getSchemaName())); VARCHAR.writeSlice(pageBuilder.nextBlockBuilder(), utf8Slice(row.getTableName())); TIMESTAMP.writeLong(pageBuilder.nextBlockBuilder(), row.getCreateTime()); TIMESTAMP.writeLong(pageBuilder.nextBlockBuilder(), row.getUpdateTime()); BIGINT.writeLong(pageBuilder.nextBlockBuilder(), row.getTableVersion()); BIGINT.writeLong(pageBuilder.nextBlockBuilder(), row.getShardCount()); BIGINT.writeLong(pageBuilder.nextBlockBuilder(), row.getRowCount()); BIGINT.writeLong(pageBuilder.nextBlockBuilder(), row.getCompressedSize()); BIGINT.writeLong(pageBuilder.nextBlockBuilder(), row.getUncompressedSize()); } return pageBuilder.build(); } }
throw new UnsupportedOperationException("H2 does not support TIME WITH TIME ZONE"); else if (TIMESTAMP.equals(type)) {
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); }
@Test void testTimestampBlock() { BlockBuilder blockBuilder = TIMESTAMP.createBlockBuilder(null, 4); // start and end of UTC day TIMESTAMP.writeLong(blockBuilder, UTC_TIME.getMillis()); TIMESTAMP.writeLong(blockBuilder, UTC_TIME.getMillis() + Duration.ofHours(23).toMillis()); // start and end of PST day TIMESTAMP.writeLong(blockBuilder, PST_TIME.getMillis()); TIMESTAMP.writeLong(blockBuilder, PST_TIME.getMillis() + Duration.ofHours(23).toMillis()); Block block = blockBuilder.build(); TemporalFunction temporalFunction = new TemporalFunction(UTC); assertEquals(temporalFunction.getDay(TIMESTAMP, block, 0), 1); assertEquals(temporalFunction.getDay(TIMESTAMP, block, 1), 1); assertEquals(temporalFunction.getDay(TIMESTAMP, block, 2), 1); assertEquals(temporalFunction.getDay(TIMESTAMP, block, 3), 2); temporalFunction = new TemporalFunction(PST); assertEquals(temporalFunction.getDay(TIMESTAMP, block, 0), 0); assertEquals(temporalFunction.getDay(TIMESTAMP, block, 1), 1); assertEquals(temporalFunction.getDay(TIMESTAMP, block, 2), 1); assertEquals(temporalFunction.getDay(TIMESTAMP, block, 3), 1); }
return; case TIMESTAMP: TimestampType.TIMESTAMP.writeLong(builder, formatTimestampAsLong(object, (TimestampObjectInspector) inspector)); return; case BINARY:
values.add(DATE_FORMATTER.print(TimeUnit.DAYS.toMillis(type.getLong(block, position)))); else if (TIMESTAMP.equals(type)) { values.add(new Timestamp(type.getLong(block, position)));
@Override public void setField(Block block, int position) { long millisUtc = TimestampType.TIMESTAMP.getLong(block, position); value.setTime(millisUtc); rowInspector.setStructFieldData(row, field, value); } }
else if (TIMESTAMP.equals(type)) { return SqlTimestamp.JSON_FORMATTER.parse((String) value, LocalDateTime::from);
@Override public void writeJsonValue(JsonGenerator jsonGenerator, Block block, int position, ConnectorSession session) throws IOException { if (block.isNull(position)) { jsonGenerator.writeNull(); } else { long value = TIMESTAMP.getLong(block, position); jsonGenerator.writeString(printTimestampWithoutTimeZone(session.getTimeZoneKey(), value)); } } }
fieldBuilders = ImmutableList.of(); else if (TIMESTAMP.equals(type)) { statisticsBuilder = new CountStatisticsBuilder(); fieldExtractor = ignored -> ImmutableList.of();