in api/v1/src/datasets/dataManager.js [642:689]
FROM UNNEST(cp.datasets) d
CROSS JOIN UNNEST(d.tables) t
WHERE datasetId = @datasetId AND t.tableId = @tableId)
),
datasets as (
SELECT cp.rowId, d.datasetId, ARRAY_AGG(STRUCT(t.tableId)) as tables
FROM \`datashare.currentPolicy\` cp
CROSS JOIN cp.datasets d
JOIN datasetRows dr on cp.rowId = dr.rowId
CROSS JOIN d.tables t
WHERE t.tableId != @tableId
GROUP BY cp.rowId, d.datasetId
),
availableDatasets as (
SELECT schema_name as datasetId
FROM INFORMATION_SCHEMA.SCHEMATA
),
policyDatasets as (
SELECT d.rowId, ARRAY_AGG(STRUCT(d.datasetId, d.tables)) as datasets
FROM datasets d
JOIN availableDatasets a on a.datasetId = d.datasetId
GROUP BY d.rowId
)
select
GENERATE_UUID() as rowId,
policyId,
name,
description,
isTableBased,
pd.datasets,
rowAccessTags,
@createdBy,
CURRENT_TIMESTAMP() as createdAt,
isDeleted,
cp.bigQueryEnabled,
cp.pubsubEnabled,
cp.storageEnabled,
cp.buckets,
cp.topics
FROM datasetRows dr
JOIN \`datashare.currentPolicy\` cp on dr.rowId = cp.rowId
LEFT JOIN policyDatasets pd on cp.rowId = pd.rowId;`;
// console.log(`Executing policy update: ${policyStatement}`);
const policyOptions = {
query: policyStatement,
params: { createdBy: data.createdBy, datasetId: datasetId, tableId: currentView.data.name }
};