You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by GitBox <gi...@apache.org> on 2022/05/13 07:33:13 UTC
[GitHub] [incubator-doris] emerkfu opened a new issue, #9545: [Bug] Error in join operation using subquery containing row_number
emerkfu opened a new issue, #9545:
URL: https://github.com/apache/incubator-doris/issues/9545
### Search before asking
- [X] I had searched in the [issues](https://github.com/apache/incubator-doris/issues?q=is%3Aissue) and found no similar issues.
### Version
0.15.3
### What's Wrong?
-- The following is the DDL to create the test table.
DROP TABLE test.`rownumber_test_00`;
CREATE TABLE test.`rownumber_test_00` (
`code` varchar(200) NULL,
`name` char(255) NULL
) ENGINE=OLAP
UNIQUE KEY(`code`)
COMMENT "rownumber_test_00"
DISTRIBUTED BY HASH(`code`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"in_memory" = "false",
"storage_format" = "V2"
);
DROP TABLE test.`rownumber_test_01`;
CREATE TABLE test.`rownumber_test_01` (
`id` varchar(128) NOT NULL,
`outer_id` varchar(128) NOT NULL
) ENGINE=OLAP
UNIQUE KEY(`id`, `outer_id`)
COMMENT "rownumber_test_01"
DISTRIBUTED BY HASH(`id`, `outer_id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"in_memory" = "false",
"storage_format" = "V2"
);
DROP TABLE test.`rownumber_test_02`;
CREATE TABLE test.`rownumber_test_02` (
`id` varchar(128) NOT NULL,
`refresh_token_expiration` datetime NOT NULL ,
`client_actor_id` varchar(128) NULL,
`service_actor_id` varchar(128) NULL,
`client_application` varchar(128) NOT NULL,
`service_application` varchar(128) NOT NULL,
`is_deleted_flg` int(11) NULL DEFAULT "0"
) ENGINE=OLAP
UNIQUE KEY(`id`)
COMMENT "rownumber_test_02"
DISTRIBUTED BY HASH(`id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"in_memory" = "false",
"storage_format" = "V2"
);
DROP TABLE test.`rownumber_test_03`;
CREATE TABLE test.`rownumber_test_03` (
`id` varchar(1020) NOT NULL,
`token_id` varchar(1020) NULL,
`name` varchar(1020) NULL,
`is_deleted_flg` int(11) NULL DEFAULT "0"
) ENGINE=OLAP
UNIQUE KEY(`id`)
COMMENT "rownumber_test_03"
DISTRIBUTED BY HASH(`id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"in_memory" = "false",
"storage_format" = "V2"
);
---------------------------------------------------------
-- The following is the SQL that will report an error when executing insert select.
-- If only the select part is executed, no error will be reported.
-- However, when the complete insert select SQL is executed, an error will occur.
-- The above scenario can be reproduced even if there is no data in the test table.
insert into test.`rownumber_test_00`
select
t0.id,
t1.name
from
test.`rownumber_test_01` t0
left join
(select
t.client_actor_id,
t.name
from
(select
t1.client_actor_id,
t2.name,
row_number()OVER(PARTITION BY t1.client_actor_id,t1.service_actor_id,t1.service_application,t2.name ORDER BY t1.refresh_token_expiration desc) AS rn
from test.`rownumber_test_02` t1
left join test.`rownumber_test_03` t2
on t1.id = t2.token_id and t2.is_deleted_flg=0
where t1.is_deleted_flg=0) t
where t.rn = 1
) t1
on t0.id= t1.client_actor_id
;
---------------------------------------------------------
The following content is the error content.
org.jkiss.dbeaver.model.sql.DBSQLException: SQL 错误 [1064] [42000]: errCode = 2, detailMessage = can't support
at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:133)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:509)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$0(SQLQueryJob.java:440)
at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:168)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:427)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:812)
at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:3181)
at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:121)
at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:168)
at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:119)
at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$ResultSetDataPumpJob.run(ResultSetViewer.java:4514)
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.sql.SQLSyntaxErrorException: errCode = 2, detailMessage = can't support
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:768)
at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:653)
at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:327)
at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:130)
... 12 more
The following is Explain String .
Explain String |
---------------------------------------------------------------------------------------------------------------------------------------|
PLAN FRAGMENT 0 |
OUTPUT EXPRS:`t0`.`id` | `t2`.`name` | 0 |
PARTITION: HASH_PARTITIONED: `default_cluster:test`.`rownumber_test_01`.`id`, `default_cluster:test`.`rownumber_test_01`.`outer_id` |
|
OLAP TABLE SINK |
TUPLE ID: 0 |
RANDOM |
|
7:HASH JOIN |
| join op: LEFT OUTER JOIN (BROADCAST) |
| hash predicates: |
| colocate: false, reason: The src data has been redistributed |
| equal join conjunct: `t0`.`id` = <slot 25> <slot 6> |
| cardinality=0 |
| tuple ids: 1 9N 8N |
| |
|----10:EXCHANGE |
| tuple ids: 9 8 |
| |
0:OlapScanNode |
TABLE: rownumber_test_01 |
PREAGGREGATION: OFF. Reason: No AggregateInfo |
PREDICATES: `t0`.`__DORIS_DELETE_SIGN__` = 0 |
partitions=0/1 |
rollup: null |
tabletRatio=0/0 |
tabletList= |
cardinality=0 |
avgRowSize=17.0 |
numNodes=1 |
tuple ids: 1 |
|
PLAN FRAGMENT 1 |
OUTPUT EXPRS: |
PARTITION: HASH_PARTITIONED: `t1`.`client_actor_id`, `t1`.`service_actor_id`, `t1`.`service_application`, `t2`.`name` |
|
STREAM DATA SINK |
EXCHANGE ID: 10 |
UNPARTITIONED |
|
6:SELECT |
| predicates: <slot 23> = 1, <slot 23> = 1 |
| tuple ids: 9 8 |
| |
5:ANALYTIC |
| functions: [, row_number(), ] |
| partition by: `t1`.`client_actor_id`, `t1`.`service_actor_id`, `t1`.`service_application`, `t2`.`name` |
| order by: <slot 28> <slot 10> DESC NULLS LAST |
| window: ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW |
| tuple ids: 9 8 |
| |
4:SORT |
| order by: <slot 25> <slot 6> ASC, <slot 26> <slot 8> ASC, <slot 27> <slot 9> ASC, <slot 33> <slot 7> ASC, <slot 28> <slot 10> DESC|
| offset: 0 |
| tuple ids: 9 |
| |
9:EXCHANGE |
tuple ids: 2 3N |
|
PLAN FRAGMENT 2 |
OUTPUT EXPRS: |
PARTITION: HASH_PARTITIONED: `default_cluster:test`.`rownumber_test_02`.`id` |
|
STREAM DATA SINK |
EXCHANGE ID: 09 |
HASH_PARTITIONED: `t1`.`client_actor_id`, `t1`.`service_actor_id`, `t1`.`service_application`, `t2`.`name` |
|
3:HASH JOIN |
| join op: LEFT OUTER JOIN (BROADCAST) |
| hash predicates: |
| colocate: false, reason: Tables are not in the same group |
| equal join conjunct: `t1`.`id` = `t2`.`token_id` |
| cardinality=0 |
| tuple ids: 2 3N |
| |
|----8:EXCHANGE |
| tuple ids: 3 |
| |
1:OlapScanNode |
TABLE: rownumber_test_02 |
PREAGGREGATION: OFF. Reason: No AggregateInfo |
PREDICATES: `t1`.`is_deleted_flg` = 0, `t1`.`__DORIS_DELETE_SIGN__` = 0 |
partitions=0/1 |
rollup: null |
tabletRatio=0/0 |
tabletList= |
cardinality=0 |
avgRowSize=85.0 |
numNodes=1 |
tuple ids: 2 |
|
PLAN FRAGMENT 3 |
OUTPUT EXPRS: |
PARTITION: HASH_PARTITIONED: `default_cluster:test`.`rownumber_test_03`.`id` |
|
STREAM DATA SINK |
EXCHANGE ID: 08 |
UNPARTITIONED |
|
2:OlapScanNode |
TABLE: rownumber_test_03 |
PREAGGREGATION: OFF. Reason: null |
PREDICATES: `t2`.`is_deleted_flg` = 0, `t2`.`__DORIS_DELETE_SIGN__` = 0 |
partitions=0/1 |
rollup: null |
tabletRatio=0/0 |
tabletList= |
cardinality=0 |
avgRowSize=37.0 |
numNodes=1 |
tuple ids: 3 |
|
Tuples: |
TupleDescriptor{id=0, tbl=null, byteSize=48, materialized=true} |
SlotDescriptor{id=0, col=code, type=VARCHAR(*)} |
parent=0 |
materialized=true |
byteSize=16 |
byteOffset=16 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=1 |
|
SlotDescriptor{id=1, col=name, type=CHAR(*)} |
parent=0 |
materialized=true |
byteSize=16 |
byteOffset=32 |
nullIndicatorByte=0 |
nullIndicatorBit=1 |
slotIdx=2 |
|
SlotDescriptor{id=2, col=__DORIS_DELETE_SIGN__, type=TINYINT} |
parent=0 |
materialized=true |
byteSize=1 |
byteOffset=1 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=0 |
|
|
TupleDescriptor{id=1, tbl=rownumber_test_01, byteSize=32, materialized=true} |
SlotDescriptor{id=19, col=id, type=VARCHAR(*)} |
parent=1 |
materialized=true |
byteSize=16 |
byteOffset=16 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=1 |
|
SlotDescriptor{id=20, col=__DORIS_DELETE_SIGN__, type=TINYINT} |
parent=1 |
materialized=true |
byteSize=1 |
byteOffset=0 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=0 |
|
|
TupleDescriptor{id=2, tbl=rownumber_test_02, byteSize=96, materialized=true} |
SlotDescriptor{id=3, col=id, type=VARCHAR(*)} |
parent=2 |
materialized=true |
byteSize=16 |
byteOffset=16 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=2 |
|
SlotDescriptor{id=6, col=client_actor_id, type=VARCHAR(*)} |
parent=2 |
materialized=true |
byteSize=16 |
byteOffset=32 |
nullIndicatorByte=0 |
nullIndicatorBit=1 |
slotIdx=3 |
|
SlotDescriptor{id=8, col=service_actor_id, type=VARCHAR(*)} |
parent=2 |
materialized=true |
byteSize=16 |
byteOffset=48 |
nullIndicatorByte=0 |
nullIndicatorBit=2 |
slotIdx=4 |
|
SlotDescriptor{id=9, col=service_application, type=VARCHAR(*)} |
parent=2 |
materialized=true |
byteSize=16 |
byteOffset=64 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=5 |
|
SlotDescriptor{id=10, col=refresh_token_expiration, type=DATETIME} |
parent=2 |
materialized=true |
byteSize=16 |
byteOffset=80 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=6 |
|
SlotDescriptor{id=11, col=is_deleted_flg, type=INT} |
parent=2 |
materialized=true |
byteSize=4 |
byteOffset=4 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=1 |
|
SlotDescriptor{id=21, col=__DORIS_DELETE_SIGN__, type=TINYINT} |
parent=2 |
materialized=true |
byteSize=1 |
byteOffset=1 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=0 |
|
|
TupleDescriptor{id=3, tbl=rownumber_test_03, byteSize=48, materialized=true} |
SlotDescriptor{id=4, col=token_id, type=VARCHAR(*)} |
parent=3 |
materialized=true |
byteSize=16 |
byteOffset=16 |
nullIndicatorByte=0 |
nullIndicatorBit=1 |
slotIdx=2 |
|
SlotDescriptor{id=5, col=is_deleted_flg, type=INT} |
parent=3 |
materialized=true |
byteSize=4 |
byteOffset=4 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=1 |
|
SlotDescriptor{id=7, col=name, type=VARCHAR(*)} |
parent=3 |
materialized=true |
byteSize=16 |
byteOffset=32 |
nullIndicatorByte=0 |
nullIndicatorBit=2 |
slotIdx=3 |
|
SlotDescriptor{id=22, col=__DORIS_DELETE_SIGN__, type=TINYINT} |
parent=3 |
materialized=true |
byteSize=1 |
byteOffset=1 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=0 |
|
|
TupleDescriptor{id=4, tbl=null, byteSize=8, materialized=false} |
SlotDescriptor{id=12, col=null, type=BIGINT} |
parent=4 |
materialized=true |
byteSize=8 |
byteOffset=0 |
nullIndicatorByte=0 |
nullIndicatorBit=-1 |
slotIdx=0 |
|
|
TupleDescriptor{id=5, tbl=null, byteSize=16, materialized=false} |
SlotDescriptor{id=13, col=null, type=BIGINT} |
parent=5 |
materialized=true |
byteSize=8 |
byteOffset=8 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=0 |
|
|
TupleDescriptor{id=6, tbl=t, byteSize=0, materialized=false} |
SlotDescriptor{id=14, col=client_actor_id, type=VARCHAR(*)} |
parent=6 |
materialized=false |
byteSize=0 |
byteOffset=-1 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=0 |
|
SlotDescriptor{id=15, col=name, type=VARCHAR(*)} |
parent=6 |
materialized=false |
byteSize=0 |
byteOffset=-1 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=0 |
|
SlotDescriptor{id=16, col=rn, type=BIGINT} |
parent=6 |
materialized=false |
byteSize=0 |
byteOffset=-1 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=0 |
|
|
TupleDescriptor{id=7, tbl=t1, byteSize=0, materialized=false} |
SlotDescriptor{id=17, col=client_actor_id, type=VARCHAR(*)} |
parent=7 |
materialized=false |
byteSize=0 |
byteOffset=-1 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=0 |
|
SlotDescriptor{id=18, col=name, type=VARCHAR(*)} |
parent=7 |
materialized=false |
byteSize=0 |
byteOffset=-1 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=0 |
|
|
TupleDescriptor{id=8, tbl=null, byteSize=16, materialized=true} |
SlotDescriptor{id=23, col=null, type=BIGINT} |
parent=8 |
materialized=true |
byteSize=8 |
byteOffset=8 |
nullIndicatorByte=0 |
nullIndicatorBit=0 |
slotIdx=0 |
|
|
TupleDescriptor{id=9, tbl=null, byteSize=208, materialized=true} |
SlotDescriptor{id=24, col=id, type=VARCHAR(*)} |
parent=9 |
materialized=true |
byteSize=16 |
byteOffset=16 |
nullIndicatorByte=0 |
nullIndicatorBit=4 |
slotIdx=4 |
|
SlotDescriptor{id=25, col=client_actor_id, type=VARCHAR(*)} |
parent=9 |
materialized=true |
byteSize=16 |
byteOffset=32 |
nullIndicatorByte=0 |
nullIndicatorBit=5 |
slotIdx=5 |
|
SlotDescriptor{id=26, col=service_actor_id, type=VARCHAR(*)} |
parent=9 |
materialized=true |
byteSize=16 |
byteOffset=48 |
nullIndicatorByte=0 |
nullIndicatorBit=6 |
slotIdx=6 |
|
SlotDescriptor{id=27, col=service_application, type=VARCHAR(*)} |
parent=9 |
materialized=true |
byteSize=16 |
byteOffset=64 |
nullIndicatorByte=0 |
nullIndicatorBit=7 |
slotIdx=7 |
|
SlotDescriptor{id=28, col=refresh_token_expiration, type=DATETIME} |
parent=9 |
materialized=true |
byteSize=16 |
byteOffset=80 |
nullIndicatorByte=1 |
nullIndicatorBit=0 |
slotIdx=8 |
|
SlotDescriptor{id=29, col=is_deleted_flg, type=INT} |
parent=9 |
materialized=true |
byteSize=4 |
byteOffset=4 |
nullIndicatorByte=0 |
nullIndicatorBit=2 |
slotIdx=2 |
### What You Expected?
Can a subquery containing row_number be joined?
### How to Reproduce?
_No response_
### Anything Else?
_No response_
### Are you willing to submit PR?
- [ ] Yes I am willing to submit a PR!
### Code of Conduct
- [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org
[GitHub] [incubator-doris] hf200012 commented on issue #9545: [Bug] Error in join operation using subquery containing row_number
Posted by GitBox <gi...@apache.org>.
hf200012 commented on issue #9545:
URL: https://github.com/apache/incubator-doris/issues/9545#issuecomment-1125790882
upgrade 1.0
```
mysql> insert into test.rownumber_test_00
-> select
-> t0.id,
-> t1.name
-> from
-> test.rownumber_test_01 t0
-> left join
-> (select
-> t.client_actor_id,
-> t.name
-> from
-> (select
-> t1.client_actor_id,
-> t2.name,
-> row_number()OVER(PARTITION BY t1.client_actor_id,t1.service_actor_id,t1.service_application,t2.name ORDER BY t1.refresh_token_expiration desc) AS rn
-> from test.rownumber_test_02 t1
-> left join test.rownumber_test_03 t2
-> on t1.id = t2.token_id and t2.is_deleted_flg=0
-> where t1.is_deleted_flg=0) t
-> where t.rn = 1
-> ) t1
-> on t0.id= t1.client_actor_id
-> ;
Query OK, 0 rows affected (0.04 sec)
{'label':'insert_4e331671d65a4303-834e7fea963d08cc', 'status':'VISIBLE', 'txnId':'17042'}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org
[GitHub] [doris] emerkfu closed issue #9545: [Bug] Error in join operation using subquery containing row_number
Posted by GitBox <gi...@apache.org>.
emerkfu closed issue #9545: [Bug] Error in join operation using subquery containing row_number
URL: https://github.com/apache/doris/issues/9545
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org