zettadb / kunlun

KunlunBase is a distributed relational database management system(RDBMS) with complete NewSQL capabilities and robust transaction ACID guarantees and is compatible with standard SQL. Applications which used PostgreSQL or MySQL can work with KunlunBase as-is without any code change or rebuild because KunlunBase supports both PostgreSQL and MySQL connection protocols and DML SQL grammars. MySQL DBAs can quickly work on a KunlunBase cluster because we use MySQL as storage nodes of KunlunBase. KunlunBase can elastically scale out as needed, and guarantees transaction ACID under error conditions, and KunlunBase fully passes TPC-C, TPC-H and TPC-DS test suites, so it not only support OLTP workloads but also OLAP workloads. Application developers can use KunlunBase to build IT systems that handles terabytes of data, without any effort on their part to implement data sharding, distributed transaction processing, distributed query processing, crash safety, high availability, strong consistency, horizontal scalability. All these powerful features are provided by KunlunBase. KunlunBase supports powerful and user friendly cluster management, monitor and provision features, can be readily used as DBaaS.
http://www.kunlunbase.com
Apache License 2.0
143 stars 20 forks source link

row type mismatch between RemoteJoin and GroupAggregate nodes #521

Open jd-zhang opened 3 years ago

jd-zhang commented 3 years ago

Issue migrated from trac ticket # 196

component: computing nodes | priority: major

2021-10-20 09:30:13: @david-zhao created the issue


In enterprise edition, when enable_remote_agg_pushdown is true below test case(that of ticket#81) fails because row type mismatch between RemoteJoin and GroupAggregate nodes

drop table if exists INT8_TBL; CREATE TABLE INT8_TBL(id serial primary key, q1 int8, q2 int8); INSERT INTO INT8_TBL(q1, q2) VALUES(' 123 ',' 456'); INSERT INTO INT8_TBL(q1, q2) VALUES('123 ','4567890123456789'); INSERT INTO INT8_TBL(q1, q2) VALUES('4567890123456789','123'); INSERT INTO INT8_TBL(q1, q2) VALUES(+4567890123456789,'4567890123456789'); INSERT INTO INT8_TBL(q1, q2) VALUES('+4567890123456789','-4567890123456789'); explain select t1.q2, count(t2.*) from int8_tbl t1 left join int8_tbl t2 on (t1.q2 = t2.q1) group by t1.q2 order by 1; QUERY PLAN

GroupAggregate (cost=0.01..0.03 rows=1 width=16) Group Key: t1. -> RemoteJoin Left Join (cost=0.00..0.00 rows=0 width=52) Join Filter: (t1. = t2.*) Shard: 7 Remote SQL: select t1.q2, t2.id, t2.q1, t2.q2 from ( regression_$$_public.int8tbl t1 LEFT JOIN regression$$_public.int8_tbl t2 ON (t1.q2 = t2.q1)) ORDER BY 1 ASC (5 rows)

select t1.q2, count(t2.*) from int8_tbl t1 left join int8_tbl t2 on (t1.q2 = t2.q1) group by t1.q2 order by 1; ERROR: table row type and query-specified row type do not match DETAIL: Table row contains 4 attributes, but query expects 3.

jd-zhang commented 2 years ago

2021-10-25 19:04:57: @david-zhao commented


the count(table.*) is a postgreSQL extension, we will support it later.

jd-zhang commented 2 years ago

2021-11-04 14:32:33: @david-zhao

jd-zhang commented 2 years ago

2021-12-10 15:02:41: @david-zhao changed owner from david to smith

jd-zhang commented 2 years ago

2021-12-27 11:11:03: smith changed status from assigned to accepted