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 +1 -1
- package/src/duckdb.cpp +113 -134
- package/src/duckdb.hpp +8 -11
- package/src/parquet-amalgamation.cpp +35894 -35894
package/package.json
CHANGED
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,
|
|
153874
|
-
const LogicalType &type,
|
|
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
|
-
|
|
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 "
|
|
15
|
-
#define DUCKDB_VERSION "v0.3.3-
|
|
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
|
|
13544
|
-
unique_ptr<Expression> BindDelimiter(ClientContext &context,
|
|
13545
|
-
const LogicalType &type,
|
|
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);
|