Skip to content

DuckDB Internal Error: Failed to bind column reference "SUBQUERY" [14.0] (bindings: {#[0.0]}) #15640

@SteveLeungYL

Description

@SteveLeungYL

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

  1. Clone the DuckDB Git from the official repo.
  2. Checkout to the latest main (v1.1.4-dev4166 c28ce39).
  3. Compile the DuckDB binary by using make debug.
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions