-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Open
Labels
Description
What happens?
The latest version of the DuckDB (latest main: v1.1.4-dev4166 c28ce39 and released version v1.1.3 1986445) triggers Internal Error when running the following SQL statement:
SET order_by_non_integer_literal=true;
SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');
Here is the stack trace from (v1.1.4-dev4166 c28ce39)
INTERNAL Error: Failed to bind column reference "SUBQUERY" [14.0] (bindings: {#[0.0]})
#0 duckdb::InternalException::InternalException (this=0xaaaafaecac00, msg="Failed to bind column reference \"SUBQUERY\" [14.0] (bindings: {#[0.0]})")
at /home/duckdb/duckdb/src/common/exception.cpp:319
#1 0x0000aaaade2f5694 in duckdb::InternalException::InternalException<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (this=0xaaaafaecac00,
msg="Failed to bind column reference \"%s\" [%d.%d] (bindings: %s)") at /usr/include/c++/9/ext/new_allocator.h:89
#2 0x0000aaaade2dd3a0 in duckdb::ColumnBindingResolver::VisitReplace (this=<optimized out>, expr=..., expr_ptr=<optimized out>)
at /usr/include/c++/9/bits/basic_string.h:940
#3 0x0000aaaade6aee8c in duckdb::LogicalOperatorVisitor::VisitExpression (this=0xffffea0f7730, expression=0xaaaafaec1518)
at /home/duckdb/duckdb/src/planner/logical_operator_visitor.cpp:215
#4 0x0000aaaade6b09d0 in std::function<void (duckdb::unique_ptr<duckdb::Expression, std::default_delete<duckdb::Expression>, true>*)>::operator()(duckdb::unique_ptr<duckdb::Expression, std::default_delete<duckdb::Expression>, true>*) const (__args#0=<optimized out>, this=0xffffea0f74e8)
at /usr/include/c++/9/bits/std_function.h:683
#5 duckdb::LogicalOperatorVisitor::EnumerateExpressions(duckdb::LogicalOperator&, std::function<void (duckdb::unique_ptr<duckdb::Expression, std::default_delete<duckdb::Expression>, true>*)> const&) (op=..., callback=...) at /home/duckdb/duckdb/src/planner/logical_operator_visitor.cpp:167
#6 0x0000aaaade6b0aa4 in duckdb::LogicalOperatorVisitor::VisitOperatorExpressions (this=this@entry=0xffffea0f7730, op=...) at /usr/include/c++/9/new:174
#7 0x0000aaaade2dca88 in duckdb::ColumnBindingResolver::VisitOperator (this=0xffffea0f7730, op=...)
at /home/duckdb/duckdb/src/execution/column_binding_resolver.cpp:144
#8 0x0000aaaade6c0454 in duckdb::LogicalOperatorVisitor::VisitOperatorChildren (op=..., this=0xffffea0f7730)
at /home/duckdb/duckdb/src/include/duckdb/common/unique_ptr.hpp:20
#9 duckdb::LogicalOperatorVisitor::VisitOperatorChildren (this=this@entry=0xffffea0f7730, op=...)
at /home/duckdb/duckdb/src/planner/logical_operator_visitor.cpp:14
#10 0x0000aaaade2dca7c in duckdb::ColumnBindingResolver::VisitOperator (this=this@entry=0xffffea0f7730, op=...)
at /home/duckdb/duckdb/src/execution/column_binding_resolver.cpp:142
#11 0x0000aaaade2dd0a0 in duckdb::PhysicalPlanGenerator::CreatePlan (this=this@entry=0xffffea0f77e8, op=...) at /usr/include/c++/9/bits/unique_ptr.h:360
#12 0x0000aaaade39df2c in duckdb::ClientContext::CreatePreparedStatementInternal (this=this@entry=0xaaaafadcb5f0, lock=...,
query="SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');", statement=..., values=values@entry=...) at /usr/include/c++/9/bits/move.h:74
#13 0x0000aaaade39e530 in duckdb::ClientContext::CreatePreparedStatement (this=this@entry=0xaaaafadcb5f0, lock=...,
query="SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');", statement=..., values=..., mode=mode@entry=duckdb::PreparedStatementMode::PREPARE_AND_EXECUTE) at /usr/include/c++/9/bits/move.h:74
#14 0x0000aaaade39fe98 in duckdb::ClientContext::PendingStatementInternal (this=this@entry=0xaaaafadcb5f0, lock=...,
query="SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');", statement=..., parameters=...) at /usr/include/c++/9/bits/move.h:74
#15 0x0000aaaade3a0344 in duckdb::ClientContext::PendingStatementOrPreparedStatement (this=this@entry=0xaaaafadcb5f0, lock=...,
query="SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');", statement=..., prepared=..., parameters=...) at /usr/include/c++/9/bits/move.h:74
#16 0x0000aaaade3a1828 in duckdb::ClientContext::PendingStatementOrPreparedStatementInternal (this=this@entry=0xaaaafadcb5f0, lock=...,
query="SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');", statement=..., prepared=..., parameters=...) at /usr/include/c++/9/bits/move.h:74
#17 0x0000aaaade3a07f8 in duckdb::ClientContext::PendingQueryInternal (this=this@entry=0xaaaafadcb5f0, lock=..., statement=..., parameters=...,
verify=verify@entry=true) at /usr/include/c++/9/bits/unique_ptr.h:381
#18 0x0000aaaade3a5758 in duckdb::ClientContext::PendingQuery (this=0xaaaafadcb5f0, statement=..., values=std::unordered_map with 0 elements,
allow_stream_result=allow_stream_result@entry=false) at /usr/include/c++/9/bits/move.h:74
#19 0x0000aaaade3a58f8 in duckdb::ClientContext::PendingQuery (this=<optimized out>, statement=..., allow_stream_result=allow_stream_result@entry=false)
at /usr/include/c++/9/bits/move.h:74
#20 0x0000aaaade3a5d8c in duckdb::Connection::PendingQuery (this=<optimized out>, statement=..., allow_stream_result=allow_stream_result@entry=false)
at /usr/include/c++/9/bits/move.h:74
#21 0x0000aaaaddf47c68 in duckdb_shell_sqlite3_prepare_v2 (db=0xaaaafad28050,
zSql=0xaaaafaec8a10 "SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');", nByte=<optimized out>, ppStmt=0xffffea0f8648, pzTail=0xffffea0f8650) at /usr/include/c++/9/bits/move.h:74
#22 0x0000aaaaddf299d0 in duckdb_shell::ShellState::ExecuteSQL (this=0xffffea0f8880,
zSql=0xaaaafaec8a10 "SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');", pzErrMsg=0xffffea0f86a0) at /home/duckdb/duckdb/tools/shell/shell.cpp:1762
#23 0x0000aaaaddf2a41c in duckdb_shell::ShellState::RunOneSqlLine (this=0xffffea0f8880,
zSql=0xaaaafaec8a10 "SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');") at /home/duckdb/duckdb/tools/shell/shell.cpp:4364
#24 0x0000aaaaddf2aa40 in duckdb_shell::ShellState::ProcessInput (this=0xffffea0f8880) at /home/duckdb/duckdb/tools/shell/shell.cpp:4479
#25 0x0000aaaaddf1cd68 in main (argc=<optimized out>, argv=0xffffea0f8b68) at /home/duckdb/duckdb/tools/shell/shell.cpp:5087
The bug is possibly related to #15586, but not sure.
To Reproduce
- Clone the DuckDB Git from the official repo.
- Checkout to the latest main (v1.1.4-dev4166 c28ce39).
- Compile the DuckDB binary by using
make debug
. - Run the compiled DuckDB and input the following SQL:
SET order_by_non_integer_literal=true;
SELECT DISTINCT ON ( 'string' ) 'string', GROUP BY CUBE ( 'string', ), 'string' IN ( SELECT 'string' ), HAVING 'string' IN ( SELECT 'string');
OS:
Ubuntu 24.04 LTS
DuckDB Version:
v1.1.4-dev4166 c28ce39, compiled by: gcc-9.4.0
DuckDB Client:
cli
Hardware:
No response
Full Name:
Yu Liang
Affiliation:
The Pennsylvania State University
What is the latest build you tested with? If possible, we recommend testing with the latest nightly build.
I have tested with a stable release
Did you include all relevant data sets for reproducing the issue?
Yes
Did you include all code required to reproduce the issue?
- Yes, I have
Did you include all relevant configuration (e.g., CPU architecture, Python version, Linux distribution) to reproduce the issue?
- Yes, I have