duckdb 0.3.2-dev1316.0 → 0.3.2-dev1325.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "duckdb",
3
3
  "main": "./lib/duckdb.js",
4
- "version": "0.3.2-dev1316.0",
4
+ "version": "0.3.2-dev1325.0",
5
5
  "description": "DuckDB node.js API",
6
6
  "gypfile": true,
7
7
  "dependencies": {
package/src/duckdb.cpp CHANGED
@@ -49352,7 +49352,6 @@ SinkResultType PhysicalSimpleAggregate::Sink(ExecutionContext &context, GlobalSi
49352
49352
 
49353
49353
  DataChunk &payload_chunk = sink.payload_chunk;
49354
49354
  sink.child_executor.SetChunk(input);
49355
- payload_chunk.SetCardinality(input);
49356
49355
  for (idx_t aggr_idx = 0; aggr_idx < aggregates.size(); aggr_idx++) {
49357
49356
  DataChunk filtered_input;
49358
49357
  auto &aggregate = (BoundAggregateExpression &)*aggregates[aggr_idx];
@@ -49367,6 +49366,8 @@ SinkResultType PhysicalSimpleAggregate::Sink(ExecutionContext &context, GlobalSi
49367
49366
  filtered_input.Slice(input, true_sel, count);
49368
49367
  sink.child_executor.SetChunk(filtered_input);
49369
49368
  payload_chunk.SetCardinality(count);
49369
+ } else {
49370
+ payload_chunk.SetCardinality(input);
49370
49371
  }
49371
49372
  // resolve the child expressions of the aggregate (if any)
49372
49373
  if (!aggregate.children.empty()) {
@@ -148283,7 +148284,9 @@ unique_ptr<BoundTableRef> Binder::Bind(BaseTableRef &ref) {
148283
148284
  subquery.column_name_alias =
148284
148285
  BindContext::AliasColumnNames(subquery.alias, view_catalog_entry->aliases, ref.column_name_alias);
148285
148286
  // bind the child subquery
148287
+ view_binder->AddBoundView(view_catalog_entry);
148286
148288
  auto bound_child = view_binder->Bind(subquery);
148289
+
148287
148290
  D_ASSERT(bound_child->type == TableReferenceType::SUBQUERY);
148288
148291
  // verify that the types and names match up with the expected types and names
148289
148292
  auto &bound_subquery = (BoundSubqueryRef &)*bound_child;
@@ -149272,6 +149275,7 @@ unique_ptr<LogicalOperator> Binder::CreatePlan(BoundTableFunction &ref) {
149272
149275
 
149273
149276
 
149274
149277
 
149278
+
149275
149279
  #include <algorithm>
149276
149280
 
149277
149281
  namespace duckdb {
@@ -149489,6 +149493,19 @@ bool Binder::CTEIsAlreadyBound(CommonTableExpressionInfo *cte) {
149489
149493
  return false;
149490
149494
  }
149491
149495
 
149496
+ void Binder::AddBoundView(ViewCatalogEntry *view) {
149497
+ // check if the view is already bound
149498
+ auto current = this;
149499
+ while (current) {
149500
+ if (current->bound_views.find(view) != current->bound_views.end()) {
149501
+ throw BinderException("infinite recursion detected: attempting to recursively bind view \"%s\"",
149502
+ view->name);
149503
+ }
149504
+ current = current->parent.get();
149505
+ }
149506
+ bound_views.insert(view);
149507
+ }
149508
+
149492
149509
  idx_t Binder::GenerateTableIndex() {
149493
149510
  if (parent) {
149494
149511
  return parent->GenerateTableIndex();