9
9
// licenses/APL.txt.
10
10
11
11
import {
12
+ combineQueryErrors ,
12
13
executeInternalSql ,
13
14
formatApiResult ,
14
15
LARGE_RESULT_SIZE ,
@@ -111,7 +112,7 @@ const getTableId: TableDetailsQuery<TableIdRow> = {
111
112
} ;
112
113
113
114
// Table create statement.
114
- type TableCreateStatementRow = { create_statement : string } ;
115
+ export type TableCreateStatementRow = { create_statement : string } ;
115
116
116
117
const getTableCreateStatement : TableDetailsQuery < TableCreateStatementRow > = {
117
118
createStmt : ( dbName , tableName ) => {
@@ -129,22 +130,22 @@ const getTableCreateStatement: TableDetailsQuery<TableCreateStatementRow> = {
129
130
txn_result : SqlTxnResult < TableCreateStatementRow > ,
130
131
resp : TableDetailsResponse ,
131
132
) => {
133
+ if ( txn_result . error ) {
134
+ resp . createStmtResp . error = txn_result . error ;
135
+ }
132
136
if ( ! txnResultIsEmpty ( txn_result ) ) {
133
137
resp . createStmtResp . create_statement =
134
138
txn_result . rows [ 0 ] . create_statement ;
135
- } else {
139
+ } else if ( ! txn_result . error ) {
136
140
txn_result . error = new Error (
137
141
"getTableCreateStatement: unexpected empty results" ,
138
142
) ;
139
143
}
140
- if ( txn_result . error ) {
141
- resp . createStmtResp . error = txn_result . error ;
142
- }
143
144
} ,
144
145
} ;
145
146
146
147
// Table grants.
147
- type TableGrantsResponse = {
148
+ export type TableGrantsResponse = {
148
149
grants : TableGrantsRow [ ] ;
149
150
} ;
150
151
@@ -181,7 +182,7 @@ const getTableGrants: TableDetailsQuery<TableGrantsRow> = {
181
182
} ;
182
183
183
184
// Table schema details.
184
- type TableSchemaDetailsRow = {
185
+ export type TableSchemaDetailsRow = {
185
186
columns : string [ ] ;
186
187
indexes : string [ ] ;
187
188
} ;
@@ -332,7 +333,7 @@ const getTableZoneConfig: TableDetailsQuery<TableZoneConfigRow> = {
332
333
} ;
333
334
334
335
// Table heuristics details.
335
- type TableHeuristicDetailsRow = {
336
+ export type TableHeuristicDetailsRow = {
336
337
stats_last_created_at : moment . Moment ;
337
338
} ;
338
339
@@ -371,7 +372,7 @@ type TableDetailsStats = {
371
372
} ;
372
373
373
374
// Table span stats.
374
- type TableSpanStatsRow = {
375
+ export type TableSpanStatsRow = {
375
376
approximate_disk_bytes : number ;
376
377
live_bytes : number ;
377
378
total_bytes : number ;
@@ -418,7 +419,7 @@ const getTableSpanStats: TableDetailsQuery<TableSpanStatsRow> = {
418
419
} ,
419
420
} ;
420
421
421
- type TableReplicaData = SqlApiQueryResponse < {
422
+ export type TableReplicaData = SqlApiQueryResponse < {
422
423
nodeIDs : number [ ] ;
423
424
nodeCount : number ;
424
425
replicaCount : number ;
@@ -471,7 +472,7 @@ const getTableReplicas: TableDetailsQuery<TableReplicasRow> = {
471
472
} ;
472
473
473
474
// Table index usage stats.
474
- type TableIndexUsageStats = {
475
+ export type TableIndexUsageStats = {
475
476
has_index_recommendations : boolean ;
476
477
} ;
477
478
@@ -569,6 +570,7 @@ export function createTableDetailsReq(
569
570
max_result_size : LARGE_RESULT_SIZE ,
570
571
timeout : LONG_TIMEOUT ,
571
572
database : dbName ,
573
+ separate_txns : true ,
572
574
} ;
573
575
}
574
576
@@ -605,19 +607,24 @@ async function fetchTableDetails(
605
607
csIndexUnusedDuration ,
606
608
) ;
607
609
const resp = await executeInternalSql < TableDetailsRow > ( req ) ;
610
+ const errs : Error [ ] = [ ] ;
608
611
resp . execution . txn_results . forEach ( txn_result => {
609
- if ( txn_result . rows ) {
610
- const query : TableDetailsQuery < TableDetailsRow > =
611
- tableDetailQueries [ txn_result . statement - 1 ] ;
612
- query . addToTableDetail ( txn_result , detailsResponse ) ;
612
+ if ( txn_result . error ) {
613
+ errs . push ( txn_result . error ) ;
613
614
}
615
+ const query : TableDetailsQuery < TableDetailsRow > =
616
+ tableDetailQueries [ txn_result . statement - 1 ] ;
617
+ query . addToTableDetail ( txn_result , detailsResponse ) ;
614
618
} ) ;
615
619
if ( resp . error ) {
616
620
detailsResponse . error = resp . error ;
617
621
}
622
+
623
+ detailsResponse . error = combineQueryErrors ( errs , detailsResponse . error ) ;
618
624
return formatApiResult < TableDetailsResponse > (
619
625
detailsResponse ,
620
626
detailsResponse . error ,
621
- "retrieving table details information" ,
627
+ `retrieving table details information for table '${ tableName } '` ,
628
+ false ,
622
629
) ;
623
630
}
0 commit comments