duckdb 0.3.3-dev1291.0 → 0.3.3-dev1300.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.3-dev1291.0",
4
+ "version": "0.3.3-dev1300.0",
5
5
  "description": "DuckDB node.js API",
6
6
  "gypfile": true,
7
7
  "dependencies": {
package/src/duckdb.cpp CHANGED
@@ -46749,9 +46749,7 @@ void AdaptiveFilter::AdaptRuntimeStatistics(double duration) {
46749
46749
 
46750
46750
 
46751
46751
 
46752
-
46753
46752
  #include <cmath>
46754
- #include <map>
46755
46753
 
46756
46754
  namespace duckdb {
46757
46755
 
@@ -47966,7 +47964,6 @@ idx_t ExpressionExecutor::Select(const BoundBetweenExpression &expr, ExpressionS
47966
47964
 
47967
47965
 
47968
47966
 
47969
-
47970
47967
  namespace duckdb {
47971
47968
 
47972
47969
  struct CaseExpressionState : public ExpressionState {
@@ -50968,9 +50965,6 @@ private:
50968
50965
 
50969
50966
 
50970
50967
 
50971
-
50972
-
50973
-
50974
50968
  namespace duckdb {
50975
50969
 
50976
50970
  using ValidityBytes = JoinHashTable::ValidityBytes;
@@ -67004,7 +66998,6 @@ void PartitionableHashTable::Finalize() {
67004
66998
 
67005
66999
 
67006
67000
 
67007
-
67008
67001
  namespace duckdb {
67009
67002
 
67010
67003
  PerfectAggregateHashTable::PerfectAggregateHashTable(BufferManager &buffer_manager,
@@ -71876,8 +71869,6 @@ void BaseReservoirSampling::ReplaceElement() {
71876
71869
 
71877
71870
 
71878
71871
 
71879
- #include <cmath>
71880
-
71881
71872
  namespace duckdb {
71882
71873
 
71883
71874
  WindowSegmentTree::WindowSegmentTree(AggregateFunction &aggregate, FunctionData *bind_info,
@@ -96609,11 +96600,6 @@ void ScalarFunction::NopFunction(DataChunk &input, ExpressionState &state, Vecto
96609
96600
 
96610
96601
 
96611
96602
 
96612
-
96613
-
96614
-
96615
-
96616
-
96617
96603
  namespace duckdb {
96618
96604
 
96619
96605
  ScalarMacroFunction::ScalarMacroFunction(unique_ptr<ParsedExpression> expression)
@@ -96640,8 +96626,6 @@ unique_ptr<MacroFunction> ScalarMacroFunction::Copy() {
96640
96626
 
96641
96627
 
96642
96628
 
96643
-
96644
-
96645
96629
  //===----------------------------------------------------------------------===//
96646
96630
  // DuckDB
96647
96631
  //
@@ -98059,7 +98043,6 @@ struct ReadCSVTableFunction {
98059
98043
 
98060
98044
 
98061
98045
 
98062
-
98063
98046
  #include <limits>
98064
98047
 
98065
98048
  namespace duckdb {
@@ -98769,6 +98752,7 @@ struct TestAllTypesFun {
98769
98752
 
98770
98753
 
98771
98754
 
98755
+
98772
98756
  namespace duckdb {
98773
98757
 
98774
98758
  struct PragmaDetailedProfilingOutputOperatorData : public FunctionOperatorData {
@@ -99317,7 +99301,6 @@ void BuiltinFunctions::RegisterTableFunctions() {
99317
99301
 
99318
99302
 
99319
99303
 
99320
-
99321
99304
  #include <limits>
99322
99305
 
99323
99306
  namespace duckdb {
@@ -103346,8 +103329,6 @@ void UDFWrapper::RegisterAggrFunction(AggregateFunction aggr_function, ClientCon
103346
103329
 
103347
103330
 
103348
103331
 
103349
-
103350
-
103351
103332
  namespace duckdb {
103352
103333
 
103353
103334
  BaseAppender::BaseAppender() : column(0) {
@@ -104814,7 +104795,6 @@ duckdb_logical_type duckdb_struct_type_child_type(duckdb_logical_type type, idx_
104814
104795
 
104815
104796
 
104816
104797
 
104817
-
104818
104798
  using duckdb::Connection;
104819
104799
  using duckdb::date_t;
104820
104800
  using duckdb::dtime_t;
@@ -106553,67 +106533,6 @@ public:
106553
106533
 
106554
106534
  } // namespace duckdb
106555
106535
 
106556
- //===----------------------------------------------------------------------===//
106557
- // DuckDB
106558
- //
106559
- // duckdb/parser/statement/execute_statement.hpp
106560
- //
106561
- //
106562
- //===----------------------------------------------------------------------===//
106563
-
106564
-
106565
-
106566
-
106567
-
106568
-
106569
-
106570
- namespace duckdb {
106571
-
106572
- class ExecuteStatement : public SQLStatement {
106573
- public:
106574
- ExecuteStatement();
106575
-
106576
- string name;
106577
- vector<unique_ptr<ParsedExpression>> values;
106578
-
106579
- protected:
106580
- ExecuteStatement(const ExecuteStatement &other);
106581
-
106582
- public:
106583
- unique_ptr<SQLStatement> Copy() const override;
106584
- };
106585
- } // namespace duckdb
106586
-
106587
-
106588
- //===----------------------------------------------------------------------===//
106589
- // DuckDB
106590
- //
106591
- // duckdb/parser/statement/prepare_statement.hpp
106592
- //
106593
- //
106594
- //===----------------------------------------------------------------------===//
106595
-
106596
-
106597
-
106598
-
106599
-
106600
-
106601
- namespace duckdb {
106602
-
106603
- class PrepareStatement : public SQLStatement {
106604
- public:
106605
- PrepareStatement();
106606
-
106607
- unique_ptr<SQLStatement> statement;
106608
- string name;
106609
-
106610
- protected:
106611
- PrepareStatement(const PrepareStatement &other);
106612
-
106613
- public:
106614
- unique_ptr<SQLStatement> Copy() const override;
106615
- };
106616
- } // namespace duckdb
106617
106536
 
106618
106537
 
106619
106538
 
@@ -106777,7 +106696,6 @@ private:
106777
106696
 
106778
106697
 
106779
106698
 
106780
-
106781
106699
  namespace duckdb {
106782
106700
 
106783
106701
  struct ActiveQueryContext {
@@ -117936,7 +117854,6 @@ using std::ofstream;
117936
117854
 
117937
117855
 
117938
117856
 
117939
-
117940
117857
  #include <utility>
117941
117858
  #include <algorithm>
117942
117859
 
@@ -119157,7 +119074,6 @@ public:
119157
119074
 
119158
119075
 
119159
119076
 
119160
-
119161
119077
  namespace duckdb {
119162
119078
 
119163
119079
  CreateTableRelation::CreateTableRelation(shared_ptr<Relation> child_p, string schema_name, string table_name)
@@ -119229,7 +119145,6 @@ public:
119229
119145
 
119230
119146
 
119231
119147
 
119232
-
119233
119148
  namespace duckdb {
119234
119149
 
119235
119150
  CreateViewRelation::CreateViewRelation(shared_ptr<Relation> child_p, string view_name_p, bool replace_p,
@@ -145683,6 +145598,36 @@ unique_ptr<SQLStatement> DropStatement::Copy() const {
145683
145598
  }
145684
145599
 
145685
145600
  } // namespace duckdb
145601
+ //===----------------------------------------------------------------------===//
145602
+ // DuckDB
145603
+ //
145604
+ // duckdb/parser/statement/execute_statement.hpp
145605
+ //
145606
+ //
145607
+ //===----------------------------------------------------------------------===//
145608
+
145609
+
145610
+
145611
+
145612
+
145613
+
145614
+
145615
+ namespace duckdb {
145616
+
145617
+ class ExecuteStatement : public SQLStatement {
145618
+ public:
145619
+ ExecuteStatement();
145620
+
145621
+ string name;
145622
+ vector<unique_ptr<ParsedExpression>> values;
145623
+
145624
+ protected:
145625
+ ExecuteStatement(const ExecuteStatement &other);
145626
+
145627
+ public:
145628
+ unique_ptr<SQLStatement> Copy() const override;
145629
+ };
145630
+ } // namespace duckdb
145686
145631
 
145687
145632
 
145688
145633
  namespace duckdb {
@@ -145840,6 +145785,35 @@ unique_ptr<SQLStatement> PragmaStatement::Copy() const {
145840
145785
  }
145841
145786
 
145842
145787
  } // namespace duckdb
145788
+ //===----------------------------------------------------------------------===//
145789
+ // DuckDB
145790
+ //
145791
+ // duckdb/parser/statement/prepare_statement.hpp
145792
+ //
145793
+ //
145794
+ //===----------------------------------------------------------------------===//
145795
+
145796
+
145797
+
145798
+
145799
+
145800
+
145801
+ namespace duckdb {
145802
+
145803
+ class PrepareStatement : public SQLStatement {
145804
+ public:
145805
+ PrepareStatement();
145806
+
145807
+ unique_ptr<SQLStatement> statement;
145808
+ string name;
145809
+
145810
+ protected:
145811
+ PrepareStatement(const PrepareStatement &other);
145812
+
145813
+ public:
145814
+ unique_ptr<SQLStatement> Copy() const override;
145815
+ };
145816
+ } // namespace duckdb
145843
145817
 
145844
145818
 
145845
145819
  namespace duckdb {
@@ -153837,6 +153811,8 @@ public:
153837
153811
  return max_count;
153838
153812
  }
153839
153813
 
153814
+ unique_ptr<Expression> CreateExtraReference(unique_ptr<ParsedExpression> expr);
153815
+
153840
153816
  private:
153841
153817
  unique_ptr<Expression> CreateProjectionReference(ParsedExpression &expr, idx_t index);
153842
153818
 
@@ -153870,9 +153846,13 @@ unique_ptr<Expression> Binder::BindOrderExpression(OrderBinder &order_binder, un
153870
153846
  return bound_expr;
153871
153847
  }
153872
153848
 
153873
- unique_ptr<Expression> Binder::BindDelimiter(ClientContext &context, unique_ptr<ParsedExpression> delimiter,
153874
- const LogicalType &type, Value &delimiter_value) {
153849
+ unique_ptr<Expression> Binder::BindDelimiter(ClientContext &context, OrderBinder &order_binder,
153850
+ unique_ptr<ParsedExpression> delimiter, const LogicalType &type,
153851
+ Value &delimiter_value) {
153875
153852
  auto new_binder = Binder::CreateBinder(context, this, true);
153853
+ if (delimiter->HasSubquery()) {
153854
+ return order_binder.CreateExtraReference(move(delimiter));
153855
+ }
153876
153856
  ExpressionBinder expr_binder(*new_binder, context);
153877
153857
  expr_binder.target_type = type;
153878
153858
  auto expr = expr_binder.Bind(delimiter);
@@ -153884,30 +153864,36 @@ unique_ptr<Expression> Binder::BindDelimiter(ClientContext &context, unique_ptr<
153884
153864
  return expr;
153885
153865
  }
153886
153866
 
153887
- unique_ptr<BoundResultModifier> Binder::BindLimit(LimitModifier &limit_mod) {
153867
+ unique_ptr<BoundResultModifier> Binder::BindLimit(OrderBinder &order_binder, LimitModifier &limit_mod) {
153888
153868
  auto result = make_unique<BoundLimitModifier>();
153889
153869
  if (limit_mod.limit) {
153890
153870
  Value val;
153891
- result->limit = BindDelimiter(context, move(limit_mod.limit), LogicalType::BIGINT, val);
153871
+ result->limit = BindDelimiter(context, order_binder, move(limit_mod.limit), LogicalType::BIGINT, val);
153892
153872
  if (!result->limit) {
153893
153873
  result->limit_val = val.GetValue<int64_t>();
153874
+ if (result->limit_val < 0) {
153875
+ throw BinderException("LIMIT cannot be negative");
153876
+ }
153894
153877
  }
153895
153878
  }
153896
153879
  if (limit_mod.offset) {
153897
153880
  Value val;
153898
- result->offset = BindDelimiter(context, move(limit_mod.offset), LogicalType::BIGINT, val);
153881
+ result->offset = BindDelimiter(context, order_binder, move(limit_mod.offset), LogicalType::BIGINT, val);
153899
153882
  if (!result->offset) {
153900
153883
  result->offset_val = val.GetValue<int64_t>();
153884
+ if (result->offset_val < 0) {
153885
+ throw BinderException("OFFSET cannot be negative");
153886
+ }
153901
153887
  }
153902
153888
  }
153903
153889
  return move(result);
153904
153890
  }
153905
153891
 
153906
- unique_ptr<BoundResultModifier> Binder::BindLimitPercent(LimitPercentModifier &limit_mod) {
153892
+ unique_ptr<BoundResultModifier> Binder::BindLimitPercent(OrderBinder &order_binder, LimitPercentModifier &limit_mod) {
153907
153893
  auto result = make_unique<BoundLimitPercentModifier>();
153908
153894
  if (limit_mod.limit) {
153909
153895
  Value val;
153910
- result->limit = BindDelimiter(context, move(limit_mod.limit), LogicalType::DOUBLE, val);
153896
+ result->limit = BindDelimiter(context, order_binder, move(limit_mod.limit), LogicalType::DOUBLE, val);
153911
153897
  if (!result->limit) {
153912
153898
  result->limit_percent = val.GetValue<double>();
153913
153899
  if (result->limit_percent < 0.0) {
@@ -153917,7 +153903,7 @@ unique_ptr<BoundResultModifier> Binder::BindLimitPercent(LimitPercentModifier &l
153917
153903
  }
153918
153904
  if (limit_mod.offset) {
153919
153905
  Value val;
153920
- result->offset = BindDelimiter(context, move(limit_mod.offset), LogicalType::BIGINT, val);
153906
+ result->offset = BindDelimiter(context, order_binder, move(limit_mod.offset), LogicalType::BIGINT, val);
153921
153907
  if (!result->offset) {
153922
153908
  result->offset_val = val.GetValue<int64_t>();
153923
153909
  }
@@ -153982,10 +153968,10 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
153982
153968
  break;
153983
153969
  }
153984
153970
  case ResultModifierType::LIMIT_MODIFIER:
153985
- bound_modifier = BindLimit((LimitModifier &)*mod);
153971
+ bound_modifier = BindLimit(order_binder, (LimitModifier &)*mod);
153986
153972
  break;
153987
153973
  case ResultModifierType::LIMIT_PERCENT_MODIFIER:
153988
- bound_modifier = BindLimitPercent((LimitPercentModifier &)*mod);
153974
+ bound_modifier = BindLimitPercent(order_binder, (LimitPercentModifier &)*mod);
153989
153975
  break;
153990
153976
  default:
153991
153977
  throw Exception("Unsupported result modifier");
@@ -153996,6 +153982,18 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
153996
153982
  }
153997
153983
  }
153998
153984
 
153985
+ static void AssignReturnType(unique_ptr<Expression> &expr, const vector<LogicalType> &sql_types,
153986
+ idx_t projection_index) {
153987
+ if (!expr) {
153988
+ return;
153989
+ }
153990
+ if (expr->type != ExpressionType::BOUND_COLUMN_REF) {
153991
+ return;
153992
+ }
153993
+ auto &bound_colref = (BoundColumnRefExpression &)*expr;
153994
+ bound_colref.return_type = sql_types[bound_colref.binding.column_index];
153995
+ }
153996
+
153999
153997
  void Binder::BindModifierTypes(BoundQueryNode &result, const vector<LogicalType> &sql_types, idx_t projection_index) {
154000
153998
  for (auto &bound_mod : result.modifiers) {
154001
153999
  switch (bound_mod->type) {
@@ -154029,6 +154027,18 @@ void Binder::BindModifierTypes(BoundQueryNode &result, const vector<LogicalType>
154029
154027
  }
154030
154028
  break;
154031
154029
  }
154030
+ case ResultModifierType::LIMIT_MODIFIER: {
154031
+ auto &limit = (BoundLimitModifier &)*bound_mod;
154032
+ AssignReturnType(limit.limit, sql_types, projection_index);
154033
+ AssignReturnType(limit.offset, sql_types, projection_index);
154034
+ break;
154035
+ }
154036
+ case ResultModifierType::LIMIT_PERCENT_MODIFIER: {
154037
+ auto &limit = (BoundLimitPercentModifier &)*bound_mod;
154038
+ AssignReturnType(limit.limit, sql_types, projection_index);
154039
+ AssignReturnType(limit.offset, sql_types, projection_index);
154040
+ break;
154041
+ }
154032
154042
  case ResultModifierType::ORDER_MODIFIER: {
154033
154043
  auto &order = (BoundOrderModifier &)*bound_mod;
154034
154044
  for (auto &order_node : order.orders) {
@@ -154657,36 +154667,6 @@ unique_ptr<LogicalOperator> Binder::CreatePlan(BoundSelectNode &statement) {
154657
154667
  PlanSubqueries(&expr, &root);
154658
154668
  }
154659
154669
 
154660
- for (size_t i = 0; i < statement.modifiers.size(); i++) {
154661
- auto &modifier = statement.modifiers[i];
154662
- unique_ptr<LogicalOperator> limit = nullptr;
154663
- if (modifier->type == ResultModifierType::LIMIT_MODIFIER) {
154664
- auto &limit_modifier = (BoundLimitModifier &)*modifier;
154665
- if (limit_modifier.limit || limit_modifier.offset) {
154666
- PlanSubqueries(&limit_modifier.limit, &root);
154667
- PlanSubqueries(&limit_modifier.offset, &root);
154668
- limit = make_unique<LogicalLimit>(limit_modifier.limit_val, limit_modifier.offset_val,
154669
- move(limit_modifier.limit), move(limit_modifier.offset));
154670
- }
154671
- } else if (modifier->type == ResultModifierType::LIMIT_PERCENT_MODIFIER) {
154672
- auto &limit_modifier = (BoundLimitPercentModifier &)*modifier;
154673
- if (limit_modifier.limit || limit_modifier.offset) {
154674
- PlanSubqueries(&limit_modifier.limit, &root);
154675
- PlanSubqueries(&limit_modifier.offset, &root);
154676
- limit = make_unique<LogicalLimitPercent>(limit_modifier.limit_percent, limit_modifier.offset_val,
154677
- move(limit_modifier.limit), move(limit_modifier.offset));
154678
- }
154679
- }
154680
- if (limit) {
154681
- limit->AddChild(move(root));
154682
- root = move(limit);
154683
- // Delete from modifiers
154684
- std::swap(statement.modifiers[i], statement.modifiers.back());
154685
- statement.modifiers.erase(statement.modifiers.end() - 1);
154686
- i--;
154687
- }
154688
- }
154689
-
154690
154670
  // create the projection
154691
154671
  auto proj = make_unique<LogicalProjection>(statement.projection_index, move(statement.select_list));
154692
154672
  auto &projection = *proj;
@@ -160261,6 +160241,12 @@ unique_ptr<Expression> OrderBinder::CreateProjectionReference(ParsedExpression &
160261
160241
  ColumnBinding(projection_index, index));
160262
160242
  }
160263
160243
 
160244
+ unique_ptr<Expression> OrderBinder::CreateExtraReference(unique_ptr<ParsedExpression> expr) {
160245
+ auto result = CreateProjectionReference(*expr, extra_list->size());
160246
+ extra_list->push_back(move(expr));
160247
+ return result;
160248
+ }
160249
+
160264
160250
  unique_ptr<Expression> OrderBinder::Bind(unique_ptr<ParsedExpression> expr) {
160265
160251
  // in the ORDER BY clause we do not bind children
160266
160252
  // we bind ONLY to the select list
@@ -160331,9 +160317,7 @@ unique_ptr<Expression> OrderBinder::Bind(unique_ptr<ParsedExpression> expr) {
160331
160317
  expr->ToString());
160332
160318
  }
160333
160319
  // otherwise we need to push the ORDER BY entry into the select list
160334
- auto result = CreateProjectionReference(*expr, extra_list->size());
160335
- extra_list->push_back(move(expr));
160336
- return result;
160320
+ return CreateExtraReference(move(expr));
160337
160321
  }
160338
160322
 
160339
160323
  } // namespace duckdb
@@ -164371,8 +164355,6 @@ void WriteOverflowStringsToDisk::AllocateNewBlock(block_id_t new_block_id) {
164371
164355
 
164372
164356
 
164373
164357
 
164374
-
164375
-
164376
164358
 
164377
164359
 
164378
164360
 
@@ -178155,8 +178137,6 @@ bool ValidityColumnData::CheckZonemap(ColumnScanState &state, TableFilter &filte
178155
178137
 
178156
178138
 
178157
178139
 
178158
-
178159
-
178160
178140
 
178161
178141
  namespace duckdb {
178162
178142
 
@@ -178674,7 +178654,6 @@ void ReplayState::ReplayCheckpoint() {
178674
178654
 
178675
178655
 
178676
178656
 
178677
-
178678
178657
  #include <cstring>
178679
178658
 
178680
178659
  namespace duckdb {
package/src/duckdb.hpp CHANGED
@@ -11,8 +11,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
11
11
  #pragma once
12
12
  #define DUCKDB_AMALGAMATION 1
13
13
  #define DUCKDB_AMALGAMATION_EXTENDED 1
14
- #define DUCKDB_SOURCE_ID "261c21b49"
15
- #define DUCKDB_VERSION "v0.3.3-dev1291"
14
+ #define DUCKDB_SOURCE_ID "299fe7466"
15
+ #define DUCKDB_VERSION "v0.3.3-dev1300"
16
16
  //===----------------------------------------------------------------------===//
17
17
  // DuckDB
18
18
  //
@@ -13540,9 +13540,10 @@ private:
13540
13540
  private:
13541
13541
  //! Bind the default values of the columns of a table
13542
13542
  void BindDefaultValues(vector<ColumnDefinition> &columns, vector<unique_ptr<Expression>> &bound_defaults);
13543
- //! Bind a delimiter value (LIMIT or OFFSET)
13544
- unique_ptr<Expression> BindDelimiter(ClientContext &context, unique_ptr<ParsedExpression> delimiter,
13545
- const LogicalType &type, Value &delimiter_value);
13543
+ //! Bind a limit value (LIMIT or OFFSET)
13544
+ unique_ptr<Expression> BindDelimiter(ClientContext &context, OrderBinder &order_binder,
13545
+ unique_ptr<ParsedExpression> delimiter, const LogicalType &type,
13546
+ Value &delimiter_value);
13546
13547
 
13547
13548
  //! Move correlated expressions from the child binder to this binder
13548
13549
  void MoveCorrelatedExpressions(Binder &other);
@@ -13603,10 +13604,6 @@ private:
13603
13604
  unique_ptr<LogicalOperator> CreatePlan(BoundExpressionListRef &ref);
13604
13605
  unique_ptr<LogicalOperator> CreatePlan(BoundCTERef &ref);
13605
13606
 
13606
- unique_ptr<LogicalOperator> BindTable(TableCatalogEntry &table, BaseTableRef &ref);
13607
- unique_ptr<LogicalOperator> BindView(ViewCatalogEntry &view, BaseTableRef &ref);
13608
- unique_ptr<LogicalOperator> BindTableOrView(BaseTableRef &ref);
13609
-
13610
13607
  BoundStatement BindCopyTo(CopyStatement &stmt);
13611
13608
  BoundStatement BindCopyFrom(CopyStatement &stmt);
13612
13609
 
@@ -13614,8 +13611,8 @@ private:
13614
13611
  void BindModifierTypes(BoundQueryNode &result, const vector<LogicalType> &sql_types, idx_t projection_index);
13615
13612
 
13616
13613
  BoundStatement BindSummarize(ShowStatement &stmt);
13617
- unique_ptr<BoundResultModifier> BindLimit(LimitModifier &limit_mod);
13618
- unique_ptr<BoundResultModifier> BindLimitPercent(LimitPercentModifier &limit_mod);
13614
+ unique_ptr<BoundResultModifier> BindLimit(OrderBinder &order_binder, LimitModifier &limit_mod);
13615
+ unique_ptr<BoundResultModifier> BindLimitPercent(OrderBinder &order_binder, LimitPercentModifier &limit_mod);
13619
13616
  unique_ptr<Expression> BindOrderExpression(OrderBinder &order_binder, unique_ptr<ParsedExpression> expr);
13620
13617
 
13621
13618
  unique_ptr<LogicalOperator> PlanFilter(unique_ptr<Expression> condition, unique_ptr<LogicalOperator> root);