Skip to content

Commit c2ad803

Browse files
gopalldbclaude
andauthored
Fix PreparedStatement.getMetaData() crash for SQL type aliases (#1289)
## Summary Completes the fix for #1064 — `PreparedStatement.getMetaData()` throws `IllegalArgumentException` for SQL type aliases. - `PreparedStatement.getMetaData()` triggers a DESCRIBE QUERY internally, and the response type names are mapped via `ColumnInfoTypeName.valueOf()`. SQL type aliases like VARCHAR, INTEGER, NUMERIC, DEC, REAL, NVARCHAR, NCHAR have no enum entry, causing `IllegalArgumentException` - Replace `valueOf()` with `DatabricksTypeUtil.getColumnInfoType()` which handles all alias mappings and falls back to `USER_DEFINED_TYPE` instead of crashing - Extend `getColumnInfoType()` to cover all missing SQL standard aliases, plus VARIANT, GEOMETRY, GEOGRAPHY, and multi-word INTERVAL sub-types - Fix incorrect DATE to TIMESTAMP mapping (DATE is a distinct JDBC type) **Background:** Issue #1064 reported crashes for BIGINT, SMALLINT, TINYINT, INTERVAL, VOID, GEOMETRY, GEOGRAPHY. Some of these (BIGINT, SMALLINT, TINYINT) were already fixed on main by adding enum entries. This PR addresses the remaining aliases and replaces the fragile `valueOf()` pattern with a safe mapping function. ## Scope Changes affect **only** `PreparedStatement.getMetaData()` — the DESCRIBE QUERY code path. Verified by tracing all call sites: - `DatabricksTypeUtil.getColumnInfoType()` is called from 2 places: 1. `DatabricksResultSetMetaData` DESCRIBE QUERY constructor (line 453) — **only used by PreparedStatement.getMetaData()** 2. `DatabricksPreparedStatement` parameter metadata (line 859) — **also PreparedStatement-only** - Regular `ResultSet.getMetaData()` uses different constructors that take `DatabricksColumn` objects from server responses — **unaffected** - `DatabaseMetaData` operations (`getColumns`, `getTables`, etc.) use `MetadataResultSetBuilder` — **unaffected** - Normal query execution — **unaffected** ## Test plan - [x] DatabricksTypeUtilTest — 83 tests (parameterized tests for all aliases, INTERVAL sub-types, full type-to-JDBC-code chain) - [x] DatabricksResultSetMetaDataTest — 28 tests (DESCRIBE QUERY coverage for GEOGRAPHY, GEOMETRY, BIGINT, SMALLINT, TINYINT, VARCHAR, INTEGER) - [x] Full jdbc-core suite — 111 tests pass, 0 failures - [x] Live E2E verification against dogfood warehouse ## Testing ### Live E2E verification (May 21, 2026) Tested against dogfood warehouse (`e2-dogfood.staging.cloud.databricks.com`, warehouse `dd43ee29fedd958d`). **Setup:** Created a table with type alias columns to exercise DESCRIBE QUERY: ```sql CREATE TABLE main.jdbc_test_schema.type_alias_test_pr1289 ( col_varchar VARCHAR(100), col_integer INTEGER, col_numeric NUMERIC(10,2), col_dec DEC(10,2), col_real REAL, col_int INT, col_string STRING, col_double DOUBLE, col_boolean BOOLEAN, col_date DATE, col_timestamp TIMESTAMP ) ``` **Test 1: Table with DDL type aliases — PASSED** ``` PreparedStatement ps = conn.prepareStatement("SELECT * FROM type_alias_test_pr1289"); ResultSetMetaData meta = ps.getMetaData(); ``` | Column | Type Alias | Returned Type | JDBC Code | Precision | Scale | |--------|-----------|---------------|-----------|-----------|-------| | col_varchar | VARCHAR(100) | STRING | 12 | 255 | 0 | | col_integer | INTEGER | INT | 4 | 10 | 0 | | col_numeric | NUMERIC(10,2) | DECIMAL | 3 | 10 | 2 | | col_dec | DEC(10,2) | DECIMAL | 3 | 10 | 2 | | col_real | REAL | FLOAT | 6 | 7 | 0 | | col_int | INT | INT | 4 | 10 | 0 | | col_string | STRING | STRING | 12 | 255 | 0 | | col_double | DOUBLE | DOUBLE | 8 | 15 | 0 | | col_boolean | BOOLEAN | BOOLEAN | 16 | 1 | 0 | | col_date | DATE | DATE | 91 | 10 | 0 | | col_timestamp | TIMESTAMP | TIMESTAMP | 93 | 29 | 9 | **Test 2: CAST expressions with type aliases — PASSED** ```sql SELECT CAST('hello' AS VARCHAR(100)), CAST(2 AS INTEGER), CAST(3.14 AS NUMERIC(10,2)), CAST(4.14 AS DEC(10,2)), CAST(5.0 AS REAL) ``` All 5 columns returned correct metadata without `IllegalArgumentException`. **Test 3: Standard types (regression) — PASSED** ```sql SELECT CAST(1 AS INT), CAST('hello' AS STRING), CAST(1.5 AS DOUBLE) ``` **Test 4: INTERVAL type — PASSED** ```sql SELECT INTERVAL '1' YEAR as col_interval ``` Returned `type=INTERVAL YEAR (12)`. **Test 5: VARIANT type — PASSED** ```sql SELECT PARSE_JSON('{"key": "value"}') as col_variant ``` Returned `type=VARIANT (12)`. ### Before-fix behavior (reproduced via unit test) Without the fix, `PreparedStatement.getMetaData()` on any query returning VARCHAR, INTEGER, NUMERIC, DEC, or REAL columns throws: ``` java.lang.IllegalArgumentException: No enum constant com.databricks.jdbc.common.ColumnInfoTypeName.VARCHAR at java.lang.Enum.valueOf(Enum.java:273) at DatabricksResultSetMetaData.<init>(DatabricksResultSetMetaData.java:454) ``` Closes #1064 This pull request was AI-assisted by Isaac. --------- Signed-off-by: Gopal Lal <gopal.lal@databricks.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 06476c8 commit c2ad803

32 files changed

Lines changed: 391 additions & 302 deletions

File tree

NEXT_CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ upgrading. These changes do not affect metadata on All-Purpose Clusters.
3030
instead of `0` (`CASCADE`) for Thrift, and `3` instead of `null` for SEA.**
3131
This reflects that Unity Catalog foreign keys are informational and non-enforced.
3232

33+
* **`PreparedStatement.setDate()` now sends parameter type as `DATE` instead of
34+
`TIMESTAMP`.** Previously, `setDate()` incorrectly serialized the parameter
35+
type as TIMESTAMP due to a mapping bug. Server-side behavior is unchanged
36+
(Databricks accepts both), but applications that inspect parameter types may
37+
see the difference.
38+
3339
#### Default Behavior Changes
3440

3541
* **Native geospatial type support (`GEOMETRY` and `GEOGRAPHY`) is now enabled
@@ -64,6 +70,7 @@ upgrading. These changes do not affect metadata on All-Purpose Clusters.
6470
- Bump shaded `netty-buffer`/`netty-common` from 4.2.12.Final to 4.2.13.Final to clear OWASP scanner reports for the May 2026 batch of netty codec CVEs (CVE-2026-42577/42579/42580/42581/42582/42583/42584/42585/42586/42587, CVE-2026-44248, CVE-2026-41417, CVE-2026-42578). The driver does not use any netty HTTP/codec components — these vulnerabilities are not exploitable in this usage — but the bump silences the false-positive CPE matches.
6571
- Bump shaded `commons-configuration2` from 2.10.1 to 2.15.0 to address [CVE-2026-45205](https://nvd.nist.gov/vuln/detail/CVE-2026-45205) (uncontrolled recursion when parsing untrusted YAML configurations). The driver does not parse untrusted YAML, so the practical risk is negligible.
6672
- Bump `lz4-java` from `org.lz4:lz4-java:1.8.1` to `at.yawk.lz4:lz4-java:1.10.1` to address [CVE-2025-66566](https://nvd.nist.gov/vuln/detail/CVE-2025-66566) (information leak via uncleared output buffers in the safe/unsafe Java decompressors). `org.lz4:lz4-java:1.8.1` is a relocation-only POM that resolves to `at.yawk.lz4:lz4-java:1.8.1`, so the published `databricks-jdbc-thin` artifact previously pulled the vulnerable fork transitively. The upstream `org.lz4` GA is no longer maintained; `at.yawk.lz4` is the fork that received the fix. Fixes #1455.
73+
- Fix `PreparedStatement.getMetaData()` crash (`IllegalArgumentException`) for SQL type aliases (VARCHAR, INTEGER, NUMERIC, DEC, REAL, NVARCHAR, NCHAR) returned by DESCRIBE QUERY
6774
- Fixed `DatabaseMetaData.getTables()` in Thrift mode returning rows when called with an empty `types` array. Per JDBC spec, empty types means "no types selected" and now correctly returns zero rows (matching SEA mode).
6875
- Fixed `?` characters inside SQL comments, string literals, and quoted identifiers being incorrectly counted as parameter placeholders when `supportManyParameters=1`. `SQLInterpolator` now uses `SqlCommentParser` to locate only real placeholders. Fixes #1331.
6976
- Fixed `MetadataOperationTimeout` not being applied when metadata operations use SHOW commands. Operations like `getTables`, `getSchemas`, and `getColumns` now respect the `MetadataOperationTimeout` connection property instead of hanging indefinitely with no timeout.

src/main/java/com/databricks/jdbc/api/impl/DatabricksResultSetMetaData.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -451,18 +451,12 @@ public DatabricksResultSetMetaData(
451451
String columnName = columnNames.get(i);
452452
String columnTypeText = columnDataTypes.get(i);
453453

454-
ColumnInfoTypeName columnTypeName;
455-
if (columnTypeText.equalsIgnoreCase(TIMESTAMP_NTZ)) {
456-
columnTypeName = ColumnInfoTypeName.TIMESTAMP;
454+
String baseTypeName = metadataResultSetBuilder.stripBaseTypeName(columnTypeText);
455+
ColumnInfoTypeName columnTypeName = DatabricksTypeUtil.getColumnInfoType(baseTypeName);
456+
457+
// Normalize columnTypeText for types that have a canonical display name
458+
if (baseTypeName.equals(TIMESTAMP_NTZ)) {
457459
columnTypeText = TIMESTAMP;
458-
} else if (columnTypeText.equalsIgnoreCase(VARIANT)) {
459-
columnTypeName = ColumnInfoTypeName.STRING;
460-
columnTypeText = VARIANT;
461-
} else if (columnTypeText.toUpperCase().startsWith(INTERVAL)) {
462-
columnTypeName = ColumnInfoTypeName.INTERVAL;
463-
} else {
464-
columnTypeName =
465-
ColumnInfoTypeName.valueOf(metadataResultSetBuilder.stripBaseTypeName(columnTypeText));
466460
}
467461

468462
int columnType = DatabricksTypeUtil.getColumnType(columnTypeName);

src/main/java/com/databricks/jdbc/common/util/DatabricksTypeUtil.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ public class DatabricksTypeUtil {
5656
public static final String GEOMETRY = "GEOMETRY";
5757
public static final String GEOGRAPHY = "GEOGRAPHY";
5858
public static final String INTERVAL = "INTERVAL";
59+
public static final String VARCHAR = "VARCHAR";
60+
public static final String NVARCHAR = "NVARCHAR";
61+
public static final String NCHAR = "NCHAR";
62+
public static final String INTEGER = "INTEGER";
63+
public static final String NUMERIC = "NUMERIC";
64+
public static final String DEC = "DEC";
65+
public static final String REAL = "REAL";
5966
public static final String GEOMETRY_CLASS_NAME = "com.databricks.jdbc.api.IGeometry";
6067
public static final String GEOGRAPHY_CLASS_NAME = "com.databricks.jdbc.api.IGeography";
6168
public static final String MEASURE = "measure";
@@ -73,13 +80,22 @@ public class DatabricksTypeUtil {
7380
ColumnInfoTypeName.BYTE,
7481
ColumnInfoTypeName.BIGINT));
7582

76-
// only used for PreparedStatement
83+
/**
84+
* Maps a SQL type name (as returned by DESCRIBE QUERY or schema metadata) to the corresponding
85+
* {@link ColumnInfoTypeName}. Handles canonical names, Databricks aliases, and standard SQL
86+
* aliases (VARCHAR, INTEGER, NUMERIC, DEC, REAL, NVARCHAR, NCHAR). Returns {@link
87+
* ColumnInfoTypeName#USER_DEFINED_TYPE} for unrecognized types.
88+
*/
7789
public static ColumnInfoTypeName getColumnInfoType(String typeName) {
7890
switch (typeName) {
7991
case DatabricksTypeUtil.CHAR:
92+
case DatabricksTypeUtil.NCHAR:
8093
case DatabricksTypeUtil.STRING:
81-
return ColumnInfoTypeName.STRING; // both char, string passed as STRING param
94+
case DatabricksTypeUtil.VARCHAR:
95+
case DatabricksTypeUtil.NVARCHAR:
96+
return ColumnInfoTypeName.STRING;
8297
case DatabricksTypeUtil.DATE:
98+
return ColumnInfoTypeName.DATE;
8399
case DatabricksTypeUtil.TIMESTAMP:
84100
case DatabricksTypeUtil.TIMESTAMP_NTZ:
85101
return ColumnInfoTypeName.TIMESTAMP;
@@ -91,11 +107,13 @@ public static ColumnInfoTypeName getColumnInfoType(String typeName) {
91107
case DatabricksTypeUtil.BYTE:
92108
return ColumnInfoTypeName.BYTE;
93109
case DatabricksTypeUtil.INT:
110+
case DatabricksTypeUtil.INTEGER:
94111
return ColumnInfoTypeName.INT;
95112
case DatabricksTypeUtil.BIGINT:
96113
case DatabricksTypeUtil.LONG:
97114
return ColumnInfoTypeName.LONG;
98115
case DatabricksTypeUtil.FLOAT:
116+
case DatabricksTypeUtil.REAL:
99117
return ColumnInfoTypeName.FLOAT;
100118
case DatabricksTypeUtil.DOUBLE:
101119
return ColumnInfoTypeName.DOUBLE;
@@ -104,6 +122,8 @@ public static ColumnInfoTypeName getColumnInfoType(String typeName) {
104122
case DatabricksTypeUtil.BOOLEAN:
105123
return ColumnInfoTypeName.BOOLEAN;
106124
case DatabricksTypeUtil.DECIMAL:
125+
case DatabricksTypeUtil.NUMERIC:
126+
case DatabricksTypeUtil.DEC:
107127
return ColumnInfoTypeName.DECIMAL;
108128
case DatabricksTypeUtil.STRUCT:
109129
return ColumnInfoTypeName.STRUCT;
@@ -118,6 +138,14 @@ public static ColumnInfoTypeName getColumnInfoType(String typeName) {
118138
return ColumnInfoTypeName.INTERVAL;
119139
case DatabricksTypeUtil.VARIANT:
120140
return ColumnInfoTypeName.VARIANT;
141+
case DatabricksTypeUtil.GEOMETRY:
142+
return ColumnInfoTypeName.GEOMETRY;
143+
case DatabricksTypeUtil.GEOGRAPHY:
144+
return ColumnInfoTypeName.GEOGRAPHY;
145+
}
146+
// Handle INTERVAL sub-types like "INTERVAL DAY TO SECOND"
147+
if (typeName.startsWith(DatabricksTypeUtil.INTERVAL)) {
148+
return ColumnInfoTypeName.INTERVAL;
121149
}
122150
return ColumnInfoTypeName.USER_DEFINED_TYPE;
123151
}

src/test/java/com/databricks/jdbc/api/impl/DatabricksResultSetMetaDataTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,14 @@ public void testDatabricksResultSetMetaDataInitialization_DescribeQuery() throws
199199
{"col_struct", "struct<col_int:int,col_string:string>", "STRUCT", Types.STRUCT, 255, 0},
200200
{"col_array", "array<int>", "ARRAY", Types.ARRAY, 255, 0},
201201
{"col_map", "map<string,string>", "MAP", Types.VARCHAR, 255, 0},
202-
{"col_variant", "variant", "VARIANT", Types.VARCHAR, 255, 0},
202+
{"col_variant", "variant", "VARIANT", Types.OTHER, 255, 0},
203+
{"col_geography", "geography", "GEOGRAPHY", Types.OTHER, 255, 0},
204+
{"col_geometry", "geometry", "GEOMETRY", Types.OTHER, 255, 0},
205+
{"col_bigint", "bigint", "BIGINT", Types.BIGINT, 19, 0},
206+
{"col_smallint", "smallint", "SMALLINT", Types.SMALLINT, 5, 0},
207+
{"col_tinyint", "tinyint", "TINYINT", Types.TINYINT, 3, 0},
208+
{"col_varchar", "varchar", "VARCHAR", Types.VARCHAR, 255, 0},
209+
{"col_integer", "integer", "INTEGER", Types.INTEGER, 10, 0},
203210
{"col_interval", "interval", "INTERVAL", Types.VARCHAR, 255, 0},
204211
{"col_interval_second", "interval second", "INTERVAL SECOND", Types.VARCHAR, 255, 0},
205212
{"col_interval_minute", "interval minute", "INTERVAL MINUTE", Types.VARCHAR, 255, 0},

src/test/java/com/databricks/jdbc/common/util/DatabricksTypeUtilTest.java

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,30 +266,43 @@ void testInferDatabricksType() {
266266
@ParameterizedTest
267267
@CsvSource({
268268
"STRING, STRING",
269-
"DATE, TIMESTAMP",
269+
"DATE, DATE",
270270
"TIMESTAMP, TIMESTAMP",
271271
"TIMESTAMP_NTZ, TIMESTAMP",
272272
"SHORT, SHORT",
273273
"SMALLINT, SHORT",
274274
"TINYINT, TINYINT",
275275
"BYTE, BYTE",
276276
"INT, INT",
277+
"INTEGER, INT",
277278
"BIGINT, LONG",
278279
"LONG, LONG",
279280
"FLOAT, FLOAT",
281+
"REAL, FLOAT",
280282
"DOUBLE, DOUBLE",
281283
"BINARY, BINARY",
282284
"BOOLEAN, BOOLEAN",
283285
"DECIMAL, DECIMAL",
286+
"NUMERIC, DECIMAL",
287+
"DEC, DECIMAL",
284288
"STRUCT, STRUCT",
285289
"ARRAY, ARRAY",
286290
"VOID, NULL",
287291
"NULL, NULL",
288292
"MAP, MAP",
289293
"CHAR, STRING",
294+
"VARCHAR, STRING",
295+
"NVARCHAR, STRING",
296+
"NCHAR, STRING",
290297
"INTERVAL, INTERVAL",
291298
"VARIANT, VARIANT",
292-
"UNKNOWN, USER_DEFINED_TYPE"
299+
"GEOMETRY, GEOMETRY",
300+
"GEOGRAPHY, GEOGRAPHY",
301+
"UNKNOWN, USER_DEFINED_TYPE",
302+
// Lowercase inputs fall through to USER_DEFINED_TYPE (getColumnInfoType expects uppercase)
303+
"string, USER_DEFINED_TYPE",
304+
"int, USER_DEFINED_TYPE",
305+
"varchar, USER_DEFINED_TYPE"
293306
})
294307
public void testGetColumnInfoType(String inputTypeName, String expectedTypeName) {
295308
assertEquals(
@@ -300,6 +313,46 @@ public void testGetColumnInfoType(String inputTypeName, String expectedTypeName)
300313
inputTypeName, expectedTypeName, DatabricksTypeUtil.getColumnInfoType(inputTypeName)));
301314
}
302315

316+
@ParameterizedTest
317+
@CsvSource({
318+
"INTERVAL DAY TO SECOND, INTERVAL",
319+
"INTERVAL YEAR TO MONTH, INTERVAL",
320+
"INTERVAL DAY TO HOUR, INTERVAL",
321+
"INTERVAL DAY TO MINUTE, INTERVAL",
322+
"INTERVAL HOUR TO MINUTE, INTERVAL",
323+
"INTERVAL HOUR TO SECOND, INTERVAL",
324+
"INTERVAL MINUTE TO SECOND, INTERVAL"
325+
})
326+
public void testGetColumnInfoTypeIntervalSubTypes(String inputTypeName, String expectedTypeName) {
327+
assertEquals(
328+
ColumnInfoTypeName.valueOf(expectedTypeName),
329+
DatabricksTypeUtil.getColumnInfoType(inputTypeName),
330+
String.format(
331+
"inputType : %s, output should have been %s. But was %s",
332+
inputTypeName, expectedTypeName, DatabricksTypeUtil.getColumnInfoType(inputTypeName)));
333+
}
334+
335+
@ParameterizedTest
336+
@CsvSource({
337+
"VARIANT, VARIANT, " + Types.OTHER,
338+
"TIMESTAMP, TIMESTAMP, " + Types.TIMESTAMP,
339+
"TIMESTAMP_NTZ, TIMESTAMP, " + Types.TIMESTAMP,
340+
"GEOGRAPHY, GEOGRAPHY, " + Types.OTHER,
341+
"GEOMETRY, GEOMETRY, " + Types.OTHER,
342+
})
343+
public void testGetColumnInfoTypeToJdbcType(
344+
String inputTypeName, String expectedEnumName, int expectedJdbcType) {
345+
ColumnInfoTypeName typeName = DatabricksTypeUtil.getColumnInfoType(inputTypeName);
346+
assertEquals(
347+
ColumnInfoTypeName.valueOf(expectedEnumName),
348+
typeName,
349+
"Enum mapping mismatch for " + inputTypeName);
350+
assertEquals(
351+
expectedJdbcType,
352+
DatabricksTypeUtil.getColumnType(typeName),
353+
"JDBC type code mismatch for " + inputTypeName);
354+
}
355+
303356
@Test
304357
void testGetScale() {
305358
assertEquals(0, DatabricksTypeUtil.getScale(Types.DOUBLE));

src/test/resources/cloudfetchapi/preparedstatementintegrationtests/testsetdate/mappings/oregon-staging_6051921418418893.jobs_sql_extended_results_2026-04-02t105321z_98c3d13c-6b53-40c0-842b-d43110c18ab8-143cad66-48da-4956-9f34-894ec50af41b.json renamed to src/test/resources/cloudfetchapi/preparedstatementintegrationtests/testsetdate/mappings/oregon-staging_6051921418418893.jobs_sql_extended_results_2026-05-22t080142z_7c795f05-538d-4aee-8bda-3daec89f99a0-4af91223-914a-4d56-a64e-79d202dfb6ed.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"id" : "143cad66-48da-4956-9f34-894ec50af41b",
3-
"name" : "oregon-staging_6051921418418893.jobs_sql_extended_results_2026-04-02t105321z_98c3d13c-6b53-40c0-842b-d43110c18ab8",
2+
"id" : "4af91223-914a-4d56-a64e-79d202dfb6ed",
3+
"name" : "oregon-staging_6051921418418893.jobs_sql_extended_results_2026-05-22t080142z_7c795f05-538d-4aee-8bda-3daec89f99a0",
44
"request" : {
5-
"url" : "/oregon-staging/6051921418418893.jobs/sql/extended/results_2026-04-02T10%3A53%3A21Z_98c3d13c-6b53-40c0-842b-d43110c18ab8?[REDACTED]X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260401T095321Z&X-Amz-SignedHeaders=host&X-Amz-Expires=899&[REDACTED]X-Amz-Signature=cf0d08af0116aaa68edded23d67424dffc1af3399f125ace4eaaa0b5914c22a2",
5+
"url" : "/oregon-staging/6051921418418893.jobs/sql/extended/results_2026-05-22T08%3A01%3A42Z_7c795f05-538d-4aee-8bda-3daec89f99a0?[REDACTED]X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260521T070142Z&X-Amz-SignedHeaders=host&X-Amz-Expires=899&[REDACTED]X-Amz-Signature=b33b54abb3cd75aac6cc439ec6bc9f93766a9ebf801acbbc1fac6500ce941aa0",
66
"method" : "GET"
77
},
88
"response" : {
@@ -12,14 +12,14 @@
1212
"Accept-Ranges" : "bytes",
1313
"Server" : "AmazonS3",
1414
"ETag" : "\"9295f1328e942f941e19047fb0b03b2f\"",
15-
"Last-Modified" : "Wed, 01 Apr 2026 09:53:22 GMT",
16-
"x-amz-request-id" : "20YQ98F5CDJBDA4A",
15+
"Last-Modified" : "Thu, 21 May 2026 07:01:43 GMT",
16+
"x-amz-request-id" : "XMFMBCRC7WS1J8WG",
1717
"x-amz-server-side-encryption" : "AES256",
18-
"x-amz-id-2" : "SAh2k9S2YWEMNK74vaDjSSXGPTzZPKjBsRsDvFMSteQYc20sYIZAulFVZcoTcswRigCy13Xri54jJ3f+6Qfy2w==",
19-
"Date" : "Wed, 01 Apr 2026 09:53:23 GMT",
18+
"x-amz-id-2" : "lqWxvit6qKRJ1lR3mhRVhKHPgR4UdaL7NVkUnQ3u2ny1q36IfX2MYvU5QojyZ3azFNZH55xcxKzxZBrXyVjuX66pomb0HLf4uGh58uQhnx4=",
19+
"Date" : "Thu, 21 May 2026 07:01:44 GMT",
2020
"Content-Type" : "binary/octet-stream"
2121
}
2222
},
23-
"uuid" : "143cad66-48da-4956-9f34-894ec50af41b",
24-
"insertionIndex" : 56
23+
"uuid" : "4af91223-914a-4d56-a64e-79d202dfb6ed",
24+
"insertionIndex" : 2
2525
}

src/test/resources/cloudfetchapi/preparedstatementintegrationtests/testsetdate/mappings/oregon-staging_6051921418418893.jobs_sql_extended_results_2026-04-02t105325z_46eee378-ac5e-4a5a-b478-1ecb381051c0-cb0b5fa3-dfa8-46b8-9be0-01e1ae0648dc.json renamed to src/test/resources/cloudfetchapi/preparedstatementintegrationtests/testsetdate/mappings/oregon-staging_6051921418418893.jobs_sql_extended_results_2026-05-22t080146z_6806e0db-c251-4d16-a4f6-5a9838e635f4-8ee1f363-3bee-406e-a394-72f585a9df87.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"id" : "cb0b5fa3-dfa8-46b8-9be0-01e1ae0648dc",
3-
"name" : "oregon-staging_6051921418418893.jobs_sql_extended_results_2026-04-02t105325z_46eee378-ac5e-4a5a-b478-1ecb381051c0",
2+
"id" : "8ee1f363-3bee-406e-a394-72f585a9df87",
3+
"name" : "oregon-staging_6051921418418893.jobs_sql_extended_results_2026-05-22t080146z_6806e0db-c251-4d16-a4f6-5a9838e635f4",
44
"request" : {
5-
"url" : "/oregon-staging/6051921418418893.jobs/sql/extended/results_2026-04-02T10%3A53%3A25Z_46eee378-ac5e-4a5a-b478-1ecb381051c0?[REDACTED]X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260401T095325Z&X-Amz-SignedHeaders=host&X-Amz-Expires=899&[REDACTED]X-Amz-Signature=1af4ab5012c707cf8e736a0b42deb7d7a85a8c6c5872edb81d34de8c47987b2c",
5+
"url" : "/oregon-staging/6051921418418893.jobs/sql/extended/results_2026-05-22T08%3A01%3A46Z_6806e0db-c251-4d16-a4f6-5a9838e635f4?[REDACTED]X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260521T070146Z&X-Amz-SignedHeaders=host&X-Amz-Expires=899&[REDACTED]X-Amz-Signature=be8133042693d2480c82e478902f423b3faf751a9e20a7c90adbcb0e455fa7f4",
66
"method" : "GET"
77
},
88
"response" : {
@@ -12,14 +12,14 @@
1212
"Accept-Ranges" : "bytes",
1313
"Server" : "AmazonS3",
1414
"ETag" : "\"1a6d0b3122d415a1fb23e1c4ead56095\"",
15-
"Last-Modified" : "Wed, 01 Apr 2026 09:53:26 GMT",
16-
"x-amz-request-id" : "38F48Z9JR3BR6GAK",
15+
"Last-Modified" : "Thu, 21 May 2026 07:01:47 GMT",
16+
"x-amz-request-id" : "XNZWBPKWAG584G1R",
1717
"x-amz-server-side-encryption" : "AES256",
18-
"x-amz-id-2" : "Xy+CqtOo2rMGa5DWL+CP+OX5fl5U3iXA4wH7dfw08y+ceIbztdvT+RLkD5+DNOC4GJE3AyIVpej31lXbvxqTzA==",
19-
"Date" : "Wed, 01 Apr 2026 09:53:27 GMT",
18+
"x-amz-id-2" : "g+F0EKZvcx943cyouYCX2aXuCUhsPnSjPRSLpOjx2FMfgnyfE+qUuOJ+cpgXDgR5Uj90pzo4cd+oxtRuSPGn+Co38yDyGdsJHjV6mPaa08w=",
19+
"Date" : "Thu, 21 May 2026 07:01:48 GMT",
2020
"Content-Type" : "binary/octet-stream"
2121
}
2222
},
23-
"uuid" : "cb0b5fa3-dfa8-46b8-9be0-01e1ae0648dc",
24-
"insertionIndex" : 55
23+
"uuid" : "8ee1f363-3bee-406e-a394-72f585a9df87",
24+
"insertionIndex" : 1
2525
}

src/test/resources/sqlexecapi/preparedstatementintegrationtests/testsetdate/mappings/api_2.0_sql_sessions-5b2c6dbf-7d64-4bca-8345-e18704b53897.json renamed to src/test/resources/sqlexecapi/preparedstatementintegrationtests/testsetdate/mappings/api_2.0_sql_sessions-aa50f15a-4d8e-4743-a77f-16a93192c130.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"id" : "5b2c6dbf-7d64-4bca-8345-e18704b53897",
2+
"id" : "aa50f15a-4d8e-4743-a77f-16a93192c130",
33
"name" : "api_2.0_sql_sessions",
44
"request" : {
55
"url" : "/api/2.0/sql/sessions/",
@@ -12,10 +12,10 @@
1212
},
1313
"response" : {
1414
"status" : 200,
15-
"body" : "{\"session_id\":\"01f12db0-9a0c-1c70-8018-15f759e4fa26\"}",
15+
"body" : "{\"session_id\":\"01f154e2-e74b-131e-bdf5-198f31c91ac6\"}",
1616
"headers" : {
17-
"x-request-id" : "ddec4137-21e7-43d1-918f-44e6fddd4a03",
18-
"date" : "Wed, 1 Apr 2026 09:53:14 GMT",
17+
"x-request-id" : "234c72fa-3b8c-4315-b634-63852d86970e",
18+
"date" : "Thu, 21 May 2026 07:01:34 GMT",
1919
"server" : "databricks",
2020
"x-databricks-popp-response-code-details" : "via_upstream",
2121
"x-databricks-shard-debug" : "oregon-staging",
@@ -28,11 +28,11 @@
2828
"x-content-type-options" : "nosniff",
2929
"x-databricks-popp-routing-reason" : "deployment-name",
3030
"content-type" : "application/json",
31-
"server-timing" : "request_id;dur=0;desc=\"ddec4137-21e7-43d1-918f-44e6fddd4a03\", client_protocol;dur=0;desc=\"HTTP/1.1\"",
31+
"server-timing" : "request_id;dur=0;desc=\"234c72fa-3b8c-4315-b634-63852d86970e\", client_protocol;dur=0;desc=\"HTTP/1.1\"",
3232
"alt-svc" : "h3=\":443\"; ma=86400, h3-29=\":443\"; ma=86400",
3333
"x-databricks-apiproxy-response-code-details" : "via_upstream"
3434
}
3535
},
36-
"uuid" : "5b2c6dbf-7d64-4bca-8345-e18704b53897",
37-
"insertionIndex" : 270
36+
"uuid" : "aa50f15a-4d8e-4743-a77f-16a93192c130",
37+
"insertionIndex" : 12
3838
}

src/test/resources/sqlexecapi/preparedstatementintegrationtests/testsetdate/mappings/api_2.0_sql_sessions_01f12db0-9a0c-1c70-8018-15f759e4fa26-c61ce7a4-a509-435d-bf50-008299f038d1.json

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)