citusdata/citus

sqlancer test fail with COLLATE used in string concatenation

Closed

#8,469 opened on Feb 9, 2026

 (1 comment) (0 reactions) (0 assignees)C (625 forks)batch import
buggood first issuesqlancer

Repository metrics

Stars
 (9,388 stars)
PR merge metrics
 (Avg merge 41d 2h) (16 merged PRs in 30d)

Description

ERROR: attribute 1/2 of type record has wrong type --  Detail: Table has type text, but query expects character varying.

Reproducing the error at database10

  
CREATE TEMP TABLE t0(
c0 money ,
c1 inet ,
c2 DECIMAL  UNIQUE NOT NULL PRIMARY KEY,
c3 inet ,
EXCLUDE (c0 interval_minmax_ops DESC NULLS LAST WITH <>)
WHERE ((CAST(t0.c2 AS VARCHAR) SIMILAR TO (((('8' COLLATE "en_US.utf8"))||(t0.c0)) COLLATE "en_US.utf8"))), UNIQUE(c2, c0, c3, c1)) PARTITION BY LIST((0.6478838)timetz_minmax_multi_ops) ON COMMIT PRESERVE ROWS ;

...
CREATE TEMP TABLE IF NOT EXISTS t1(LIKE t0);

CREATE UNLOGGED TABLE t2(c0 boolean ) INHERITS(t1) USING heap;
CREATE UNLOGGED TABLE IF NOT EXISTS t2(LIKE t1);

SELECT create_distributed_table('t2', 'c0');
SELECT create_distributed_table('t3', 'c0');

(Please see the exact steps in attached database10.log file). database10.log

  
-- reproduces:

SELECT SUM(agg0)
FROM (
    SELECT ALL SUM(0.3888104409795754) as agg0
    FROM ONLY t3
    GROUP BY
        (((('fooText')||(t3.c1)))::VARCHAR COLLATE "C.utf8")
) as asdf;

ERROR:  attribute 2 of type record has wrong type
DETAIL:  Table has type text, but query expects character varying.
test=#



-- does not reproduce:

SELECT SUM(agg0)
FROM (
    SELECT ALL SUM(0.3888104409795754) as agg0
    FROM ONLY t3
    GROUP BY
        ((('fooText')||(t3.c1)))::VARCHAR
) as asdf;

        sum
--------------------
 3.8881044097957540
(1 row)

It looks like when COLLATE is used, conversion from text to VARCHAR cannot happen smoothly.

Note: This does not cause a problem in vanilla postgres.

Contributor guide