fix: scope shadow inputs to authoritative warehouse

This commit is contained in:
zgw
2026-09-03 15:40:12 +08:00
parent d77fac1d56
commit 746a6b5647
5 changed files with 208 additions and 45 deletions

View File

@@ -218,15 +218,30 @@ class ShadowSqlServerMigrationScriptTest {
assertThat(refresh).as(script).contains(
"select @warehouse_id, isnull(task_no, ''), isnull(tray_code, ''), request_id, raw_warehouse_id",
"select @warehouse_id, outbound.stockout_detail_id, outbound.warehouse_id",
"join dbo.in_stockin stockin with (nolock) on stockin.stockin_id = inbound.stockin_id",
"join dbo.out_stockout stockout with (nolock) on stockout.stockout_id = outbound.stockout_id",
"left join dbo.bas_warehouse warehouse with (nolock)",
"on warehouse.warehouse_id = @warehouse_id",
"nullif(ltrim(rtrim(warehouse.project_no)), '')",
"try_convert(decimal(38,0), ltrim(rtrim(stockin.warehouse_id))) = @numeric_warehouse_id",
"try_convert(decimal(38,0), ltrim(rtrim(stockout.warehouse_id))) = @numeric_warehouse_id",
"job.finish_time is null or ltrim(rtrim(job.finish_time)) = ''",
"isnull(outbound.quantity, 0) > isnull(outbound.allot_quantity, 0)");
assertThat(refresh).as(script).doesNotContain(
"select outbound.warehouse_id, outbound.stockout_detail_id, outbound.warehouse_id, null");
"select outbound.warehouse_id, outbound.stockout_detail_id, outbound.warehouse_id, null",
"on warehouse.warehouse_id = outbound.warehouse_id");
}
}
@Test
void decisionReasonStoresBoundedUnicodeDiagnosticsAcrossCleanInstallAndUpgrade() throws IOException {
String install = normalize(resource("db/sqlserver/install-shadow.sql"));
String upgrade = normalize(resource("db/sqlserver/upgrade-shadow-v2-to-v3.sql"));
assertThat(install).contains("reason nvarchar(4000) null");
assertThat(upgrade).contains("alter table alg.decision_log alter column reason nvarchar(4000) null");
}
@Test
void plannerViewsContainOnlyGenerationQualifiedAlgSnapshots() throws IOException {
String install = normalize(resource("db/sqlserver/install-shadow.sql"));