Skip to content

Commit 8ba1fbf

Browse files
committed
continue setting sqlType in JDBC
1 parent 1b717d5 commit 8ba1fbf

File tree

6 files changed

+27
-15
lines changed

6 files changed

+27
-15
lines changed

fdb-relational-grpc/src/main/java/com/apple/foundationdb/relational/jdbc/RelationalArrayFacade.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,15 @@ public RelationalResultSet getResultSet(long oneBasedIndex, int askedForCount) t
183183
var resultSetBuilder = ResultSet.newBuilder();
184184

185185
final var componentType = this.delegateMetadata.getType();
186-
final var componentColumnBuilder = ColumnMetadata.newBuilder().setName("VALUE").setType(componentType);
186+
final var componentSqlType = this.delegateMetadata.getJavaSqlTypesCode();
187+
final var componentColumnBuilder = ColumnMetadata.newBuilder().setName("VALUE").setType(componentType).setJavaSqlTypesCode(componentSqlType);
187188
if (componentType == Type.ARRAY) {
188189
componentColumnBuilder.setArrayMetadata(this.delegateMetadata.getArrayMetadata());
189190
} else if (componentType == Type.STRUCT) {
190191
componentColumnBuilder.setStructMetadata(this.delegateMetadata.getStructMetadata());
191192
}
192193
resultSetBuilder.setMetadata(ResultSetMetadata.newBuilder().setColumnMetadata(ListColumnMetadata.newBuilder()
193-
.addColumnMetadata(ColumnMetadata.newBuilder().setName("INDEX").setType(Type.INTEGER).build())
194+
.addColumnMetadata(ColumnMetadata.newBuilder().setName("INDEX").setType(Type.INTEGER).setJavaSqlTypesCode(Types.INTEGER).build())
194195
.addColumnMetadata(componentColumnBuilder.build()).build()).build());
195196
for (int i = index; i < count; i++) {
196197
final var listColumnBuilder = ListColumn.newBuilder();
@@ -276,7 +277,7 @@ public RelationalArrayBuilder addStruct(RelationalStruct struct) throws SQLExcep
276277

277278
private void initOrCheckMetadata(ListColumnMetadata innerMetadata) {
278279
if (metadata == null) {
279-
final var builder = ColumnMetadata.newBuilder().setName("ARRAY").setType(Type.STRUCT);
280+
final var builder = ColumnMetadata.newBuilder().setName("ARRAY").setJavaSqlTypesCode(Types.STRUCT).setType(Type.STRUCT);
280281
builder.setStructMetadata(innerMetadata);
281282
metadata = builder.build();
282283
} else {

fdb-relational-grpc/src/main/java/com/apple/foundationdb/relational/jdbc/RelationalStructFacade.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ int getZeroBasedOffsetOrThrow(String fieldName) throws SQLException {
433433
public RelationalStructBuilder addBoolean(String fieldName, boolean b) {
434434
// Add the metadata and get offset at where to insert data.
435435
int offset = addMetadata(ColumnMetadata.newBuilder()
436-
.setName(fieldName).setType(Type.BOOLEAN).build());
436+
.setName(fieldName).setJavaSqlTypesCode(Types.BOOLEAN).setType(Type.BOOLEAN).build());
437437
// Add field data.
438438
this.listColumnBuilder.addColumn(offset, Column.newBuilder().setBoolean(b).build());
439439
return this;
@@ -442,7 +442,7 @@ public RelationalStructBuilder addBoolean(String fieldName, boolean b) {
442442
@Override
443443
public RelationalStructBuilder addLong(String fieldName, long l) {
444444
int offset = addMetadata(ColumnMetadata.newBuilder()
445-
.setName(fieldName).setType(Type.LONG).build());
445+
.setName(fieldName).setJavaSqlTypesCode(Types.BIGINT).setType(Type.LONG).build());
446446
this.listColumnBuilder.addColumn(offset, Column.newBuilder().setLong(l).build());
447447
return this;
448448
}
@@ -455,15 +455,15 @@ public RelationalStructBuilder addFloat(String fieldName, float f) throws SQLExc
455455
@Override
456456
public RelationalStructBuilder addDouble(String fieldName, double d) {
457457
int offset = addMetadata(ColumnMetadata.newBuilder()
458-
.setName(fieldName).setType(Type.DOUBLE).build());
458+
.setName(fieldName).setJavaSqlTypesCode(Types.DOUBLE).setType(Type.DOUBLE).build());
459459
this.listColumnBuilder.addColumn(offset, Column.newBuilder().setDouble(d).build());
460460
return this;
461461
}
462462

463463
@Override
464464
public RelationalStructBuilder addBytes(String fieldName, byte[] bytes) {
465465
int offset = addMetadata(ColumnMetadata.newBuilder()
466-
.setName(fieldName).setType(Type.BYTES).build());
466+
.setName(fieldName).setJavaSqlTypesCode(Types.BINARY).setType(Type.BYTES).build());
467467
this.listColumnBuilder.addColumn(offset, Column.newBuilder().setBinary(ByteString.copyFrom(bytes)).build());
468468
return this;
469469
}
@@ -472,7 +472,7 @@ public RelationalStructBuilder addBytes(String fieldName, byte[] bytes) {
472472
@SpotBugsSuppressWarnings("NP")
473473
public RelationalStructBuilder addString(String fieldName, @Nullable String s) {
474474
int offset = addMetadata(ColumnMetadata.newBuilder()
475-
.setName(fieldName).setType(Type.STRING).build());
475+
.setName(fieldName).setJavaSqlTypesCode(Types.VARCHAR).setType(Type.STRING).build());
476476
// TODO: setString requires a non-null string, but this method takes a nullable string
477477
this.listColumnBuilder.addColumn(offset, Column.newBuilder().setString(s).build());
478478
return this;
@@ -481,9 +481,7 @@ public RelationalStructBuilder addString(String fieldName, @Nullable String s) {
481481
@Override
482482
public RelationalStructBuilder addUuid(final String fieldName, @Nullable final UUID uuid) {
483483
int offset = addMetadata(ColumnMetadata.newBuilder()
484-
.setName(fieldName)
485-
.setType(Type.UUID)
486-
.build());
484+
.setName(fieldName).setJavaSqlTypesCode(Types.OTHER).setType(Type.UUID).build());
487485
if (uuid == null) {
488486
this.listColumnBuilder.addColumn(offset, Column.newBuilder().build());
489487
} else {
@@ -505,7 +503,7 @@ public RelationalStructBuilder addStruct(String fieldName, @Nonnull RelationalSt
505503
// Insert the data portion of RelationalStruct here.
506504
RelationalStructFacade relationalStructFacade = struct.unwrap(RelationalStructFacade.class);
507505
int offset = addMetadata(ColumnMetadata.newBuilder().setName(fieldName)
508-
.setType(Type.STRUCT).setStructMetadata(relationalStructFacade.delegateMetadata).build());
506+
.setJavaSqlTypesCode(Types.STRUCT).setType(Type.STRUCT).setStructMetadata(relationalStructFacade.delegateMetadata).build());
509507
this.listColumnBuilder
510508
.addColumn(offset, Column.newBuilder().setStruct(relationalStructFacade.delegate).build());
511509
return this;
@@ -518,7 +516,7 @@ public RelationalStructBuilder addArray(String fieldName, @Nonnull RelationalArr
518516
// Insert the data portion of RelationalStruct here.
519517
RelationalArrayFacade relationalArrayFacade = array.unwrap(RelationalArrayFacade.class);
520518
int offset = addMetadata(ColumnMetadata.newBuilder()
521-
.setName(fieldName).setType(Type.ARRAY)
519+
.setName(fieldName).setJavaSqlTypesCode(Types.ARRAY).setType(Type.ARRAY)
522520
.setArrayMetadata(relationalArrayFacade.getDelegateMetadata())
523521
.build());
524522
this.listColumnBuilder.addColumn(offset,

fdb-relational-grpc/src/main/java/com/apple/foundationdb/relational/jdbc/TypeConversion.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ private static ColumnMetadata toColumnMetadata(StructMetaData metadata, int oneB
174174
final var protobufType = toProtobufType(type);
175175
var columnMetadataBuilder = ColumnMetadata.newBuilder()
176176
.setName(metadata.getColumnName(oneBasedIndex))
177+
.setJavaSqlTypesCode(metadata.getColumnType(oneBasedIndex))
177178
.setNullable(metadata.isNullable(oneBasedIndex) == DatabaseMetaData.columnNullable)
178179
.setType(protobufType);
179180
// TODO phantom.
@@ -242,6 +243,7 @@ private static ColumnMetadata toColumnMetadata(@Nonnull ArrayMetaData metadata)
242243
throws SQLException {
243244
var columnMetadataBuilder = ColumnMetadata.newBuilder()
244245
.setName(metadata.getElementName())
246+
.setJavaSqlTypesCode(metadata.getElementType())
245247
.setType(toProtobufType(metadata.asRelationalType().getElementType()))
246248
.setNullable(metadata.isElementNullable() == DatabaseMetaData.columnNullable);
247249
// TODO phantom.

fdb-relational-grpc/src/main/proto/grpc/relational/jdbc/v1/column.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ message ColumnMetadata {
4747
string name = 1;
4848
string label = 2;
4949
//taken from java.sql.Types
50-
int32 java_sql_types_code = 3 [deprecated = true];
50+
int32 java_sql_types_code = 3;
5151
bool nullable = 4;
5252
// Indicates a column that isn't part of the DDL for a query, but is part of the returned
5353
// tuple (and therefore necessary to keep so that our positional ordering is intact)

fdb-relational-grpc/src/main/proto/grpc/relational/jdbc/v1/jdbc.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ message Parameters {
108108

109109
// A parameter has java sql type as well as actual parameter.
110110
message Parameter {
111-
int32 java_sql_types_code = 1 [deprecated = true];
111+
int32 java_sql_types_code = 1;
112112
// Reuse the column type here. It has much of what we need carrying
113113
// across parameters as well as null support, etc.
114114
Column parameter = 2;

fdb-relational-jdbc/src/main/java/com/apple/foundationdb/relational/jdbc/ParameterHelper.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
import java.sql.Array;
3232
import java.sql.SQLException;
33+
import java.sql.Types;
3334
import java.util.ArrayList;
3435
import java.util.List;
3536
import java.util.UUID;
@@ -39,48 +40,55 @@ public class ParameterHelper {
3940
public static Parameter ofBoolean(boolean b) {
4041
return Parameter.newBuilder()
4142
.setType(Type.BOOLEAN)
43+
.setJavaSqlTypesCode(Types.BOOLEAN)
4244
.setParameter(Column.newBuilder().setBoolean(b))
4345
.build();
4446
}
4547

4648
public static Parameter ofInt(int i) {
4749
return Parameter.newBuilder()
4850
.setType(Type.INTEGER)
51+
.setJavaSqlTypesCode(Types.INTEGER)
4952
.setParameter(Column.newBuilder().setInteger(i))
5053
.build();
5154
}
5255

5356
public static Parameter ofLong(long l) {
5457
return Parameter.newBuilder()
5558
.setType(Type.LONG)
59+
.setJavaSqlTypesCode(Types.BIGINT)
5660
.setParameter(Column.newBuilder().setLong(l))
5761
.build();
5862
}
5963

6064
public static Parameter ofFloat(float f) {
6165
return Parameter.newBuilder()
6266
.setType(Type.FLOAT)
67+
.setJavaSqlTypesCode(Types.FLOAT)
6368
.setParameter(Column.newBuilder().setFloat(f))
6469
.build();
6570
}
6671

6772
public static Parameter ofDouble(double d) {
6873
return Parameter.newBuilder()
6974
.setType(Type.DOUBLE)
75+
.setJavaSqlTypesCode(Types.DOUBLE)
7076
.setParameter(Column.newBuilder().setDouble(d))
7177
.build();
7278
}
7379

7480
public static Parameter ofString(String s) {
7581
return Parameter.newBuilder()
7682
.setType(Type.STRING)
83+
.setJavaSqlTypesCode(Types.VARCHAR)
7784
.setParameter(Column.newBuilder().setString(s))
7885
.build();
7986
}
8087

8188
public static Parameter ofUUID(UUID id) {
8289
return Parameter.newBuilder()
8390
.setType(Type.UUID)
91+
.setJavaSqlTypesCode(Types.OTHER)
8492
.setParameter(Column.newBuilder().setUuid(Uuid.newBuilder()
8593
.setMostSignificantBits(id.getMostSignificantBits())
8694
.setLeastSignificantBits(id.getLeastSignificantBits())
@@ -91,13 +99,15 @@ public static Parameter ofUUID(UUID id) {
9199
public static Parameter ofBytes(byte[] bytes) {
92100
return Parameter.newBuilder()
93101
.setType(Type.BYTES)
102+
.setJavaSqlTypesCode(Types.BINARY)
94103
.setParameter(Column.newBuilder().setBinary(ByteString.copyFrom(bytes)))
95104
.build();
96105
}
97106

98107
public static Parameter ofNull(int sqlType) {
99108
return Parameter.newBuilder()
100109
.setType(Type.NULL)
110+
.setJavaSqlTypesCode(Types.NULL)
101111
.setParameter(Column.newBuilder().setNullType(sqlType))
102112
.build();
103113
}
@@ -113,6 +123,7 @@ public static Parameter ofArray(final Array a) throws SQLException {
113123
}
114124
return Parameter.newBuilder()
115125
.setType(Type.ARRAY)
126+
.setJavaSqlTypesCode(Types.ARRAY)
116127
.setParameter(Column.newBuilder()
117128
.setArray(com.apple.foundationdb.relational.jdbc.grpc.v1.column.Array.newBuilder()
118129
.setElementType(a.getBaseType())

0 commit comments

Comments
 (0)