Skip to content

Commit bb00ae8

Browse files
authored
Merge branch 'main' into yvonne/timestamp-expressions
2 parents 05bbb06 + e500d40 commit bb00ae8

124 files changed

Lines changed: 39104 additions & 197 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.release-please-manifest.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
"packages/google-cloud-binaryauthorization": "4.4.0",
6666
"packages/google-cloud-capacityplanner": "0.1.2",
6767
"packages/google-cloud-certificatemanager": "2.1.1",
68-
"packages/google-cloud-ces": "0.2.0",
68+
"packages/google-cloud-ces": "0.3.0",
6969
"packages/google-cloud-channel": "4.1.2",
7070
"packages/google-cloud-chronicle": "0.2.1",
7171
"packages/google-cloud-cloudcontrolspartner": "0.6.1",
@@ -93,7 +93,7 @@
9393
"packages/google-cloud-devicestreaming": "0.2.1",
9494
"packages/google-cloud-dialogflow": "7.5.0",
9595
"packages/google-cloud-dialogflow-cx": "5.7.0",
96-
"packages/google-cloud-discoveryengine": "2.5.3",
96+
"packages/google-cloud-discoveryengine": "2.6.0",
9797
"packages/google-cloud-dns": "5.3.1",
9898
"packages/google-cloud-documentai": "9.6.0",
9999
"packages/google-cloud-domains": "4.2.1",
@@ -234,10 +234,11 @@
234234
"packages/google-shopping-merchant-quota": "0.9.0",
235235
"packages/google-shopping-merchant-reports": "0.14.0",
236236
"packages/google-shopping-merchant-reviews": "0.6.0",
237-
"packages/google-storage-control": "0.8.1",
237+
"packages/google-storage-control": "0.8.2",
238238
"packages/google-storagetransfer": "4.2.1",
239239
"packages/google-streetview-publish": "0.4.1",
240240
"packages/grafeas": "6.1.1",
241241
"packages/typeless-sample-bot": "3.1.1",
242-
"packages/google-maps-navconnect": "0.1.0"
242+
"packages/google-maps-navconnect": "0.1.0",
243+
"packages/google-cloud-datacatalog-lineage-configmanagement": "0.1.0"
243244
}

changelog.json

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,75 @@
11
{
22
"repository": "googleapis/google-cloud-node",
33
"entries": [
4+
{
5+
"changes": [
6+
{
7+
"type": "feat",
8+
"sha": "91666d001bdc0d020742784bebc2c4e4bba81de4",
9+
"message": "Add initial files for google.cloud.datacatalog.lineage.configmanagement.v1",
10+
"issues": [
11+
"7842"
12+
]
13+
}
14+
],
15+
"version": "0.1.0",
16+
"language": "JAVASCRIPT",
17+
"artifactName": "@google-cloud/configmanagement",
18+
"id": "b4bac2c8-ed00-4012-8556-f07e615aebb6",
19+
"createTime": "2026-03-25T19:27:43.346Z"
20+
},
21+
{
22+
"changes": [
23+
{
24+
"type": "feat",
25+
"sha": "0e802546d86a64e5317fda86f99ed9f1b1026e0f",
26+
"message": "[ces] update public libraries for CES v1",
27+
"issues": [
28+
"7845"
29+
]
30+
}
31+
],
32+
"version": "0.3.0",
33+
"language": "JAVASCRIPT",
34+
"artifactName": "@google-cloud/ces",
35+
"id": "bd13ecf3-51bc-4d3e-a789-06036d9d9026",
36+
"createTime": "2026-03-25T19:27:43.303Z"
37+
},
38+
{
39+
"changes": [
40+
{
41+
"type": "fix",
42+
"sha": "1dd586015cbc85409f4737c995c750bc694c14c3",
43+
"message": "Update jsdocs headers in v2 clients to include …",
44+
"issues": [
45+
"7851"
46+
],
47+
"scope": "storage-control"
48+
}
49+
],
50+
"version": "0.8.2",
51+
"language": "JAVASCRIPT",
52+
"artifactName": "@google-cloud/storage-control",
53+
"id": "7016585d-b347-4953-b381-78f7b0eccbf6",
54+
"createTime": "2026-03-25T19:27:43.262Z"
55+
},
56+
{
57+
"changes": [
58+
{
59+
"type": "feat",
60+
"sha": "694358739b082ad17f42800b42e5dbbf4c2c975b",
61+
"message": "[discoveryengine] Update DataStoreSpec and add BoostSpec to SearchService",
62+
"issues": [
63+
"7837"
64+
]
65+
}
66+
],
67+
"version": "2.6.0",
68+
"language": "JAVASCRIPT",
69+
"artifactName": "@google-cloud/discoveryengine",
70+
"id": "74179f79-1668-445d-9990-91aebf8611b6",
71+
"createTime": "2026-03-25T19:27:43.222Z"
72+
},
473
{
574
"changes": [
675
{
@@ -69306,5 +69375,5 @@
6930669375
"createTime": "2023-01-28T04:18:24.718Z"
6930769376
}
6930869377
],
69309-
"updateTime": "2026-03-19T21:58:31.408Z"
69378+
"updateTime": "2026-03-25T19:27:43.346Z"
6931069379
}

core/packages/gax/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"object-hash": "^3.0.0",
2020
"proto3-json-serializer": "3.0.4",
2121
"protobufjs": "^7.5.4",
22-
"retry-request": "8.0.2",
22+
"retry-request": "^8.0.2",
2323
"rimraf": "^5.0.1"
2424
},
2525
"devDependencies": {

core/packages/tools/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"dependencies": {
3333
"@babel/core": "^7.26.8",
3434
"@babel/traverse": "^7.26.8",
35-
"google-gax": "5.0.6",
35+
"google-gax": "^5.0.6",
3636
"google-proto-files": "^5.0.0",
3737
"protobufjs-cli": "^1.2.0",
3838
"uglify-js": "^3.19.3",

handwritten/bigquery/src/bigquery.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export type Query = JobRequest<bigquery.IJobConfigurationQuery> & {
128128
pageToken?: string;
129129
wrapIntegers?: boolean | IntegerTypeCastOptions;
130130
parseJSON?: boolean;
131+
skipParsing?: boolean;
131132
// Overrides default job creation mode set on the client.
132133
jobCreationMode?: JobCreationMode;
133134
};
@@ -2217,6 +2218,7 @@ export class BigQuery extends Service {
22172218
? {
22182219
wrapIntegers: query.wrapIntegers,
22192220
parseJSON: query.parseJSON,
2221+
skipParsing: query.skipParsing,
22202222
}
22212223
: {};
22222224
const callback =
@@ -2268,12 +2270,16 @@ export class BigQuery extends Service {
22682270
'formatOptions.useInt64Timestamp':
22692271
queryReq.formatOptions?.useInt64Timestamp,
22702272
};
2271-
rows = BigQuery.mergeSchemaWithRows_(res.schema, res.rows, {
2272-
wrapIntegers: options.wrapIntegers || false,
2273-
parseJSON: options.parseJSON,
2274-
listParams,
2275-
});
2276-
delete res.rows;
2273+
if (options.skipParsing) {
2274+
rows = res.rows;
2275+
} else {
2276+
rows = BigQuery.mergeSchemaWithRows_(res.schema, res.rows, {
2277+
wrapIntegers: options.wrapIntegers || false,
2278+
parseJSON: options.parseJSON,
2279+
listParams,
2280+
});
2281+
delete res.rows;
2282+
}
22772283
} catch (e) {
22782284
(callback as SimpleQueryRowsCallback)(e as Error, null, job);
22792285
return;

handwritten/bigquery/src/job.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type QueryResultsOptions = {
5151
job?: Job;
5252
wrapIntegers?: boolean | IntegerTypeCastOptions;
5353
parseJSON?: boolean;
54+
skipParsing?: boolean;
5455
} & PagedRequest<bigquery.jobs.IGetQueryResultsParams> & {
5556
/**
5657
* internal properties
@@ -602,10 +603,15 @@ class Job extends Operation {
602603
error never makes it to the callback. Instead, pass the error to the
603604
callback the user provides so that the user can see the error.
604605
*/
605-
rows = BigQuery.mergeSchemaWithRows_(resp.schema, resp.rows, {
606-
wrapIntegers,
607-
parseJSON,
608-
});
606+
if (options.skipParsing) {
607+
rows = resp.rows;
608+
} else {
609+
rows = BigQuery.mergeSchemaWithRows_(resp.schema, resp.rows, {
610+
wrapIntegers,
611+
parseJSON,
612+
});
613+
delete resp.rows;
614+
}
609615
} catch (e) {
610616
callback!(e as Error, null, null, resp);
611617
return;
@@ -633,7 +639,6 @@ class Job extends Operation {
633639
});
634640
delete nextQuery.startIndex;
635641
}
636-
delete resp.rows;
637642
callback!(null, rows, nextQuery, resp);
638643
},
639644
);

handwritten/bigquery/src/table.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export type TableRowValue = string | TableRow;
114114
export type GetRowsOptions = PagedRequest<bigquery.tabledata.IListParams> & {
115115
wrapIntegers?: boolean | IntegerTypeCastOptions;
116116
parseJSON?: boolean;
117+
skipParsing?: boolean;
117118
};
118119

119120
export type JobLoadMetadata = JobRequest<bigquery.IJobConfigurationLoad> & {
@@ -1873,12 +1874,20 @@ class Table extends ServiceObject {
18731874
the callback. Instead, pass the error to the callback the user provides
18741875
so that the user can see the error.
18751876
*/
1876-
rows = BigQuery.mergeSchemaWithRows_(this.metadata.schema, rows || [], {
1877-
wrapIntegers,
1878-
selectedFields,
1879-
parseJSON,
1880-
listParams: qs,
1881-
});
1877+
if (options.skipParsing) {
1878+
rows = rows || [];
1879+
} else {
1880+
rows = BigQuery.mergeSchemaWithRows_(
1881+
this.metadata.schema,
1882+
rows || [],
1883+
{
1884+
wrapIntegers,
1885+
selectedFields,
1886+
parseJSON,
1887+
listParams: qs,
1888+
},
1889+
);
1890+
}
18821891
} catch (err) {
18831892
callback!(err as Error | null, null, null, resp);
18841893
return;

handwritten/bigquery/system-test/bigquery.ts

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,27 @@ describe('BigQuery', () => {
354354
assert.strictEqual(res.totalRows, '100');
355355
});
356356

357+
it('should query with skipParsing', async () => {
358+
const [rows] = await bigquery.query({
359+
query,
360+
skipParsing: true,
361+
});
362+
assert.strictEqual(rows.length, 100);
363+
// Raw rows have an 'f' property containing the fields
364+
assert.ok(rows[0].f);
365+
assert.strictEqual(typeof rows[0].f[0].v, 'string');
366+
});
367+
368+
it('should query with skipParsing via Dataset.query', async () => {
369+
const [rows] = await dataset.query({
370+
query,
371+
skipParsing: true,
372+
});
373+
assert.strictEqual(rows.length, 100);
374+
assert.ok(rows[0].f);
375+
assert.strictEqual(typeof rows[0].f[0].v, 'string');
376+
});
377+
357378
it('should query without jobs.query and return all PagedResponse as positional parameters', async () => {
358379
// force jobs.getQueryResult instead of fast query path
359380
const jobId = generateName('job');
@@ -575,8 +596,9 @@ describe('BigQuery', () => {
575596
const QUERY = `SELECT * FROM \`${table.id}\``;
576597
// eslint-disable-next-line @typescript-eslint/no-var-requires
577598
const SCHEMA = require('../../system-test/data/schema.json');
578-
const TEST_DATA_FILE =
579-
require.resolve('../../system-test/data/location-test-data.json');
599+
const TEST_DATA_FILE = require.resolve(
600+
'../../system-test/data/location-test-data.json',
601+
);
580602

581603
before(async () => {
582604
// create a dataset in a certain location will cascade the location
@@ -879,8 +901,9 @@ describe('BigQuery', () => {
879901
});
880902

881903
describe('BigQuery/Table', () => {
882-
const TEST_DATA_JSON_PATH =
883-
require.resolve('../../system-test/data/kitten-test-data.json');
904+
const TEST_DATA_JSON_PATH = require.resolve(
905+
'../../system-test/data/kitten-test-data.json',
906+
);
884907

885908
it('should have created the correct schema', () => {
886909
assert.deepStrictEqual(table.metadata.schema.fields, SCHEMA);

handwritten/bigquery/test/bigquery.ts

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3243,6 +3243,74 @@ describe('BigQuery', () => {
32433243
});
32443244
});
32453245

3246+
it('should delete res.rows if skipParsing is false', done => {
3247+
const rawRows = [{f: [{v: 'hi'}]}];
3248+
const resp = {
3249+
jobComplete: true,
3250+
schema: {
3251+
fields: [{name: 'name', type: 'STRING'}],
3252+
},
3253+
rows: rawRows,
3254+
};
3255+
3256+
const job = {
3257+
getQueryResults: (options: {}, callback: Function) => {
3258+
callback(null, [], null, resp);
3259+
},
3260+
};
3261+
3262+
bq.runJobsQuery = (reqOpts: {}, callback: Function) => {
3263+
callback(null, job, resp);
3264+
};
3265+
3266+
bq.query(
3267+
{
3268+
query: 'SELECT * FROM table',
3269+
skipParsing: false,
3270+
},
3271+
(err: Error, rows: {}[], nextQuery: {}, response: any) => {
3272+
assert.ifError(err);
3273+
// the job Complete callback returned the resp
3274+
assert.deepStrictEqual(response.rows, undefined);
3275+
done();
3276+
},
3277+
);
3278+
});
3279+
3280+
it('should skip parsing if skipParsing is true', done => {
3281+
const rawRows = [{f: [{v: 'hi'}]}];
3282+
const resp = {
3283+
jobComplete: true,
3284+
schema: {
3285+
fields: [{name: 'name', type: 'STRING'}],
3286+
},
3287+
rows: rawRows,
3288+
};
3289+
3290+
const job = {
3291+
getQueryResults: (options: QueryResultsOptions, callback: Function) => {
3292+
callback(null, options._cachedRows, null, options._cachedResponse);
3293+
},
3294+
};
3295+
3296+
bq.runJobsQuery = (reqOpts: {}, callback: Function) => {
3297+
callback(null, job, resp);
3298+
};
3299+
3300+
bq.query(
3301+
{
3302+
query: 'SELECT * FROM table',
3303+
skipParsing: true,
3304+
},
3305+
(err: Error, rows: {}[], nextQuery: {}, response: any) => {
3306+
assert.ifError(err);
3307+
assert.strictEqual(rows, rawRows);
3308+
assert.deepStrictEqual(response.rows, rawRows);
3309+
done();
3310+
},
3311+
);
3312+
});
3313+
32463314
it('should call job#getQueryResults with query options', done => {
32473315
let queryResultsOpts = {};
32483316
const fakeJob = {

handwritten/bigquery/test/dataset.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,6 +1010,20 @@ describe('BigQuery/Dataset', () => {
10101010
ds.query(query);
10111011
});
10121012

1013+
it('should pass along skipParsing', done => {
1014+
const query = {
1015+
query: 'SELECT * FROM allthedata',
1016+
skipParsing: true,
1017+
};
1018+
1019+
ds.bigQuery.query = (opts: _root.Query) => {
1020+
assert.strictEqual(opts.skipParsing, true);
1021+
done();
1022+
};
1023+
1024+
ds.query(query);
1025+
});
1026+
10131027
it('should pass along options', done => {
10141028
// eslint-disable-next-line @typescript-eslint/no-explicit-any
10151029
ds.bigQuery.query = (opts: any) => {

0 commit comments

Comments
 (0)