Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-06-18 16:31:30 +03:00
parent 9f4ed539ff
commit 44476e03bc
3 changed files with 60 additions and 45 deletions

View File

@@ -811,43 +811,27 @@ filtered AS (
AND dim1 > 0
AND price > 0
),
latest AS (
SELECT DISTINCT ON (s.sdprcgrp_id, s.crn, s.dim1, COALESCE(s.dim3, 0))
s.sdprcgrp_id,
s.crn,
s.dim1,
s.dim3,
s.prc
FROM sdprc s
WHERE s.mmitem_id = $2
AND (s.sdprcgrp_id, s.crn, s.dim1, COALESCE(s.dim3, 0)) IN (
SELECT sdprcgrp_id, currency, dim1, COALESCE(dim3, 0) FROM filtered
)
ORDER BY s.sdprcgrp_id, s.crn, s.dim1, COALESCE(s.dim3, 0), s.zlins_dttm DESC, s.id DESC
),
to_insert AS (
grouped AS (
-- Ensure one row per business key to avoid unique violations under strict constraints (e.g. uq_sdprc_3).
SELECT
$2::bigint AS mmitem_id,
f.sdprcgrp_id,
f.currency AS crn,
f.dim1,
f.dim3,
f.price AS prc
FROM filtered f
LEFT JOIN latest l
ON l.sdprcgrp_id = f.sdprcgrp_id
AND l.crn = f.currency
AND l.dim1 = f.dim1
AND ((l.dim3 IS NULL AND f.dim3 IS NULL) OR l.dim3 = f.dim3)
WHERE l.prc IS NULL OR l.prc IS DISTINCT FROM f.price
sdprcgrp_id,
currency AS crn,
dim1,
dim3,
MAX(price) AS prc
FROM filtered
GROUP BY sdprcgrp_id, currency, dim1, dim3
),
ins AS (
upserted AS (
INSERT INTO sdprc (mmitem_id, sdprcgrp_id, crn, dim1, dim3, prc, zlins_dttm)
SELECT mmitem_id, sdprcgrp_id, crn, dim1, dim3, prc, now()
FROM to_insert
SELECT $2::bigint, g.sdprcgrp_id, g.crn, g.dim1, g.dim3, g.prc, now()
FROM grouped g
ON CONFLICT ON CONSTRAINT uq_sdprc_3
DO UPDATE SET prc = EXCLUDED.prc, zlins_dttm = EXCLUDED.zlins_dttm
WHERE sdprc.prc IS DISTINCT FROM EXCLUDED.prc
RETURNING 1
)
SELECT COUNT(*)::int FROM ins;
SELECT COUNT(*)::int FROM upserted;
`
var inserted int
if err := pgTx.QueryRowContext(ctx, q, raw, mmItemID).Scan(&inserted); err != nil {