← back to Designer Wallcoverings
cadence: harden sample-only desc query against newline/tab corruption (SQL regexp_replace)
e38bffd8e827d7571a3b0324a60227a41e2b61fb · 2026-06-23 17:19:55 -0700 · Steve
Files touched
M shopify/scripts/cadence/cadence-import.js
Diff
commit e38bffd8e827d7571a3b0324a60227a41e2b61fb
Author: Steve <steve@designerwallcoverings.com>
Date: Tue Jun 23 17:19:55 2026 -0700
cadence: harden sample-only desc query against newline/tab corruption (SQL regexp_replace)
---
shopify/scripts/cadence/cadence-import.js | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/shopify/scripts/cadence/cadence-import.js b/shopify/scripts/cadence/cadence-import.js
index 6837c23c..b6cbbd17 100644
--- a/shopify/scripts/cadence/cadence-import.js
+++ b/shopify/scripts/cadence/cadence-import.js
@@ -272,7 +272,11 @@ function selectSkus(cfg, limit) {
// sampleOnly (Quadrille-house, no cost): select net-new rows scoped by brand, NO cost column,
// NO cost>0 filter. description pulled from ai_description / description for the activation gate.
if (cfg.sampleOnly) {
- const descCol = (cfg.colOverrides && cfg.colOverrides.description) || 'COALESCE(ai_description, description)';
+ const rawDescCol = (cfg.colOverrides && cfg.colOverrides.description) || 'COALESCE(ai_description, description)';
+ // psql output is TAB-delimited rows split on \n — a description with an embedded newline/tab/CR
+ // (free-text, enrichment ongoing) would corrupt the row parser. Collapse those control chars to a
+ // space AT THE SQL LEVEL so the tab/newline split stays sound regardless of description content.
+ const descCol = `regexp_replace((${rawDescCol})::text, '[\\t\\n\\r]+', ' ', 'g')`;
const sql = `SELECT ${cols}, (${descCol})::text AS vendor_desc${allImgSel}
FROM ${cfg.table}
WHERE coalesce(shopify_product_id::text,'')=''${brandFilterClause(cfg)}${dedupSkipClause(cfg.table)}
← 9ec5d21e cadence: gate Quadrille-house sample-only drip OFF by defaul
·
back to Designer Wallcoverings
·
auto-save: 2026-06-23T17:23:17 (5 files) — shopify/scripts/c d90a2d43 →