@Override public Object getObject(int field) { return delegate.getObject(field); }
@Override public Object getObject(int field) { if (coercers[field] == null) { return delegate.getObject(field); } return coercers[field].getObject(delegate, field); }
@Override public Object getObject(int field) { return delegate.getObject(toDelegateField(field)); }
@Override public Object getObject(int field) { return delegate.getObject(toDelegateField(field)); }
@Override public Object getObject(int field) { ColumnMapping columnMapping = columnMappings.get(field); if (columnMapping.getKind() == REGULAR) { return delegate.getObject(columnMapping.getIndex()); } return objects[field]; }
scratch[i] = (Block) delegate.getObject(index);
@Override public void coerce(RecordCursor delegate, int field) { if (delegate.isNull(field)) { setIsNull(true); return; } Block block = (Block) delegate.getObject(field); if (pageBuilder.isFull()) { pageBuilder.reset(); } BlockBuilder blockBuilder = pageBuilder.getBlockBuilder(0); BlockBuilder rowBuilder = blockBuilder.beginBlockEntry(); for (int i = 0; i < toFieldTypes.size(); i++) { if (i >= fromFieldTypes.size() || block.isNull(i)) { rowBuilder.appendNull(); } else if (coercers[i] == null) { toFieldTypes.get(i).appendTo(block, i, rowBuilder); } else { rewriteBlock(fromFieldTypes.get(i), toFieldTypes.get(i), block, i, rowBuilder, coercers[i], bridgingRecordCursor); } } blockBuilder.closeEntry(); pageBuilder.declarePosition(); setObject(toType.getObject(blockBuilder, blockBuilder.getPositionCount() - 1)); } }
private static boolean fieldEquals(RecordCursor cursor, Field field1, Field field2) { checkArgument(cursor.getType(field1.getField()).equals(cursor.getType(field2.getField())), "Should only be comparing fields of the same type"); if (cursor.isNull(field1.getField()) || cursor.isNull(field2.getField())) { return false; } Class<?> javaType = cursor.getType(field1.getField()).getJavaType(); try { if (javaType == long.class) { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invokeExact(cursor.getLong(field1.getField()), cursor.getLong(field2.getField()))); } else if (javaType == double.class) { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invokeExact(cursor.getDouble(field1.getField()), cursor.getDouble(field2.getField()))); } else if (javaType == boolean.class) { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invokeExact(cursor.getBoolean(field1.getField()), cursor.getBoolean(field2.getField()))); } else if (javaType == Slice.class) { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invokeExact(cursor.getSlice(field1.getField()), cursor.getSlice(field2.getField()))); } else { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invoke(cursor.getObject(field1.getField()), cursor.getObject(field2.getField()))); } } catch (Throwable t) { throwIfUnchecked(t); throw new RuntimeException(t); } }
return; Block block = (Block) delegate.getObject(field); if (pageBuilder.isFull()) { pageBuilder.reset();
private static boolean fieldEquals(RecordCursor cursor, Field field1, Field field2) { checkArgument(cursor.getType(field1.getField()).equals(cursor.getType(field2.getField())), "Should only be comparing fields of the same type"); if (cursor.isNull(field1.getField()) || cursor.isNull(field2.getField())) { return false; } Class<?> javaType = cursor.getType(field1.getField()).getJavaType(); try { if (javaType == long.class) { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invokeExact(cursor.getLong(field1.getField()), cursor.getLong(field2.getField()))); } else if (javaType == double.class) { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invokeExact(cursor.getDouble(field1.getField()), cursor.getDouble(field2.getField()))); } else if (javaType == boolean.class) { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invokeExact(cursor.getBoolean(field1.getField()), cursor.getBoolean(field2.getField()))); } else if (javaType == Slice.class) { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invokeExact(cursor.getSlice(field1.getField()), cursor.getSlice(field2.getField()))); } else { return TRUE.equals((Boolean) field1.getEqualsMethodHandle().invoke(cursor.getObject(field1.getField()), cursor.getObject(field2.getField()))); } } catch (Throwable t) { throwIfUnchecked(t); throw new RuntimeException(t); } }
type.writeObject(output, cursor.getObject(columnIndex));
type.writeObject(output, cursor.getObject(column));
return; Block block = (Block) delegate.getObject(field); if (pageBuilder.isFull()) { pageBuilder.reset();
return cursor.getObject(field);
return cursor.getObject(field);