the self-concatenating table is entertaining but a bad idea; will remove eventually
Opened this issue · 0 comments
PostgreSqlStan commented
Lines 18 to 42 in 95066ea
CREATE FUNCTION tf_fix_multiline_json() | |
RETURNS TRIGGER AS $TF$ | |
-- ⚠️ probably bad idea, but had to try it | |
-- will likely remove (soon) and perform in procedure instead | |
-- conditionally remove linefeeds from multiline json | |
DECLARE | |
is_json_rows BOOL; | |
BEGIN | |
IF ((SELECT COUNT(*) FROM i_text LIMIT 2) > 1) THEN | |
WITH a AS (SELECT distinct(left(t,1) || right(t,1)) AS da | |
FROM i_text LIMIT 5) | |
SELECT (SELECT count(*) FROM a)=1 AND (SELECT TRUE FROM a WHERE da='{}') | |
INTO is_json_rows; | |
-- don't concatenate to single row if it's rows of valid JSON | |
IF NOT is_json_rows THEN | |
CREATE TEMPORARY TABLE fix(t TEXT); | |
INSERT INTO fix SELECT string_agg(t, ' ') FROM i_text; | |
DELETE FROM i_text; | |
INSERT INTO i_text SELECT * FROM fix; | |
DROP TABLE fix; | |
END IF; | |
END IF; | |
RETURN NEW; | |
END; | |
$TF$ LANGUAGE plpgsql; |