Open ycybfhb opened 1 month ago
Hi @ycybfhb, please add branch-* labels to identify which branch(es) this C-bug affects.
:owl: Hoot! I am a Blathers, a bot for CockroachDB. My owner is dev-inf.
Hello, I am Blathers. I am here to help you get the issue triaged.
Hoot - a bug! Though bugs are the bane of my existence, rest assured the wretched thing will get the best of care here.
I have CC'd a few people who may be able to assist you:
If we have not gotten back to your issue within a few business days, you can try the following:
:owl: Hoot! I am a Blathers, a bot for CockroachDB. My owner is dev-inf.
Initial reduction:
CREATE TABLE t_y (
c_b3l3rlrs INT4, c_ca STRING, c_t9r1kl9y6m INT4, c_jqnxje42v INT4, c_jt8ydrx7 INT4, c_m50a STRING, c_l1 STRING
);
INSERT
INTO
t_y (c_b3l3rlrs, c_ca, c_t9r1kl9y6m, c_jqnxje42v, c_jt8ydrx7, c_m50a, c_l1)
VALUES
(0, NULL, 0, 0, 1768704522, '', NULL);
CREATE TABLE t_bnqfnwa (
c_rqlsk_aj INT4, c_veh INT4, c_ibhkt4ifda BOOL, c_ts7n INT4, c_uuw5d832 STRING, c_d38l4v64 STRING
);
INSERT
INTO
t_bnqfnwa (c_rqlsk_aj, c_veh, c_ibhkt4ifda, c_ts7n, c_uuw5d832, c_d38l4v64)
VALUES
(0, 0, true, -129, '', '');
SELECT
subq_1.c7, subq_1.c1 >= (SELECT ref_20.c_b3l3rlrs FROM t_y AS ref_20 WHERE ref_20.c_m50a != subq_1.c3), subq_1.c5
FROM
(
SELECT
generate_series(ref_9.c_rqlsk_aj, ref_10.c_jt8ydrx7) AS c0,
ref_9.c_veh AS c1,
ref_9.c_d38l4v64 AS c3,
ref_9.c_uuw5d832 AS c5,
ref_10.c_jqnxje42v AS c7
FROM
t_bnqfnwa AS ref_9
RIGHT JOIN t_y AS ref_10 ON
ref_10.c_t9r1kl9y6m > ref_9.c_ts7n
OR ref_9.c_ibhkt4ifda NOT IN (ref_10.c_m50a NOT IN (ref_10.c_l1, ref_10.c_ca),)
LIMIT
2
)
AS subq_1
WHERE
subq_1.c0 NOT IN (SELECT NULL FROM t_bnqfnwa);
Looks like this dates back to v23.1.
This is a stubborn one - I couldn't reduce it much more:
CREATE TABLE abcdef (
a STRING,
b INT4,
c INT4,
d INT4,
e STRING,
f STRING
);
INSERT INTO abcdef (a, b, c, d, e, f) VALUES ('a', 0, 0, 0, 'e', 'f');
CREATE TABLE ghijkl (
g INT4,
h INT4,
i BOOL,
j INT4,
k STRING,
l STRING
);
INSERT INTO ghijkl (g, h, i, j, k, l) VALUES (0, 0, true, -1, 'k', 'l');
SELECT c7, c1 >= (SELECT c FROM abcdef WHERE e != c3), c5
FROM (
SELECT
generate_series(g, d) AS c0,
h AS c1,
l AS c3,
k AS c5,
c AS c7
FROM ghijkl
LEFT JOIN abcdef ON b > j OR i NOT IN (e NOT IN (f, a),)
LIMIT 2
)
WHERE c0 NOT IN (SELECT NULL FROM ghijkl);
Describe the problem
panic: interface conversion: coldata.Column is coldata.Bools, not coldata.Int64s in
coldata.(*memColumn).Int64
And server closed the connection unexpectedlyTo Reproduce
SQL to init database
[init.sql.txt](https://github.com/user-attachments/files/16941629/init.sql.txt)SQL that causes error
```sql select case when (cast((cast(cast(null as "geography") as "geography") <= cast(cast(null as "geography") as "geography")) as bool)) then case when (subq_0.c7 is not NULL) then pg_catalog.has_type_privilege( cast(cast(null as text) as text), cast(subq_0.c3 as text)) else ((cast((cast(cast(null as "geography") as "geography") IS DISTINCT FROM cast(cast(null as "geography") as "geography")) as bool))) or ((ref_1.c_qokd > ( select ref_1.c_jt8ydrx7 as c0 from t_rca as ref_2 where false union all ( select 2105534522 as c0 from t_y as ref_3 where true ) limit 1))) end else ((cast((cast(cast(null as tsquery) as tsquery) = cast(cast(null as tsquery) as tsquery)) as bool))) and (false) end as c0, case when ((ref_1.c_ca >= ( select ref_4.c_ca as c0 from t_y as ref_4 where (ref_1.c_ywed between ref_1.c_ywed and ref_4.c_ywed) union ( select (select c1 from t_rca order by c1 limit 1 offset 1) as c0 from t_rca as ref_5 where (cast((cast(null as record) <= cast(null as record)) as bool)) ) limit 1))) or (((cast((cast(null as oid) <= cast(null as oid)) as bool))) or ((-642434416 in ( select ref_6.c_i9hbg1 as c0 from t_ow0g_ as ref_6 where false)))) then subq_0.c4 else ref_1.c_t9r1kl9y6m end as c1, subq_0.c1 as c2, cast((abs(coalesce( ref_1.c_ywed, ref_1.c_sc9oe0qu )%4294967296)-2147483648) as int4) as c3, ref_1.c_jqnxje42v as c4, subq_0.c7 as c5, (select c4 from t_rca order by c4 limit 1 offset 1) as c6, case when (cast((cast(null as unknown) IS NOT DISTINCT FROM cast(null as unknown)) as bool)) then cast((cast(cast(null as "timestamptz") as "timestamptz") < cast(cast((cast(cast(null as "timetz") as "timetz") + cast(cast(null as date) as date)) as "timestamptz") as "timestamptz")) as bool) else (case when (subq_0.c2 not in ( select ref_7.c_et6rlu as c0 from t_y as ref_7 where true)) then ref_1.c_hdnu9xzja else subq_0.c5 end not in ( select ref_8.c_vj_t3epb as c0 from t_ow0g_ as ref_8 where false)) end as c7, cast((ref_1.c_sc9oe0qu != case when (cast((cast(cast(null as "timestamptz") as "timestamptz") > cast(cast(null as "timestamptz") as "timestamptz")) as bool)) then cast(ref_1.c_sc9oe0qu as int8) else case when false then cast(ref_1.c_sc9oe0qu as int8) else cast(ref_1.c_ywed as int8) end end ) as bool) as c8, subq_0.c0 as c9 from ((select ref_0.c_ca as c0, ref_0.c_g9f9abs2 as c1, ref_0.c_p6f922bie as c2, ref_0.c_m50a as c3, -738062639 as c4, ref_0.c_et6rlu as c5, ref_0.c_t as c6, ref_0.c_as7 as c7 from t_y as ref_0 where true) as subq_0 right outer join t_y as ref_1 on ((ref_1.c_ca like 'qb%o8ewp'))) where (ref_1.c_hdnu9xzja is not NULL) union all ( select (cast((cast(cast(null as inet) as inet) IS NOT DISTINCT FROM cast(cast(null as inet) as inet)) as bool)) as c0, subq_1.c7 as c1, cast(null as float4) as c2, subq_1.c7 as c3, case when (cast((cast(cast(null as "numeric") as "numeric") < cast(cast(null as "numeric") as "numeric")) as bool)) then subq_1.c7 else subq_1.c7 end as c4, 3.14 as c5, (select c3 from t_rca order by c3 limit 1 offset 4) as c6, (cast((cast((cast((subq_1.c5 NOT LIKE subq_1.c5) as bool)) as bool) > cast((EXISTS ( select subq_1.c3 as c0, ref_18.c6 as c1, ref_18.c5 as c2, ref_18.c4 as c3, ref_17.c8 as c4, ref_17.c8 as c5, subq_1.c5 as c6, ref_18.c1 as c7, ref_18.c10 as c8, ref_18.c0 as c9, ref_18.c5 as c10, ref_17.c4 as c11 from (t_rca as ref_17 left outer join t_rca as ref_18 on ((EXISTS ( select ref_19.c_gdyk as c0, ref_18.c6 as c1, ref_19.c_gdyk as c2, ref_19.c_ie as c3, ref_19.c_gdyk as c4, 761488069 as c5, ref_19.c_gdyk as c6, ref_19.c__sm6t8__m as c7, -1784723071 as c8 from t_ow0g_ as ref_19 where ((false) or ((cast((cast(cast(null as "timestamp") as "timestamp") = cast(cast(null as "timestamp") as "timestamp")) as bool)))) and (true))))) where true)) as bool)) as bool)) as c7, (subq_1.c1 >= ( select ref_20.c_b3l3rlrs as c0 from t_y as ref_20 where (cast((cast(ref_20.c_m50a as text) != cast(subq_1.c3 as text)) as bool)) limit 1)) as c8, subq_1.c5 as c9 from (select pg_catalog.generate_series( cast(ref_9.c_rqlsk_aj as int8), cast(ref_10.c_jt8ydrx7 as int8)) as c0, ref_9.c_veh as c1, pg_catalog.st_force3d( cast(cast(null as "geometry") as "geometry")) as c2, ref_9.c_d38l4v64 as c3, ref_10.c_rbf9wr as c4, ref_9.c_uuw5d832 as c5, ref_9.c_hl3s8ojsmc as c6, ref_10.c_jqnxje42v as c7 from (t_bnqfnwa as ref_9 right outer join t_y as ref_10 on (((cast((cast(ref_10.c_t9r1kl9y6m as int8) > cast(ref_9.c_ts7n as int8)) as bool))) or ((ref_9.c_ibhkt4ifda not in ( false, (cast((cast(cast(null as inet) as inet) < cast(cast(null as inet) as inet)) as bool)), (ref_10.c_m50a not in ( ref_10.c_l1, ref_9.c_d38l4v64, ref_10.c_ca, ref_10.c_m50a, ref_9.c_d38l4v64)), true, (ref_10.c_l1 not like '__hd')))))) where (ref_9.c_ts7n in ( select ref_11.c_t9r1kl9y6m as c0 from t_y as ref_11 where true union ( select ref_12.c8 as c0 from t_rca as ref_12 where ((cast((cast(ref_12.c9 as text) NOT ILIKE cast(ref_12.c9 as text)) as bool))) or ((cast((cast(cast(null as "numeric") as "numeric") IS DISTINCT FROM cast(20.8 as float8)) as bool))) ))) limit 78) as subq_1 where (case when ((cast((cast(null as "timestamp") > cast(null as date)) as bool))) or ((true) or (true)) then subq_1.c0 else subq_1.c0 end not in ( select pg_catalog.strpos( cast(cast(null as bytea) as bytea), cast(cast(null as bytea) as bytea)) as c0 from (t_bnqfnwa as ref_13 full outer join (t_ow0g_ as ref_14 inner join t_bnqfnwa as ref_15 on (false)) on ((ref_14.c_gdyk not like 'm%2'))) where ((ref_14.c_i9hbg1 between ref_13.c_veh and ref_15.c_ts7n)) or ((ref_14.c_deesne_t like 't9z_2amq')) union ( select case when (ref_16.c10 in ( ref_16.c10, ref_16.c10, ref_16.c10, ref_16.c10, ref_16.c10)) then ref_16.c3 else ref_16.c4 end as c0 from t_rca as ref_16 where (cast((cast(cast(null as jsonb) as jsonb) @> cast(cast(null as jsonb) as jsonb)) as bool)) ))) ); ```Expected behavior
Expect no crashes
Additional data / screenshots
Here is the crash stack trace:
Environment:
Linux a002 6.5.0-18-generic #18~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Feb 7 11:40:03 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
docker compose file:
about us
We are the BASS team from the School of Cyber Science and Technology at Beihang University. Our main focus is on system software security, operating systems, and program analysis research, as well as the development of automated program testing frameworks for detecting software defects. Using our self-developed database vulnerability testing tool, we have identified the above-mentioned possible vulnerabilities that may lead to database crashes.
Jira issue: CRDB-42036