From 1cfdd4a719332143bc54a8c8d91f4fdfffec0da0 Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Mon, 2 Nov 2026 05:38:13 +0000 Subject: [PATCH] fix(duckshop): declare the columns staging models output and downstream models read Sixteen staging models output source_seq and source_loaded_at, and some a payload column, that their MODEL headers did not declare, although downstream models read them. Declaring them makes each declared schema cover what its readers use, so tables created from the declarations support every downstream model. Compiled SQL is unchanged. --- .../models/staging/catalogue/stg_product_variants.sql | 3 +++ .../project/models/staging/catalogue/stg_products.sql | 2 ++ .../project/models/staging/catalogue/stg_suppliers.sql | 2 ++ .../duckshop/project/models/staging/growth/stg_campaigns.sql | 2 ++ .../project/models/staging/inventory/stg_purchase_orders.sql | 3 +++ .../project/models/staging/inventory/stg_warehouses.sql | 2 ++ .../project/models/staging/partners/stg_partner_listings.sql | 2 ++ .../duckshop/project/models/staging/storefront/stg_carts.sql | 3 +++ .../models/staging/storefront/stg_customer_addresses.sql | 5 +++++ .../project/models/staging/storefront/stg_customers.sql | 3 +++ .../models/staging/storefront/stg_loyalty_accounts.sql | 3 +++ .../project/models/staging/storefront/stg_order_lines.sql | 3 +++ .../project/models/staging/storefront/stg_orders.sql | 4 ++++ .../project/models/staging/storefront/stg_promotions.sql | 3 +++ .../project/models/staging/storefront/stg_wishlists.sql | 3 +++ .../duckshop/project/models/staging/support/stg_tickets.sql | 2 ++ 16 files changed, 45 insertions(+) diff --git a/benchmarks/duckshop/project/models/staging/catalogue/stg_product_variants.sql b/benchmarks/duckshop/project/models/staging/catalogue/stg_product_variants.sql index 2e40af4ed4..458ec459a8 100644 --- a/benchmarks/duckshop/project/models/staging/catalogue/stg_product_variants.sql +++ b/benchmarks/duckshop/project/models/staging/catalogue/stg_product_variants.sql @@ -11,6 +11,9 @@ MODEL ( is_fragile (type BOOLEAN), pack_size (type INT), attributes (type OBJECT), + barcodes (type ARRAY), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/catalogue/stg_products.sql b/benchmarks/duckshop/project/models/staging/catalogue/stg_products.sql index 586565a72a..67aa8dec10 100644 --- a/benchmarks/duckshop/project/models/staging/catalogue/stg_products.sql +++ b/benchmarks/duckshop/project/models/staging/catalogue/stg_products.sql @@ -15,6 +15,8 @@ MODEL ( is_active (type BOOLEAN), spec_key_count (type INT), specs (type OBJECT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/catalogue/stg_suppliers.sql b/benchmarks/duckshop/project/models/staging/catalogue/stg_suppliers.sql index 65d9a8afd1..c762b7c843 100644 --- a/benchmarks/duckshop/project/models/staging/catalogue/stg_suppliers.sql +++ b/benchmarks/duckshop/project/models/staging/catalogue/stg_suppliers.sql @@ -9,6 +9,8 @@ MODEL ( primary_contact_email (type VARCHAR), contact_count (type INT), payment_terms (type OBJECT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/growth/stg_campaigns.sql b/benchmarks/duckshop/project/models/staging/growth/stg_campaigns.sql index 206996c49a..faa083bb4f 100644 --- a/benchmarks/duckshop/project/models/staging/growth/stg_campaigns.sql +++ b/benchmarks/duckshop/project/models/staging/growth/stg_campaigns.sql @@ -12,6 +12,8 @@ MODEL ( target_regions (type ARRAY), target_age_min (type INT), target_age_max (type INT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/inventory/stg_purchase_orders.sql b/benchmarks/duckshop/project/models/staging/inventory/stg_purchase_orders.sql index 08167a4a8d..e3668a3ae3 100644 --- a/benchmarks/duckshop/project/models/staging/inventory/stg_purchase_orders.sql +++ b/benchmarks/duckshop/project/models/staging/inventory/stg_purchase_orders.sql @@ -10,6 +10,9 @@ MODEL ( expected_at (type TIMESTAMP_TZ), received_at (type TIMESTAMP_TZ), line_count (type INT), + lines (type ARRAY), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/inventory/stg_warehouses.sql b/benchmarks/duckshop/project/models/staging/inventory/stg_warehouses.sql index 0d30725968..f51025a6a6 100644 --- a/benchmarks/duckshop/project/models/staging/inventory/stg_warehouses.sql +++ b/benchmarks/duckshop/project/models/staging/inventory/stg_warehouses.sql @@ -11,6 +11,8 @@ MODEL ( supports_same_day (type BOOLEAN), supports_cold_chain (type BOOLEAN), max_parcel_kg (type NUMBER(6, 2)), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/partners/stg_partner_listings.sql b/benchmarks/duckshop/project/models/staging/partners/stg_partner_listings.sql index 48b28b93e9..8ad727628e 100644 --- a/benchmarks/duckshop/project/models/staging/partners/stg_partner_listings.sql +++ b/benchmarks/duckshop/project/models/staging/partners/stg_partner_listings.sql @@ -9,6 +9,8 @@ MODEL ( commission_pct (type NUMBER(5, 2)), fulfilled_by_partner (type BOOLEAN), terms (type OBJECT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/storefront/stg_carts.sql b/benchmarks/duckshop/project/models/staging/storefront/stg_carts.sql index 8f865255df..c13c7be6b6 100644 --- a/benchmarks/duckshop/project/models/staging/storefront/stg_carts.sql +++ b/benchmarks/duckshop/project/models/staging/storefront/stg_carts.sql @@ -10,6 +10,9 @@ MODEL ( updated_at (type TIMESTAMP_TZ), line_count (type INT), coupon_code (type VARCHAR), + contents (type OBJECT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/storefront/stg_customer_addresses.sql b/benchmarks/duckshop/project/models/staging/storefront/stg_customer_addresses.sql index d79ea68d34..956b1edb27 100644 --- a/benchmarks/duckshop/project/models/staging/storefront/stg_customer_addresses.sql +++ b/benchmarks/duckshop/project/models/staging/storefront/stg_customer_addresses.sql @@ -10,6 +10,11 @@ MODEL ( latitude (type NUMBER(9, 6)), longitude (type NUMBER(9, 6)), geo (type OBJECT), + line1 (type VARCHAR), + line2 (type VARCHAR), + city (type VARCHAR), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/storefront/stg_customers.sql b/benchmarks/duckshop/project/models/staging/storefront/stg_customers.sql index d89241c307..16d0b5e595 100644 --- a/benchmarks/duckshop/project/models/staging/storefront/stg_customers.sql +++ b/benchmarks/duckshop/project/models/staging/storefront/stg_customers.sql @@ -15,6 +15,9 @@ MODEL ( marketing_opt_in (type BOOLEAN), consent_types (type ARRAY), birth_year (type INT), + preferences (type OBJECT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/storefront/stg_loyalty_accounts.sql b/benchmarks/duckshop/project/models/staging/storefront/stg_loyalty_accounts.sql index 564c897af4..b9108a2974 100644 --- a/benchmarks/duckshop/project/models/staging/storefront/stg_loyalty_accounts.sql +++ b/benchmarks/duckshop/project/models/staging/storefront/stg_loyalty_accounts.sql @@ -8,6 +8,9 @@ MODEL ( enrolled_at (type TIMESTAMP_TZ), tier_change_count (type INT), previous_tier_code (type VARCHAR), + tier_history (type ARRAY), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/storefront/stg_order_lines.sql b/benchmarks/duckshop/project/models/staging/storefront/stg_order_lines.sql index 22f5188405..d9aba5022c 100644 --- a/benchmarks/duckshop/project/models/staging/storefront/stg_order_lines.sql +++ b/benchmarks/duckshop/project/models/staging/storefront/stg_order_lines.sql @@ -10,6 +10,9 @@ MODEL ( gross_amount_minor (type INT), tax_amount_minor (type INT), discount_count (type INT), + discounts (type ARRAY), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/storefront/stg_orders.sql b/benchmarks/duckshop/project/models/staging/storefront/stg_orders.sql index b2354b1cc6..6e33239dbc 100644 --- a/benchmarks/duckshop/project/models/staging/storefront/stg_orders.sql +++ b/benchmarks/duckshop/project/models/staging/storefront/stg_orders.sql @@ -14,6 +14,10 @@ MODEL ( utm_campaign (type VARCHAR), device_type (type VARCHAR), item_count_hint (type INT), + shipping_address_id (type VARCHAR), + attributes (type OBJECT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/storefront/stg_promotions.sql b/benchmarks/duckshop/project/models/staging/storefront/stg_promotions.sql index 04f8a72a3f..0cac4afc47 100644 --- a/benchmarks/duckshop/project/models/staging/storefront/stg_promotions.sql +++ b/benchmarks/duckshop/project/models/staging/storefront/stg_promotions.sql @@ -10,6 +10,9 @@ MODEL ( eligible_regions (type ARRAY), tier_count (type INT), max_discount_pct (type NUMBER(5, 2)), + rules (type OBJECT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/storefront/stg_wishlists.sql b/benchmarks/duckshop/project/models/staging/storefront/stg_wishlists.sql index 73e0b3f005..4ccbe317eb 100644 --- a/benchmarks/duckshop/project/models/staging/storefront/stg_wishlists.sql +++ b/benchmarks/duckshop/project/models/staging/storefront/stg_wishlists.sql @@ -6,6 +6,9 @@ MODEL ( created_at (type TIMESTAMP_TZ), is_public (type BOOLEAN), item_count (type INT), + items (type ARRAY), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), ); diff --git a/benchmarks/duckshop/project/models/staging/support/stg_tickets.sql b/benchmarks/duckshop/project/models/staging/support/stg_tickets.sql index 530d9e5c49..ebaa119e64 100644 --- a/benchmarks/duckshop/project/models/staging/support/stg_tickets.sql +++ b/benchmarks/duckshop/project/models/staging/support/stg_tickets.sql @@ -17,6 +17,8 @@ MODEL ( tag_list (type ARRAY), is_vip (type BOOLEAN), custom_fields (type OBJECT), + source_seq (type NUMBER(38, 0), nullable false), + source_loaded_at (type TIMESTAMP_NTZ, nullable false), ), );