Skip to content

Commit 8c4c2d5

Browse files
committed
Revert "Move the “High Precision Query System Tests” block"
This reverts commit f042cc4.
1 parent f042cc4 commit 8c4c2d5

2 files changed

Lines changed: 237 additions & 229 deletions

File tree

handwritten/bigquery/system-test/bigquery.ts

Lines changed: 1 addition & 229 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,234 +1238,6 @@ describe('BigQuery', () => {
12381238

12391239
describe('SQL parameters', () => {
12401240
describe('positional', () => {
1241-
describe.only('High Precision Query System Tests', () => {
1242-
let bigquery: BigQuery;
1243-
const expectedTsValueNanoseconds = '2023-01-01T12:00:00.123456000Z';
1244-
const expectedTsValuePicoseconds =
1245-
'2023-01-01T12:00:00.123456789123Z';
1246-
const expectedErrorMessage =
1247-
'Cannot specify both timestamp_as_int and timestamp_output_format.';
1248-
1249-
before(() => {
1250-
bigquery = new BigQuery();
1251-
});
1252-
1253-
const testCases = [
1254-
{
1255-
name: 'TOF: TIMESTAMP_OUTPUT_FORMAT_UNSPECIFIED, UI64: true',
1256-
timestampOutputFormat: 'TIMESTAMP_OUTPUT_FORMAT_UNSPECIFIED',
1257-
useInt64Timestamp: true,
1258-
expectedTsValue: expectedTsValueNanoseconds,
1259-
},
1260-
{
1261-
name: 'TOF: TIMESTAMP_OUTPUT_FORMAT_UNSPECIFIED, UI64: false (default ISO8601_STRING)',
1262-
timestampOutputFormat: 'TIMESTAMP_OUTPUT_FORMAT_UNSPECIFIED',
1263-
useInt64Timestamp: false,
1264-
expectedTsValue: expectedTsValueNanoseconds,
1265-
},
1266-
/*
1267-
{ // This is not a meaningful use case.
1268-
name: 'TOF: FLOAT64, UI64: true (error)',
1269-
timestampOutputFormat: 'FLOAT64',
1270-
useInt64Timestamp: true,
1271-
expectedTsValue: undefined,
1272-
expectedError: expectedErrorMessage,
1273-
},
1274-
*/
1275-
{
1276-
name: 'TOF: FLOAT64, UI64: false',
1277-
timestampOutputFormat: 'FLOAT64',
1278-
useInt64Timestamp: false,
1279-
expectedTsValue: expectedTsValueNanoseconds,
1280-
},
1281-
{
1282-
name: 'TOF: INT64, UI64: true',
1283-
timestampOutputFormat: 'INT64',
1284-
useInt64Timestamp: true,
1285-
expectedTsValue: expectedTsValueNanoseconds,
1286-
},
1287-
{
1288-
name: 'TOF: INT64, UI64: false (error)',
1289-
timestampOutputFormat: 'INT64',
1290-
useInt64Timestamp: false,
1291-
expectedTsValue: expectedTsValueNanoseconds,
1292-
},
1293-
{
1294-
name: 'TOF: ISO8601_STRING, UI64: true (error)',
1295-
timestampOutputFormat: 'ISO8601_STRING',
1296-
useInt64Timestamp: true,
1297-
expectedTsValue: undefined,
1298-
expectedError: expectedErrorMessage,
1299-
},
1300-
{
1301-
name: 'TOF: ISO8601_STRING, UI64: false',
1302-
timestampOutputFormat: 'ISO8601_STRING',
1303-
useInt64Timestamp: false,
1304-
expectedTsValue: expectedTsValuePicoseconds,
1305-
},
1306-
{
1307-
name: 'TOF: omitted, UI64: omitted (default INT64)',
1308-
timestampOutputFormat: undefined,
1309-
useInt64Timestamp: undefined,
1310-
expectedTsValue: expectedTsValuePicoseconds,
1311-
},
1312-
{
1313-
name: 'TOF: omitted, UI64: true',
1314-
timestampOutputFormat: undefined,
1315-
useInt64Timestamp: true,
1316-
expectedTsValue: expectedTsValueNanoseconds,
1317-
},
1318-
{
1319-
name: 'TOF: omitted, UI64: false (default ISO8601_STRING)',
1320-
timestampOutputFormat: undefined,
1321-
useInt64Timestamp: false,
1322-
expectedTsValue: expectedTsValueNanoseconds,
1323-
},
1324-
{
1325-
name: 'TOF: TIMESTAMP_OUTPUT_FORMAT_UNSPECIFIED, UI64: omitted (default INT64)',
1326-
timestampOutputFormat: 'TIMESTAMP_OUTPUT_FORMAT_UNSPECIFIED',
1327-
useInt64Timestamp: undefined,
1328-
expectedTsValue: expectedTsValueNanoseconds,
1329-
},
1330-
{
1331-
name: 'TOF: FLOAT64, UI64: omitted (error)',
1332-
timestampOutputFormat: 'FLOAT64',
1333-
useInt64Timestamp: undefined,
1334-
expectedTsValue: expectedTsValueNanoseconds,
1335-
},
1336-
{
1337-
name: 'TOF: INT64, UI64: omitted',
1338-
timestampOutputFormat: 'INT64',
1339-
useInt64Timestamp: undefined,
1340-
expectedTsValue: expectedTsValueNanoseconds,
1341-
},
1342-
{
1343-
name: 'TOF: ISO8601_STRING, UI64: omitted (error)',
1344-
timestampOutputFormat: 'ISO8601_STRING',
1345-
useInt64Timestamp: undefined,
1346-
expectedTsValue: expectedTsValuePicoseconds,
1347-
},
1348-
];
1349-
1350-
testCases.forEach(testCase => {
1351-
it(`should handle ${testCase.name}`, async () => {
1352-
/*
1353-
The users use the new TIMESTAMP(12) type to indicate they want to
1354-
opt in to using timestampPrecision=12. The reason is that some queries
1355-
like `SELECT CAST(? as TIMESTAMP(12))` will fail if we set
1356-
timestampPrecision=12 and we don't want this code change to affect
1357-
existing users. Queries using TIMESTAMP_ADD are another example.
1358-
*/
1359-
const query = {
1360-
query: 'SELECT ? as ts',
1361-
params: [
1362-
bigquery.timestamp('2023-01-01T12:00:00.123456789123Z'),
1363-
],
1364-
types: ['TIMESTAMP(12)'],
1365-
};
1366-
1367-
const options: any = {};
1368-
if (testCase.timestampOutputFormat !== undefined) {
1369-
options['formatOptions.timestampOutputFormat'] =
1370-
testCase.timestampOutputFormat;
1371-
}
1372-
if (testCase.useInt64Timestamp !== undefined) {
1373-
options['formatOptions.useInt64Timestamp'] =
1374-
testCase.useInt64Timestamp;
1375-
}
1376-
1377-
try {
1378-
const [rows] = await bigquery.query(query, options);
1379-
if (testCase.expectedError) {
1380-
assert.fail(
1381-
`Query should have failed for ${testCase.name}, but succeeded`,
1382-
);
1383-
}
1384-
assert.ok(rows.length > 0);
1385-
assert.ok(rows[0].ts.value !== undefined);
1386-
assert.strictEqual(
1387-
rows[0].ts.value,
1388-
testCase.expectedTsValue,
1389-
);
1390-
} catch (err: any) {
1391-
if (!testCase.expectedError) {
1392-
throw err;
1393-
}
1394-
1395-
const message = err.message;
1396-
assert.strictEqual(
1397-
message,
1398-
testCase.expectedError,
1399-
`Expected ${testCase.expectedError} error for ${testCase.name}, got ${message} (${err.message})`,
1400-
);
1401-
}
1402-
});
1403-
it(`should handle nested ${testCase.name}`, async () => {
1404-
/*
1405-
The users use the new TIMESTAMP(12) type to indicate they want to
1406-
opt in to using timestampPrecision=12. The reason is that some queries
1407-
like `SELECT CAST(? as TIMESTAMP(12))` will fail if we set
1408-
timestampPrecision=12 and we don't want this code change to affect
1409-
existing users.
1410-
*/
1411-
const query = {
1412-
query: 'SELECT ? obj',
1413-
params: [
1414-
{
1415-
nested: {
1416-
a: bigquery.timestamp(
1417-
'2023-01-01T12:00:00.123456789123Z',
1418-
),
1419-
},
1420-
},
1421-
],
1422-
types: [
1423-
{
1424-
nested: {
1425-
a: 'TIMESTAMP(12)',
1426-
},
1427-
},
1428-
],
1429-
};
1430-
1431-
const options: any = {};
1432-
if (testCase.timestampOutputFormat !== undefined) {
1433-
options['formatOptions.timestampOutputFormat'] =
1434-
testCase.timestampOutputFormat;
1435-
}
1436-
if (testCase.useInt64Timestamp !== undefined) {
1437-
options['formatOptions.useInt64Timestamp'] =
1438-
testCase.useInt64Timestamp;
1439-
}
1440-
1441-
try {
1442-
const [rows] = await bigquery.query(query, options);
1443-
if (testCase.expectedError) {
1444-
assert.fail(
1445-
`Query should have failed for ${testCase.name}, but succeeded`,
1446-
);
1447-
}
1448-
assert.ok(rows.length > 0);
1449-
assert.ok(rows[0].obj.nested.a.value !== undefined);
1450-
assert.strictEqual(
1451-
rows[0].obj.nested.a.value,
1452-
testCase.expectedTsValue,
1453-
);
1454-
} catch (err: any) {
1455-
if (!testCase.expectedError) {
1456-
throw err;
1457-
}
1458-
1459-
const message = err.message;
1460-
assert.strictEqual(
1461-
message,
1462-
testCase.expectedError,
1463-
`Expected ${testCase.expectedError} error for ${testCase.name}, got ${message} (${err.message})`,
1464-
);
1465-
}
1466-
});
1467-
});
1468-
});
14691241
it('should work with strings', done => {
14701242
bigquery.query(
14711243
{
@@ -1709,7 +1481,7 @@ describe('BigQuery', () => {
17091481
done(e);
17101482
}
17111483
},
1712-
);
1484+
)
17131485
});
17141486

17151487
it('should work with multiple types', done => {

0 commit comments

Comments
 (0)