Skip to content

Commit 7a6671c

Browse files
committed
test: update more tests
1 parent 44534dd commit 7a6671c

File tree

14 files changed

+172
-53
lines changed

14 files changed

+172
-53
lines changed

src/test/csharp/pgadapter_npgsql_tests/npgsql_tests/NpgsqlTest.cs

+7-3
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,10 @@ public void TestQueryAllDataTypes()
172172
using var connection = new NpgsqlConnection(ConnectionString);
173173
connection.Open();
174174

175-
using var cmd = new NpgsqlCommand("SELECT * FROM all_types WHERE col_bigint=1", connection);
175+
using var cmd = new NpgsqlCommand("SELECT col_bigint, col_bool, col_bytea, col_float4, col_float8, " +
176+
"col_int, col_numeric, col_timestamptz, col_interval::interval, col_date, " +
177+
"col_varchar, col_jsonb " +
178+
"FROM all_types WHERE col_bigint=1", connection);
176179
using (var reader = cmd.ExecuteReader())
177180
{
178181
while (reader.Read())
@@ -365,7 +368,8 @@ public void TestInsertAllDataTypesReturning()
365368

366369
var sql =
367370
"INSERT INTO all_types (col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval, col_date, col_varchar, col_jsonb)"
368-
+ " values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning *";
371+
+ " values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) " +
372+
"returning col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval::interval, col_date, col_varchar, col_jsonb";
369373
using var cmd = new NpgsqlCommand(sql, connection)
370374
{
371375
Parameters =
@@ -868,7 +872,7 @@ public void TestBinaryCopyOut()
868872
connection.Open();
869873

870874
using (var reader =
871-
connection.BeginBinaryExport("COPY (select * from all_types order by col_bigint) " +
875+
connection.BeginBinaryExport("COPY (select col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval::interval, col_date, col_varchar, col_jsonb, col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_interval, col_array_date, col_array_varchar, col_array_jsonb from all_types order by col_bigint) " +
872876
"TO STDOUT (FORMAT BINARY)"))
873877
{
874878
while (reader.StartRow() > -1)

src/test/golang/pgadapter_pgx5_tests/pgx.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,9 @@ func TestQueryAllDataTypes(connString string, oid, format int16) *C.char {
158158
formats[o] = conn.TypeMap().FormatCodeForOID(o)
159159
}
160160
formats[uint32(oid)] = format
161-
row = conn.QueryRow(ctx, "SELECT col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval, col_date, col_varchar, col_jsonb, col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_interval, col_array_date, col_array_varchar, col_array_jsonb FROM all_types WHERE col_bigint=1", formats)
161+
row = conn.QueryRow(ctx, "SELECT col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval::interval, col_date, col_varchar, col_jsonb, col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_interval, col_array_date, col_array_varchar, col_array_jsonb FROM all_types WHERE col_bigint=1", formats)
162162
} else {
163-
row = conn.QueryRow(ctx, "SELECT col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval, col_date, col_varchar, col_jsonb, col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_interval, col_array_date, col_array_varchar, col_array_jsonb FROM all_types WHERE col_bigint=1")
163+
row = conn.QueryRow(ctx, "SELECT col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval::interval, col_date, col_varchar, col_jsonb, col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_interval, col_array_date, col_array_varchar, col_array_jsonb FROM all_types WHERE col_bigint=1")
164164
}
165165
var arrayBigint, arrayBool, arrayBytea, arrayFloat4, arrayFloat8, arrayInt, arrayNumeric, arrayTimestamptz, arrayInterval, arrayDate, arrayVarchar, arrayJsonb interface{}
166166
err = row.Scan(

src/test/golang/pgadapter_pgx_tests/go.mod

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
module cloud.google.com/pgadapter_pgx_tests
22

3-
go 1.17
3+
go 1.23.0
4+
5+
toolchain go1.24.2
46

57
require (
68
github.com/jackc/pgconn v1.14.3

src/test/golang/pgadapter_pgx_tests/pgx.go

+55-28
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,11 @@ func TestQueryAllDataTypes(connString string, oid, format int16) *C.char {
140140
var intValue int
141141
var numericValue pgtype.Numeric // pgx by default maps numeric to string
142142
var timestamptzValue time.Time
143-
var intervalValue string
143+
var intervalValue interface{}
144144
var dateValue time.Time
145145
var varcharValue string
146146
var jsonbValue string
147+
var arrayBigint, arrayBool, arrayBytea, arrayFloat4, arrayFloat8, arrayInt, arrayNumeric, arrayTimestamptz, arrayInterval, arrayDate, arrayVarchar, arrayJsonb interface{}
147148

148149
var row pgx.Row
149150
if oid != 0 {
@@ -159,36 +160,62 @@ func TestQueryAllDataTypes(connString string, oid, format int16) *C.char {
159160
}
160161
formats[uint32(oid)] = format
161162
row = conn.QueryRow(ctx, "SELECT col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval, col_date, col_varchar, col_jsonb, col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_interval, col_array_date, col_array_varchar, col_array_jsonb FROM all_types WHERE col_bigint=1", formats)
163+
err = row.Scan(
164+
&bigintValue,
165+
&boolValue,
166+
&byteaValue,
167+
&float4Value,
168+
&float8Value,
169+
&intValue,
170+
&numericValue,
171+
&timestamptzValue,
172+
&intervalValue,
173+
&dateValue,
174+
&varcharValue,
175+
&jsonbValue,
176+
&arrayBigint,
177+
&arrayBool,
178+
&arrayBytea,
179+
&arrayFloat4,
180+
&arrayFloat8,
181+
&arrayInt,
182+
&arrayNumeric,
183+
&arrayTimestamptz,
184+
&arrayInterval,
185+
&arrayDate,
186+
&arrayVarchar,
187+
&arrayJsonb,
188+
)
162189
} else {
163190
row = conn.QueryRow(ctx, "SELECT col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval, col_date, col_varchar, col_jsonb, col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_interval, col_array_date, col_array_varchar, col_array_jsonb FROM all_types WHERE col_bigint=1")
191+
var arrayIntervalString *string
192+
err = row.Scan(
193+
&bigintValue,
194+
&boolValue,
195+
&byteaValue,
196+
&float4Value,
197+
&float8Value,
198+
&intValue,
199+
&numericValue,
200+
&timestamptzValue,
201+
&intervalValue,
202+
&dateValue,
203+
&varcharValue,
204+
&jsonbValue,
205+
&arrayBigint,
206+
&arrayBool,
207+
&arrayBytea,
208+
&arrayFloat4,
209+
&arrayFloat8,
210+
&arrayInt,
211+
&arrayNumeric,
212+
&arrayTimestamptz,
213+
&arrayIntervalString,
214+
&arrayDate,
215+
&arrayVarchar,
216+
&arrayJsonb,
217+
)
164218
}
165-
var arrayBigint, arrayBool, arrayBytea, arrayFloat4, arrayFloat8, arrayInt, arrayNumeric, arrayTimestamptz, arrayInterval, arrayDate, arrayVarchar, arrayJsonb interface{}
166-
err = row.Scan(
167-
&bigintValue,
168-
&boolValue,
169-
&byteaValue,
170-
&float4Value,
171-
&float8Value,
172-
&intValue,
173-
&numericValue,
174-
&timestamptzValue,
175-
&intervalValue,
176-
&dateValue,
177-
&varcharValue,
178-
&jsonbValue,
179-
&arrayBigint,
180-
&arrayBool,
181-
&arrayBytea,
182-
&arrayFloat4,
183-
&arrayFloat8,
184-
&arrayInt,
185-
&arrayNumeric,
186-
&arrayTimestamptz,
187-
&arrayInterval,
188-
&arrayDate,
189-
&arrayVarchar,
190-
&arrayJsonb,
191-
)
192219
if err != nil {
193220
return C.CString(fmt.Sprintf("Failed to execute query: %v", err.Error()))
194221
}

src/test/java/com/google/cloud/spanner/pgadapter/ITJdbcTest.java

+38-4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.google.cloud.Date;
2828
import com.google.cloud.Timestamp;
2929
import com.google.cloud.spanner.Database;
30+
import com.google.cloud.spanner.Interval;
3031
import com.google.cloud.spanner.KeySet;
3132
import com.google.cloud.spanner.Mutation;
3233
import com.google.cloud.spanner.Value;
@@ -137,6 +138,8 @@ public void insertTestData() {
137138
.to(new BigDecimal("3.14"))
138139
.set("col_timestamptz")
139140
.to(Timestamp.parseTimestamp("2022-01-27T17:51:30+01:00"))
141+
.set("col_interval")
142+
.to(Interval.parseFromString("P1Y2M3DT4H5M6.789S"))
140143
.set("col_date")
141144
.to(Date.parseDate("2022-05-23"))
142145
.set("col_varchar")
@@ -164,6 +167,8 @@ public void insertTestData() {
164167
Timestamp.parseTimestamp("2000-01-01T00:00:00Z"),
165168
null,
166169
Timestamp.parseTimestamp("1970-01-01T00:00:00Z")))
170+
.set("col_array_interval")
171+
.toStringArray(Collections.singletonList("P1Y2M3DT4H5M6.789S"))
167172
.set("col_array_date")
168173
.toDateArray(
169174
Arrays.asList(Date.parseDate("2000-01-01"), null, Date.parseDate("1970-01-01")))
@@ -426,9 +431,9 @@ public void testInsertWithParameters() throws SQLException {
426431
try (PreparedStatement statement =
427432
connection.prepareStatement(
428433
"insert into all_types "
429-
+ "(col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_date, col_varchar, col_jsonb, "
430-
+ "col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_date, col_array_varchar, col_array_jsonb) "
431-
+ "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")) {
434+
+ "(col_bigint, col_bool, col_bytea, col_float4, col_float8, col_int, col_numeric, col_timestamptz, col_interval, col_date, col_varchar, col_jsonb, "
435+
+ "col_array_bigint, col_array_bool, col_array_bytea, col_array_float4, col_array_float8, col_array_int, col_array_numeric, col_array_timestamptz, col_array_interval, col_array_date, col_array_varchar, col_array_jsonb) "
436+
+ "values (?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")) {
432437
int index = 0;
433438
statement.setLong(++index, 2);
434439
statement.setBoolean(++index, true);
@@ -449,6 +454,7 @@ public void testInsertWithParameters() throws SQLException {
449454
statement.setBigDecimal(++index, new BigDecimal("6.626"));
450455
statement.setTimestamp(
451456
++index, Timestamp.parseTimestamp("2022-02-11T13:45:00.123456+01:00").toSqlTimestamp());
457+
statement.setObject(++index, "P1Y2M3DT4H5M6.789S");
452458
statement.setObject(++index, LocalDate.parse("2000-02-29"));
453459
statement.setString(++index, "string_test");
454460
statement.setObject(++index, "{\"key1\": \"value1\", \"key2\": \"value2\"}", Types.OTHER);
@@ -492,6 +498,8 @@ public void testInsertWithParameters() throws SQLException {
492498
null,
493499
Timestamp.parseTimestamp("2000-01-01T00:00:00Z").toSqlTimestamp()
494500
}));
501+
statement.setArray(
502+
++index, connection.createArrayOf("varchar", new String[] {"P1Y2M3DT4H5M6.789S"}));
495503
statement.setArray(
496504
++index,
497505
connection.createArrayOf(
@@ -530,7 +538,7 @@ public void testInsertWithParameters() throws SQLException {
530538
connection.createStatement().executeQuery("select * from all_types where col_bigint=2")) {
531539
assertTrue(resultSet.next());
532540

533-
assertEquals(22, resultSet.getMetaData().getColumnCount());
541+
assertEquals(24, resultSet.getMetaData().getColumnCount());
534542
int index = 0;
535543
assertEquals(2, resultSet.getLong(++index));
536544
assertTrue(resultSet.getBoolean(++index));
@@ -547,6 +555,7 @@ public void testInsertWithParameters() throws SQLException {
547555
assertEquals(
548556
Timestamp.parseTimestamp("2022-02-11T13:45:00.123456+01:00").toSqlTimestamp(),
549557
resultSet.getTimestamp(++index));
558+
assertEquals("P1Y2M3DT4H5M6.789S", resultSet.getString(++index));
550559
assertEquals(LocalDate.of(2000, 2, 29), resultSet.getObject(++index, LocalDate.class));
551560
assertEquals("string_test", resultSet.getString(++index));
552561
assertEquals("{\"key1\": \"value1\", \"key2\": \"value2\"}", resultSet.getString(++index));
@@ -592,6 +601,8 @@ public void testInsertWithParameters() throws SQLException {
592601
},
593602
(java.sql.Timestamp[]) resultSet.getArray(++index).getArray());
594603
}
604+
assertArrayEquals(
605+
new String[] {"P1Y2M3DT4H5M6.789S"}, (String[]) resultSet.getArray(++index).getArray());
595606
assertArrayEquals(
596607
new java.sql.Date[] {
597608
java.sql.Date.valueOf("2000-01-01"), null, java.sql.Date.valueOf("1970-01-01")
@@ -688,6 +699,7 @@ public void testUpdateWithParameters() throws SQLException {
688699
assertEquals(
689700
Timestamp.parseTimestamp("2022-02-11T14:04:59.123457+01:00").toSqlTimestamp(),
690701
resultSet.getTimestamp(++index));
702+
assertEquals("P1Y2M3DT4H5M6.789S", resultSet.getString(++index));
691703
assertEquals(LocalDate.parse("2000-01-01"), resultSet.getObject(++index, LocalDate.class));
692704
assertEquals("updated", resultSet.getString(++index));
693705
assertEquals(
@@ -1295,6 +1307,12 @@ public void testSelectTypes() throws SQLException {
12951307
assertEquals(Oid.TIMESTAMPTZ_ARRAY, types.getInt(1));
12961308
assertEquals("_timestamptz", types.getString(2));
12971309
assertTrue(types.next());
1310+
assertEquals(Oid.INTERVAL, types.getInt(1));
1311+
assertEquals("interval", types.getString(2));
1312+
assertTrue(types.next());
1313+
assertEquals(Oid.INTERVAL_ARRAY, types.getInt(1));
1314+
assertEquals("_interval", types.getString(2));
1315+
assertTrue(types.next());
12981316
assertEquals(Oid.NUMERIC_ARRAY, types.getInt(1));
12991317
assertEquals("_numeric", types.getString(2));
13001318
assertTrue(types.next());
@@ -1333,6 +1351,8 @@ private void writeExtraTestRows() {
13331351
.to(new BigDecimal("-3.14"))
13341352
.set("col_timestamptz")
13351353
.to(Timestamp.parseTimestamp("2022-04-22T19:27:30+02:00"))
1354+
.set("col_interval")
1355+
.to(Interval.parseFromString("P1Y"))
13361356
.set("col_date")
13371357
.to(Date.parseDate("2000-01-01"))
13381358
.set("col_varchar")
@@ -1360,6 +1380,8 @@ private void writeExtraTestRows() {
13601380
Timestamp.parseTimestamp("2000-01-01T00:00:00Z"),
13611381
null,
13621382
Timestamp.parseTimestamp("1970-01-01T00:00:00Z")))
1383+
.set("col_array_interval")
1384+
.toIntervalArray(Collections.singletonList(Interval.parseFromString("P1Y")))
13631385
.set("col_array_date")
13641386
.toDateArray(
13651387
Arrays.asList(Date.parseDate("2000-01-01"), null, Date.parseDate("1970-01-01")))
@@ -1386,6 +1408,8 @@ private void writeExtraTestRows() {
13861408
.to((BigDecimal) null)
13871409
.set("col_timestamptz")
13881410
.to((Timestamp) null)
1411+
.set("col_interval")
1412+
.to((Interval) null)
13891413
.set("col_date")
13901414
.to((Date) null)
13911415
.set("col_varchar")
@@ -1409,6 +1433,8 @@ private void writeExtraTestRows() {
14091433
.set("col_array_timestamptz")
14101434
.toTimestampArray(null)
14111435
.set("col_array_date")
1436+
.toIntervalArray(null)
1437+
.set("col_array_interval")
14121438
.toDateArray(null)
14131439
.set("col_array_varchar")
14141440
.toStringArray(null)
@@ -1432,6 +1458,8 @@ private void writeExtraTestRows() {
14321458
.to(BigDecimal.ZERO)
14331459
.set("col_timestamptz")
14341460
.to(Timestamp.parseTimestamp("0001-01-01T00:00:00Z"))
1461+
.set("col_interval")
1462+
.to(Interval.parseFromString("P0Y"))
14351463
.set("col_date")
14361464
.to(Date.parseDate("0001-01-01"))
14371465
.set("col_varchar")
@@ -1454,6 +1482,8 @@ private void writeExtraTestRows() {
14541482
.toPgNumericArray(ImmutableList.of())
14551483
.set("col_array_timestamptz")
14561484
.toTimestampArray(ImmutableList.of())
1485+
.set("col_array_interval")
1486+
.toIntervalArray(ImmutableList.of())
14571487
.set("col_array_date")
14581488
.toDateArray(ImmutableList.of())
14591489
.set("col_array_varchar")
@@ -1478,6 +1508,8 @@ private void writeExtraTestRows() {
14781508
.to(BigDecimal.ZERO)
14791509
.set("col_timestamptz")
14801510
.to(Timestamp.parseTimestamp("0001-01-01T00:00:00Z"))
1511+
.set("col_interval")
1512+
.to(Interval.parseFromString("P0Y"))
14811513
.set("col_date")
14821514
.to(Date.parseDate("0001-01-01"))
14831515
.set("col_varchar")
@@ -1500,6 +1532,8 @@ private void writeExtraTestRows() {
15001532
.toPgNumericArray(ImmutableList.of())
15011533
.set("col_array_timestamptz")
15021534
.toTimestampArray(ImmutableList.of())
1535+
.set("col_array_interval")
1536+
.toIntervalArray(ImmutableList.of())
15031537
.set("col_array_date")
15041538
.toDateArray(ImmutableList.of())
15051539
.set("col_array_varchar")

src/test/java/com/google/cloud/spanner/pgadapter/PgAdapterTestEnv.java

+2
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ public class PgAdapterTestEnv {
125125
+ "col_int int, "
126126
+ "col_numeric numeric, "
127127
+ "col_timestamptz timestamptz, "
128+
+ "col_interval varchar, "
128129
+ "col_date date, "
129130
+ "col_varchar varchar(100), "
130131
+ "col_jsonb jsonb, "
@@ -136,6 +137,7 @@ public class PgAdapterTestEnv {
136137
+ "col_array_int int[], "
137138
+ "col_array_numeric numeric[], "
138139
+ "col_array_timestamptz timestamptz[], "
140+
+ "col_array_interval varchar[], "
139141
+ "col_array_date date[], "
140142
+ "col_array_varchar varchar(100)[], "
141143
+ "col_array_jsonb jsonb[])");

0 commit comments

Comments
 (0)