duckdb 0.3.2-dev988.0 → 0.3.2-dev992.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/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 "18ea12e8a"
15
- #define DUCKDB_VERSION "0.3.2-dev988"
14
+ #define DUCKDB_SOURCE_ID "c16a2f0cb"
15
+ #define DUCKDB_VERSION "0.3.2-dev992"
16
16
  //===----------------------------------------------------------------------===//
17
17
  // DuckDB
18
18
  //
@@ -20933,7 +20933,7 @@ private:
20933
20933
  //===----------------------------------------------------------------------===//
20934
20934
  // DuckDB
20935
20935
  //
20936
- // duckdb/parser/expression/between_expression.hpp
20936
+ // duckdb/parser/expression/star_expression.hpp
20937
20937
  //
20938
20938
  //
20939
20939
  //===----------------------------------------------------------------------===//
@@ -20942,21 +20942,25 @@ private:
20942
20942
 
20943
20943
 
20944
20944
 
20945
+
20945
20946
  namespace duckdb {
20946
20947
 
20947
- class BetweenExpression : public ParsedExpression {
20948
+ //! Represents a * expression in the SELECT clause
20949
+ class StarExpression : public ParsedExpression {
20948
20950
  public:
20949
- BetweenExpression(unique_ptr<ParsedExpression> input, unique_ptr<ParsedExpression> lower,
20950
- unique_ptr<ParsedExpression> upper);
20951
+ StarExpression(string relation_name = string());
20951
20952
 
20952
- unique_ptr<ParsedExpression> input;
20953
- unique_ptr<ParsedExpression> lower;
20954
- unique_ptr<ParsedExpression> upper;
20953
+ //! The relation name in case of tbl.*, or empty if this is a normal *
20954
+ string relation_name;
20955
+ //! List of columns to exclude from the STAR expression
20956
+ case_insensitive_set_t exclude_list;
20957
+ //! List of columns to replace with another expression
20958
+ case_insensitive_map_t<unique_ptr<ParsedExpression>> replace_list;
20955
20959
 
20956
20960
  public:
20957
20961
  string ToString() const override;
20958
20962
 
20959
- static bool Equals(const BetweenExpression *a, const BetweenExpression *b);
20963
+ static bool Equals(const StarExpression *a, const StarExpression *b);
20960
20964
 
20961
20965
  unique_ptr<ParsedExpression> Copy() const override;
20962
20966
 
@@ -20967,7 +20971,7 @@ public:
20967
20971
  //===----------------------------------------------------------------------===//
20968
20972
  // DuckDB
20969
20973
  //
20970
- // duckdb/parser/expression/positional_reference_expression.hpp
20974
+ // duckdb/parser/expression/conjunction_expression.hpp
20971
20975
  //
20972
20976
  //
20973
20977
  //===----------------------------------------------------------------------===//
@@ -20976,23 +20980,61 @@ public:
20976
20980
 
20977
20981
 
20978
20982
 
20983
+
20979
20984
  namespace duckdb {
20980
- class PositionalReferenceExpression : public ParsedExpression {
20985
+
20986
+ //! Represents a conjunction (AND/OR)
20987
+ class ConjunctionExpression : public ParsedExpression {
20981
20988
  public:
20982
- PositionalReferenceExpression(idx_t index);
20989
+ explicit ConjunctionExpression(ExpressionType type);
20990
+ ConjunctionExpression(ExpressionType type, vector<unique_ptr<ParsedExpression>> children);
20991
+ ConjunctionExpression(ExpressionType type, unique_ptr<ParsedExpression> left, unique_ptr<ParsedExpression> right);
20983
20992
 
20984
- idx_t index;
20993
+ vector<unique_ptr<ParsedExpression>> children;
20985
20994
 
20986
20995
  public:
20987
- bool IsScalar() const override {
20988
- return false;
20989
- }
20996
+ void AddExpression(unique_ptr<ParsedExpression> expr);
20990
20997
 
20991
20998
  string ToString() const override;
20992
20999
 
20993
- static bool Equals(const PositionalReferenceExpression *a, const PositionalReferenceExpression *b);
21000
+ static bool Equals(const ConjunctionExpression *a, const ConjunctionExpression *b);
21001
+
21002
+ unique_ptr<ParsedExpression> Copy() const override;
21003
+
21004
+ void Serialize(Serializer &serializer) override;
21005
+ static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
21006
+ };
21007
+ } // namespace duckdb
21008
+ //===----------------------------------------------------------------------===//
21009
+ // DuckDB
21010
+ //
21011
+ // duckdb/parser/expression/collate_expression.hpp
21012
+ //
21013
+ //
21014
+ //===----------------------------------------------------------------------===//
21015
+
21016
+
21017
+
21018
+
21019
+
21020
+ namespace duckdb {
21021
+
21022
+ //! CollateExpression represents a COLLATE statement
21023
+ class CollateExpression : public ParsedExpression {
21024
+ public:
21025
+ CollateExpression(string collation, unique_ptr<ParsedExpression> child);
21026
+
21027
+ //! The child of the cast expression
21028
+ unique_ptr<ParsedExpression> child;
21029
+ //! The collation clause
21030
+ string collation;
21031
+
21032
+ public:
21033
+ string ToString() const override;
21034
+
21035
+ static bool Equals(const CollateExpression *a, const CollateExpression *b);
21036
+
20994
21037
  unique_ptr<ParsedExpression> Copy() const override;
20995
- hash_t Hash() const override;
20996
21038
 
20997
21039
  void Serialize(Serializer &serializer) override;
20998
21040
  static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
@@ -21050,7 +21092,7 @@ public:
21050
21092
  //===----------------------------------------------------------------------===//
21051
21093
  // DuckDB
21052
21094
  //
21053
- // duckdb/parser/expression/parameter_expression.hpp
21095
+ // duckdb/parser/expression/constant_expression.hpp
21054
21096
  //
21055
21097
  //
21056
21098
  //===----------------------------------------------------------------------===//
@@ -21059,34 +21101,34 @@ public:
21059
21101
 
21060
21102
 
21061
21103
 
21104
+
21062
21105
  namespace duckdb {
21063
- class ParameterExpression : public ParsedExpression {
21106
+
21107
+ //! ConstantExpression represents a constant value in the query
21108
+ class ConstantExpression : public ParsedExpression {
21064
21109
  public:
21065
- ParameterExpression();
21110
+ explicit ConstantExpression(Value val);
21066
21111
 
21067
- idx_t parameter_nr;
21112
+ //! The constant value referenced
21113
+ Value value;
21068
21114
 
21069
21115
  public:
21070
- bool IsScalar() const override {
21071
- return true;
21072
- }
21073
- bool HasParameter() const override {
21074
- return true;
21075
- }
21076
-
21077
21116
  string ToString() const override;
21078
21117
 
21079
- unique_ptr<ParsedExpression> Copy() const override;
21118
+ static bool Equals(const ConstantExpression *a, const ConstantExpression *b);
21080
21119
  hash_t Hash() const override;
21081
21120
 
21121
+ unique_ptr<ParsedExpression> Copy() const override;
21122
+
21082
21123
  void Serialize(Serializer &serializer) override;
21083
21124
  static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
21084
21125
  };
21126
+
21085
21127
  } // namespace duckdb
21086
21128
  //===----------------------------------------------------------------------===//
21087
21129
  // DuckDB
21088
21130
  //
21089
- // duckdb/parser/expression/constant_expression.hpp
21131
+ // duckdb/parser/expression/lambda_expression.hpp
21090
21132
  //
21091
21133
  //
21092
21134
  //===----------------------------------------------------------------------===//
@@ -21098,18 +21140,19 @@ public:
21098
21140
 
21099
21141
  namespace duckdb {
21100
21142
 
21101
- //! ConstantExpression represents a constant value in the query
21102
- class ConstantExpression : public ParsedExpression {
21143
+ //! LambdaExpression represents a lambda operator that can be used for e.g. mapping an expression to a list
21144
+ //! Lambda expressions are written in the form of "capture -> expr", e.g. "x -> x + 1"
21145
+ class LambdaExpression : public ParsedExpression {
21103
21146
  public:
21104
- explicit ConstantExpression(Value val);
21147
+ LambdaExpression(vector<string> parameters, unique_ptr<ParsedExpression> expression);
21105
21148
 
21106
- //! The constant value referenced
21107
- Value value;
21149
+ vector<string> parameters;
21150
+ unique_ptr<ParsedExpression> expression;
21108
21151
 
21109
21152
  public:
21110
21153
  string ToString() const override;
21111
21154
 
21112
- static bool Equals(const ConstantExpression *a, const ConstantExpression *b);
21155
+ static bool Equals(const LambdaExpression *a, const LambdaExpression *b);
21113
21156
  hash_t Hash() const override;
21114
21157
 
21115
21158
  unique_ptr<ParsedExpression> Copy() const override;
@@ -21122,7 +21165,7 @@ public:
21122
21165
  //===----------------------------------------------------------------------===//
21123
21166
  // DuckDB
21124
21167
  //
21125
- // duckdb/parser/expression/default_expression.hpp
21168
+ // duckdb/parser/expression/positional_reference_expression.hpp
21126
21169
  //
21127
21170
  //
21128
21171
  //===----------------------------------------------------------------------===//
@@ -21132,10 +21175,11 @@ public:
21132
21175
 
21133
21176
 
21134
21177
  namespace duckdb {
21135
- //! Represents the default value of a column
21136
- class DefaultExpression : public ParsedExpression {
21178
+ class PositionalReferenceExpression : public ParsedExpression {
21137
21179
  public:
21138
- DefaultExpression();
21180
+ PositionalReferenceExpression(idx_t index);
21181
+
21182
+ idx_t index;
21139
21183
 
21140
21184
  public:
21141
21185
  bool IsScalar() const override {
@@ -21144,8 +21188,11 @@ public:
21144
21188
 
21145
21189
  string ToString() const override;
21146
21190
 
21191
+ static bool Equals(const PositionalReferenceExpression *a, const PositionalReferenceExpression *b);
21147
21192
  unique_ptr<ParsedExpression> Copy() const override;
21193
+ hash_t Hash() const override;
21148
21194
 
21195
+ void Serialize(Serializer &serializer) override;
21149
21196
  static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
21150
21197
  };
21151
21198
  } // namespace duckdb
@@ -21191,61 +21238,7 @@ public:
21191
21238
  //===----------------------------------------------------------------------===//
21192
21239
  // DuckDB
21193
21240
  //
21194
- // duckdb/parser/expression/function_expression.hpp
21195
- //
21196
- //
21197
- //===----------------------------------------------------------------------===//
21198
-
21199
-
21200
-
21201
-
21202
-
21203
-
21204
-
21205
- namespace duckdb {
21206
- //! Represents a function call
21207
- class FunctionExpression : public ParsedExpression {
21208
- public:
21209
- FunctionExpression(string schema_name, const string &function_name, vector<unique_ptr<ParsedExpression>> children,
21210
- unique_ptr<ParsedExpression> filter = nullptr, unique_ptr<OrderModifier> order_bys = nullptr,
21211
- bool distinct = false, bool is_operator = false);
21212
- FunctionExpression(const string &function_name, vector<unique_ptr<ParsedExpression>> children,
21213
- unique_ptr<ParsedExpression> filter = nullptr, unique_ptr<OrderModifier> order_bys = nullptr,
21214
- bool distinct = false, bool is_operator = false);
21215
-
21216
- //! Schema of the function
21217
- string schema;
21218
- //! Function name
21219
- string function_name;
21220
- //! Whether or not the function is an operator, only used for rendering
21221
- bool is_operator;
21222
- //! List of arguments to the function
21223
- vector<unique_ptr<ParsedExpression>> children;
21224
- //! Whether or not the aggregate function is distinct, only used for aggregates
21225
- bool distinct;
21226
- //! Expression representing a filter, only used for aggregates
21227
- unique_ptr<ParsedExpression> filter;
21228
- //! Modifier representing an ORDER BY, only used for aggregates
21229
- unique_ptr<OrderModifier> order_bys;
21230
-
21231
- public:
21232
- string ToString() const override;
21233
-
21234
- unique_ptr<ParsedExpression> Copy() const override;
21235
-
21236
- static bool Equals(const FunctionExpression *a, const FunctionExpression *b);
21237
- hash_t Hash() const override;
21238
-
21239
- //! Serializes a FunctionExpression to a stand-alone binary blob
21240
- void Serialize(Serializer &serializer) override;
21241
- //! Deserializes a blob back into an FunctionExpression
21242
- static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
21243
- };
21244
- } // namespace duckdb
21245
- //===----------------------------------------------------------------------===//
21246
- // DuckDB
21247
- //
21248
- // duckdb/parser/expression/lambda_expression.hpp
21241
+ // duckdb/parser/expression/between_expression.hpp
21249
21242
  //
21250
21243
  //
21251
21244
  //===----------------------------------------------------------------------===//
@@ -21254,30 +21247,27 @@ public:
21254
21247
 
21255
21248
 
21256
21249
 
21257
-
21258
21250
  namespace duckdb {
21259
21251
 
21260
- //! LambdaExpression represents a lambda operator that can be used for e.g. mapping an expression to a list
21261
- //! Lambda expressions are written in the form of "capture -> expr", e.g. "x -> x + 1"
21262
- class LambdaExpression : public ParsedExpression {
21252
+ class BetweenExpression : public ParsedExpression {
21263
21253
  public:
21264
- LambdaExpression(vector<string> parameters, unique_ptr<ParsedExpression> expression);
21254
+ BetweenExpression(unique_ptr<ParsedExpression> input, unique_ptr<ParsedExpression> lower,
21255
+ unique_ptr<ParsedExpression> upper);
21265
21256
 
21266
- vector<string> parameters;
21267
- unique_ptr<ParsedExpression> expression;
21257
+ unique_ptr<ParsedExpression> input;
21258
+ unique_ptr<ParsedExpression> lower;
21259
+ unique_ptr<ParsedExpression> upper;
21268
21260
 
21269
21261
  public:
21270
21262
  string ToString() const override;
21271
21263
 
21272
- static bool Equals(const LambdaExpression *a, const LambdaExpression *b);
21273
- hash_t Hash() const override;
21264
+ static bool Equals(const BetweenExpression *a, const BetweenExpression *b);
21274
21265
 
21275
21266
  unique_ptr<ParsedExpression> Copy() const override;
21276
21267
 
21277
21268
  void Serialize(Serializer &serializer) override;
21278
21269
  static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
21279
21270
  };
21280
-
21281
21271
  } // namespace duckdb
21282
21272
  //===----------------------------------------------------------------------===//
21283
21273
  // DuckDB
@@ -21312,9 +21302,6 @@ public:
21312
21302
  static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
21313
21303
  };
21314
21304
  } // namespace duckdb
21315
-
21316
-
21317
-
21318
21305
  //===----------------------------------------------------------------------===//
21319
21306
  // DuckDB
21320
21307
  //
@@ -21354,10 +21341,18 @@ public:
21354
21341
  };
21355
21342
  } // namespace duckdb
21356
21343
 
21344
+
21345
+
21346
+
21347
+
21348
+
21349
+
21350
+
21351
+
21357
21352
  //===----------------------------------------------------------------------===//
21358
21353
  // DuckDB
21359
21354
  //
21360
- // duckdb/parser/expression/collate_expression.hpp
21355
+ // duckdb/parser/expression/default_expression.hpp
21361
21356
  //
21362
21357
  //
21363
21358
  //===----------------------------------------------------------------------===//
@@ -21367,35 +21362,28 @@ public:
21367
21362
 
21368
21363
 
21369
21364
  namespace duckdb {
21370
-
21371
- //! CollateExpression represents a COLLATE statement
21372
- class CollateExpression : public ParsedExpression {
21365
+ //! Represents the default value of a column
21366
+ class DefaultExpression : public ParsedExpression {
21373
21367
  public:
21374
- CollateExpression(string collation, unique_ptr<ParsedExpression> child);
21375
-
21376
- //! The child of the cast expression
21377
- unique_ptr<ParsedExpression> child;
21378
- //! The collation clause
21379
- string collation;
21368
+ DefaultExpression();
21380
21369
 
21381
21370
  public:
21382
- string ToString() const override;
21371
+ bool IsScalar() const override {
21372
+ return false;
21373
+ }
21383
21374
 
21384
- static bool Equals(const CollateExpression *a, const CollateExpression *b);
21375
+ string ToString() const override;
21385
21376
 
21386
21377
  unique_ptr<ParsedExpression> Copy() const override;
21387
21378
 
21388
- void Serialize(Serializer &serializer) override;
21389
21379
  static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
21390
21380
  };
21391
21381
  } // namespace duckdb
21392
21382
 
21393
-
21394
-
21395
21383
  //===----------------------------------------------------------------------===//
21396
21384
  // DuckDB
21397
21385
  //
21398
- // duckdb/parser/expression/conjunction_expression.hpp
21386
+ // duckdb/parser/expression/function_expression.hpp
21399
21387
  //
21400
21388
  //
21401
21389
  //===----------------------------------------------------------------------===//
@@ -21405,35 +21393,49 @@ public:
21405
21393
 
21406
21394
 
21407
21395
 
21408
- namespace duckdb {
21409
-
21410
- //! Represents a conjunction (AND/OR)
21411
- class ConjunctionExpression : public ParsedExpression {
21412
- public:
21413
- explicit ConjunctionExpression(ExpressionType type);
21414
- ConjunctionExpression(ExpressionType type, vector<unique_ptr<ParsedExpression>> children);
21415
- ConjunctionExpression(ExpressionType type, unique_ptr<ParsedExpression> left, unique_ptr<ParsedExpression> right);
21416
-
21417
- vector<unique_ptr<ParsedExpression>> children;
21418
21396
 
21397
+ namespace duckdb {
21398
+ //! Represents a function call
21399
+ class FunctionExpression : public ParsedExpression {
21419
21400
  public:
21420
- void AddExpression(unique_ptr<ParsedExpression> expr);
21401
+ FunctionExpression(string schema_name, const string &function_name, vector<unique_ptr<ParsedExpression>> children,
21402
+ unique_ptr<ParsedExpression> filter = nullptr, unique_ptr<OrderModifier> order_bys = nullptr,
21403
+ bool distinct = false, bool is_operator = false);
21404
+ FunctionExpression(const string &function_name, vector<unique_ptr<ParsedExpression>> children,
21405
+ unique_ptr<ParsedExpression> filter = nullptr, unique_ptr<OrderModifier> order_bys = nullptr,
21406
+ bool distinct = false, bool is_operator = false);
21421
21407
 
21422
- string ToString() const override;
21408
+ //! Schema of the function
21409
+ string schema;
21410
+ //! Function name
21411
+ string function_name;
21412
+ //! Whether or not the function is an operator, only used for rendering
21413
+ bool is_operator;
21414
+ //! List of arguments to the function
21415
+ vector<unique_ptr<ParsedExpression>> children;
21416
+ //! Whether or not the aggregate function is distinct, only used for aggregates
21417
+ bool distinct;
21418
+ //! Expression representing a filter, only used for aggregates
21419
+ unique_ptr<ParsedExpression> filter;
21420
+ //! Modifier representing an ORDER BY, only used for aggregates
21421
+ unique_ptr<OrderModifier> order_bys;
21423
21422
 
21424
- static bool Equals(const ConjunctionExpression *a, const ConjunctionExpression *b);
21423
+ public:
21424
+ string ToString() const override;
21425
21425
 
21426
21426
  unique_ptr<ParsedExpression> Copy() const override;
21427
21427
 
21428
+ static bool Equals(const FunctionExpression *a, const FunctionExpression *b);
21429
+ hash_t Hash() const override;
21430
+
21431
+ //! Serializes a FunctionExpression to a stand-alone binary blob
21428
21432
  void Serialize(Serializer &serializer) override;
21433
+ //! Deserializes a blob back into an FunctionExpression
21429
21434
  static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
21430
21435
  };
21431
21436
  } // namespace duckdb
21432
21437
 
21433
21438
 
21434
-
21435
-
21436
-
21437
21439
  //===----------------------------------------------------------------------===//
21438
21440
  // DuckDB
21439
21441
  //
@@ -21469,12 +21471,10 @@ public:
21469
21471
  };
21470
21472
  } // namespace duckdb
21471
21473
 
21472
-
21473
-
21474
21474
  //===----------------------------------------------------------------------===//
21475
21475
  // DuckDB
21476
21476
  //
21477
- // duckdb/parser/expression/star_expression.hpp
21477
+ // duckdb/parser/expression/parameter_expression.hpp
21478
21478
  //
21479
21479
  //
21480
21480
  //===----------------------------------------------------------------------===//
@@ -21483,27 +21483,25 @@ public:
21483
21483
 
21484
21484
 
21485
21485
 
21486
-
21487
21486
  namespace duckdb {
21488
-
21489
- //! Represents a * expression in the SELECT clause
21490
- class StarExpression : public ParsedExpression {
21487
+ class ParameterExpression : public ParsedExpression {
21491
21488
  public:
21492
- StarExpression(string relation_name = string());
21489
+ ParameterExpression();
21493
21490
 
21494
- //! The relation name in case of tbl.*, or empty if this is a normal *
21495
- string relation_name;
21496
- //! List of columns to exclude from the STAR expression
21497
- case_insensitive_set_t exclude_list;
21498
- //! List of columns to replace with another expression
21499
- case_insensitive_map_t<unique_ptr<ParsedExpression>> replace_list;
21491
+ idx_t parameter_nr;
21500
21492
 
21501
21493
  public:
21502
- string ToString() const override;
21494
+ bool IsScalar() const override {
21495
+ return true;
21496
+ }
21497
+ bool HasParameter() const override {
21498
+ return true;
21499
+ }
21503
21500
 
21504
- static bool Equals(const StarExpression *a, const StarExpression *b);
21501
+ string ToString() const override;
21505
21502
 
21506
21503
  unique_ptr<ParsedExpression> Copy() const override;
21504
+ hash_t Hash() const override;
21507
21505
 
21508
21506
  void Serialize(Serializer &serializer) override;
21509
21507
  static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, Deserializer &source);
@@ -21512,10 +21510,12 @@ public:
21512
21510
 
21513
21511
 
21514
21512
 
21513
+
21514
+
21515
21515
  //===----------------------------------------------------------------------===//
21516
21516
  // DuckDB
21517
21517
  //
21518
- // duckdb/parser/parsed_data/create_index_info.hpp
21518
+ // duckdb/parser/parsed_data/create_type_info.hpp
21519
21519
  //
21520
21520
  //
21521
21521
  //===----------------------------------------------------------------------===//
@@ -21525,10 +21525,35 @@ public:
21525
21525
 
21526
21526
 
21527
21527
 
21528
+
21529
+
21530
+ namespace duckdb {
21531
+
21532
+ struct CreateTypeInfo : public CreateInfo {
21533
+
21534
+ CreateTypeInfo() : CreateInfo(CatalogType::TYPE_ENTRY) {
21535
+ }
21536
+
21537
+ //! Name of the Type
21538
+ string name;
21539
+ //! Shared Pointer of Logical Type
21540
+ unique_ptr<LogicalType> type;
21541
+
21542
+ public:
21543
+ unique_ptr<CreateInfo> Copy() const override {
21544
+ auto result = make_unique<CreateTypeInfo>();
21545
+ CopyProperties(*result);
21546
+ result->name = name;
21547
+ result->type = make_unique<LogicalType>(*type);
21548
+ return move(result);
21549
+ }
21550
+ };
21551
+
21552
+ } // namespace duckdb
21528
21553
  //===----------------------------------------------------------------------===//
21529
21554
  // DuckDB
21530
21555
  //
21531
- // duckdb/parser/tableref/basetableref.hpp
21556
+ // duckdb/parser/parsed_data/vacuum_info.hpp
21532
21557
  //
21533
21558
  //
21534
21559
  //===----------------------------------------------------------------------===//
@@ -21537,73 +21562,59 @@ public:
21537
21562
 
21538
21563
 
21539
21564
 
21540
-
21541
21565
  namespace duckdb {
21542
- //! Represents a TableReference to a base table in the schema
21543
- class BaseTableRef : public TableRef {
21566
+
21567
+ enum class LoadType { LOAD, INSTALL, FORCE_INSTALL };
21568
+
21569
+ struct LoadInfo : public ParseInfo {
21570
+ std::string filename;
21571
+ LoadType load_type;
21572
+
21544
21573
  public:
21545
- BaseTableRef() : TableRef(TableReferenceType::BASE_TABLE), schema_name(INVALID_SCHEMA) {
21574
+ unique_ptr<LoadInfo> Copy() const {
21575
+ auto result = make_unique<LoadInfo>();
21576
+ result->filename = filename;
21577
+ result->load_type = load_type;
21578
+ return result;
21546
21579
  }
21580
+ };
21547
21581
 
21548
- //! Schema name
21549
- string schema_name;
21550
- //! Table name
21551
- string table_name;
21552
- //! Aliases for the column names
21553
- vector<string> column_name_alias;
21582
+ } // namespace duckdb
21583
+ //===----------------------------------------------------------------------===//
21584
+ // DuckDB
21585
+ //
21586
+ // duckdb/parser/parsed_data/export_table_data.hpp
21587
+ //
21588
+ //
21589
+ //===----------------------------------------------------------------------===//
21554
21590
 
21555
- public:
21556
- string ToString() const override;
21557
- bool Equals(const TableRef *other_p) const override;
21558
21591
 
21559
- unique_ptr<TableRef> Copy() override;
21560
21592
 
21561
- //! Serializes a blob into a BaseTableRef
21562
- void Serialize(Serializer &serializer) override;
21563
- //! Deserializes a blob back into a BaseTableRef
21564
- static unique_ptr<TableRef> Deserialize(Deserializer &source);
21565
- };
21566
- } // namespace duckdb
21567
21593
 
21568
21594
 
21569
21595
 
21570
21596
  namespace duckdb {
21571
21597
 
21572
- struct CreateIndexInfo : public CreateInfo {
21573
- CreateIndexInfo() : CreateInfo(CatalogType::INDEX_ENTRY) {
21574
- }
21598
+ struct ExportedTableData {
21599
+ //! Name of the exported table
21600
+ string table_name;
21575
21601
 
21576
- //! Index Type (e.g., B+-tree, Skip-List, ...)
21577
- IndexType index_type;
21578
- //! Name of the Index
21579
- string index_name;
21580
- //! If it is an unique index
21581
- bool unique = false;
21582
- //! The table to create the index on
21583
- unique_ptr<BaseTableRef> table;
21584
- //! Set of expressions to index by
21585
- vector<unique_ptr<ParsedExpression>> expressions;
21602
+ //! Name of the schema
21603
+ string schema_name;
21586
21604
 
21587
- public:
21588
- unique_ptr<CreateInfo> Copy() const override {
21589
- auto result = make_unique<CreateIndexInfo>();
21590
- CopyProperties(*result);
21591
- result->index_type = index_type;
21592
- result->index_name = index_name;
21593
- result->unique = unique;
21594
- result->table = unique_ptr_cast<TableRef, BaseTableRef>(table->Copy());
21595
- for (auto &expr : expressions) {
21596
- result->expressions.push_back(expr->Copy());
21597
- }
21598
- return move(result);
21599
- }
21605
+ //! Path to be exported
21606
+ string file_path;
21607
+ };
21608
+
21609
+ struct BoundExportData : public ParseInfo {
21610
+ unordered_map<TableCatalogEntry *, ExportedTableData> data;
21600
21611
  };
21601
21612
 
21602
21613
  } // namespace duckdb
21603
21614
  //===----------------------------------------------------------------------===//
21604
21615
  // DuckDB
21605
21616
  //
21606
- // duckdb/parser/parsed_data/create_view_info.hpp
21617
+ // duckdb/parser/parsed_data/vacuum_info.hpp
21607
21618
  //
21608
21619
  //
21609
21620
  //===----------------------------------------------------------------------===//
@@ -21612,41 +21623,17 @@ public:
21612
21623
 
21613
21624
 
21614
21625
 
21615
-
21616
21626
  namespace duckdb {
21617
21627
 
21618
- struct CreateViewInfo : public CreateInfo {
21619
- CreateViewInfo() : CreateInfo(CatalogType::VIEW_ENTRY, INVALID_SCHEMA) {
21620
- }
21621
- CreateViewInfo(string schema, string view_name)
21622
- : CreateInfo(CatalogType::VIEW_ENTRY, schema), view_name(view_name) {
21623
- }
21624
-
21625
- //! Table name to insert to
21626
- string view_name;
21627
- //! Aliases of the view
21628
- vector<string> aliases;
21629
- //! Return types
21630
- vector<LogicalType> types;
21631
- //! The SelectStatement of the view
21632
- unique_ptr<SelectStatement> query;
21633
-
21634
- public:
21635
- unique_ptr<CreateInfo> Copy() const override {
21636
- auto result = make_unique<CreateViewInfo>(schema, view_name);
21637
- CopyProperties(*result);
21638
- result->aliases = aliases;
21639
- result->types = types;
21640
- result->query = unique_ptr_cast<SQLStatement, SelectStatement>(query->Copy());
21641
- return move(result);
21642
- }
21628
+ struct VacuumInfo : public ParseInfo {
21629
+ // nothing for now
21643
21630
  };
21644
21631
 
21645
21632
  } // namespace duckdb
21646
21633
  //===----------------------------------------------------------------------===//
21647
21634
  // DuckDB
21648
21635
  //
21649
- // duckdb/parser/parsed_data/create_pragma_function_info.hpp
21636
+ // duckdb/parser/parsed_data/create_collation_info.hpp
21650
21637
  //
21651
21638
  //
21652
21639
  //===----------------------------------------------------------------------===//
@@ -21658,25 +21645,27 @@ public:
21658
21645
 
21659
21646
  namespace duckdb {
21660
21647
 
21661
- struct CreatePragmaFunctionInfo : public CreateFunctionInfo {
21662
- explicit CreatePragmaFunctionInfo(PragmaFunction function)
21663
- : CreateFunctionInfo(CatalogType::PRAGMA_FUNCTION_ENTRY) {
21664
- functions.push_back(move(function));
21665
- this->name = function.name;
21666
- }
21667
- CreatePragmaFunctionInfo(string name, vector<PragmaFunction> functions_)
21668
- : CreateFunctionInfo(CatalogType::PRAGMA_FUNCTION_ENTRY), functions(move(functions_)) {
21669
- this->name = name;
21670
- for (auto &function : functions) {
21671
- function.name = name;
21672
- }
21648
+ struct CreateCollationInfo : public CreateInfo {
21649
+ CreateCollationInfo(string name_p, ScalarFunction function_p, bool combinable_p, bool not_required_for_equality_p)
21650
+ : CreateInfo(CatalogType::COLLATION_ENTRY), function(move(function_p)), combinable(combinable_p),
21651
+ not_required_for_equality(not_required_for_equality_p) {
21652
+ this->name = move(name_p);
21673
21653
  }
21674
21654
 
21675
- vector<PragmaFunction> functions;
21655
+ //! The name of the collation
21656
+ string name;
21657
+ //! The collation function to push in case collation is required
21658
+ ScalarFunction function;
21659
+ //! Whether or not the collation can be combined with other collations.
21660
+ bool combinable;
21661
+ //! Whether or not the collation is required for equality comparisons or not. For many collations a binary
21662
+ //! comparison for equality comparisons is correct, allowing us to skip the collation in these cases which greatly
21663
+ //! speeds up processing.
21664
+ bool not_required_for_equality;
21676
21665
 
21677
21666
  public:
21678
21667
  unique_ptr<CreateInfo> Copy() const override {
21679
- auto result = make_unique<CreatePragmaFunctionInfo>(functions[0].name, functions);
21668
+ auto result = make_unique<CreateCollationInfo>(name, function, combinable, not_required_for_equality);
21680
21669
  CopyProperties(*result);
21681
21670
  return move(result);
21682
21671
  }
@@ -21730,7 +21719,7 @@ public:
21730
21719
  //===----------------------------------------------------------------------===//
21731
21720
  // DuckDB
21732
21721
  //
21733
- // duckdb/parser/parsed_data/transaction_info.hpp
21722
+ // duckdb/parser/parsed_data/create_view_info.hpp
21734
21723
  //
21735
21724
  //
21736
21725
  //===----------------------------------------------------------------------===//
@@ -21739,23 +21728,41 @@ public:
21739
21728
 
21740
21729
 
21741
21730
 
21742
- namespace duckdb {
21743
21731
 
21744
- enum class TransactionType : uint8_t { INVALID, BEGIN_TRANSACTION, COMMIT, ROLLBACK };
21732
+ namespace duckdb {
21745
21733
 
21746
- struct TransactionInfo : public ParseInfo {
21747
- explicit TransactionInfo(TransactionType type) : type(type) {
21734
+ struct CreateViewInfo : public CreateInfo {
21735
+ CreateViewInfo() : CreateInfo(CatalogType::VIEW_ENTRY, INVALID_SCHEMA) {
21736
+ }
21737
+ CreateViewInfo(string schema, string view_name)
21738
+ : CreateInfo(CatalogType::VIEW_ENTRY, schema), view_name(view_name) {
21748
21739
  }
21749
21740
 
21750
- //! The type of transaction statement
21751
- TransactionType type;
21741
+ //! Table name to insert to
21742
+ string view_name;
21743
+ //! Aliases of the view
21744
+ vector<string> aliases;
21745
+ //! Return types
21746
+ vector<LogicalType> types;
21747
+ //! The SelectStatement of the view
21748
+ unique_ptr<SelectStatement> query;
21749
+
21750
+ public:
21751
+ unique_ptr<CreateInfo> Copy() const override {
21752
+ auto result = make_unique<CreateViewInfo>(schema, view_name);
21753
+ CopyProperties(*result);
21754
+ result->aliases = aliases;
21755
+ result->types = types;
21756
+ result->query = unique_ptr_cast<SQLStatement, SelectStatement>(query->Copy());
21757
+ return move(result);
21758
+ }
21752
21759
  };
21753
21760
 
21754
21761
  } // namespace duckdb
21755
21762
  //===----------------------------------------------------------------------===//
21756
21763
  // DuckDB
21757
21764
  //
21758
- // duckdb/parser/parsed_data/create_type_info.hpp
21765
+ // duckdb/parser/parsed_data/create_index_info.hpp
21759
21766
  //
21760
21767
  //
21761
21768
  //===----------------------------------------------------------------------===//
@@ -21765,35 +21772,10 @@ struct TransactionInfo : public ParseInfo {
21765
21772
 
21766
21773
 
21767
21774
 
21768
-
21769
-
21770
- namespace duckdb {
21771
-
21772
- struct CreateTypeInfo : public CreateInfo {
21773
-
21774
- CreateTypeInfo() : CreateInfo(CatalogType::TYPE_ENTRY) {
21775
- }
21776
-
21777
- //! Name of the Type
21778
- string name;
21779
- //! Shared Pointer of Logical Type
21780
- unique_ptr<LogicalType> type;
21781
-
21782
- public:
21783
- unique_ptr<CreateInfo> Copy() const override {
21784
- auto result = make_unique<CreateTypeInfo>();
21785
- CopyProperties(*result);
21786
- result->name = name;
21787
- result->type = make_unique<LogicalType>(*type);
21788
- return move(result);
21789
- }
21790
- };
21791
-
21792
- } // namespace duckdb
21793
21775
  //===----------------------------------------------------------------------===//
21794
21776
  // DuckDB
21795
21777
  //
21796
- // duckdb/parser/parsed_data/vacuum_info.hpp
21778
+ // duckdb/parser/tableref/basetableref.hpp
21797
21779
  //
21798
21780
  //
21799
21781
  //===----------------------------------------------------------------------===//
@@ -21802,61 +21784,64 @@ public:
21802
21784
 
21803
21785
 
21804
21786
 
21805
- namespace duckdb {
21806
-
21807
- enum class LoadType { LOAD, INSTALL, FORCE_INSTALL };
21808
-
21809
- struct LoadInfo : public ParseInfo {
21810
- std::string filename;
21811
- LoadType load_type;
21812
21787
 
21788
+ namespace duckdb {
21789
+ //! Represents a TableReference to a base table in the schema
21790
+ class BaseTableRef : public TableRef {
21813
21791
  public:
21814
- unique_ptr<LoadInfo> Copy() const {
21815
- auto result = make_unique<LoadInfo>();
21816
- result->filename = filename;
21817
- result->load_type = load_type;
21818
- return result;
21792
+ BaseTableRef() : TableRef(TableReferenceType::BASE_TABLE), schema_name(INVALID_SCHEMA) {
21819
21793
  }
21820
- };
21821
21794
 
21822
- } // namespace duckdb
21823
- //===----------------------------------------------------------------------===//
21824
- // DuckDB
21825
- //
21826
- // duckdb/parser/parsed_data/create_collation_info.hpp
21827
- //
21828
- //
21829
- //===----------------------------------------------------------------------===//
21795
+ //! Schema name
21796
+ string schema_name;
21797
+ //! Table name
21798
+ string table_name;
21799
+ //! Aliases for the column names
21800
+ vector<string> column_name_alias;
21830
21801
 
21802
+ public:
21803
+ string ToString() const override;
21804
+ bool Equals(const TableRef *other_p) const override;
21831
21805
 
21806
+ unique_ptr<TableRef> Copy() override;
21832
21807
 
21808
+ //! Serializes a blob into a BaseTableRef
21809
+ void Serialize(Serializer &serializer) override;
21810
+ //! Deserializes a blob back into a BaseTableRef
21811
+ static unique_ptr<TableRef> Deserialize(Deserializer &source);
21812
+ };
21813
+ } // namespace duckdb
21833
21814
 
21834
21815
 
21835
21816
 
21836
21817
  namespace duckdb {
21837
21818
 
21838
- struct CreateCollationInfo : public CreateInfo {
21839
- CreateCollationInfo(string name_p, ScalarFunction function_p, bool combinable_p, bool not_required_for_equality_p)
21840
- : CreateInfo(CatalogType::COLLATION_ENTRY), function(move(function_p)), combinable(combinable_p),
21841
- not_required_for_equality(not_required_for_equality_p) {
21842
- this->name = move(name_p);
21819
+ struct CreateIndexInfo : public CreateInfo {
21820
+ CreateIndexInfo() : CreateInfo(CatalogType::INDEX_ENTRY) {
21843
21821
  }
21844
21822
 
21845
- //! The name of the collation
21846
- string name;
21847
- //! The collation function to push in case collation is required
21848
- ScalarFunction function;
21849
- //! Whether or not the collation can be combined with other collations.
21850
- bool combinable;
21851
- //! Whether or not the collation is required for equality comparisons or not. For many collations a binary
21852
- //! comparison for equality comparisons is correct, allowing us to skip the collation in these cases which greatly
21853
- //! speeds up processing.
21854
- bool not_required_for_equality;
21823
+ //! Index Type (e.g., B+-tree, Skip-List, ...)
21824
+ IndexType index_type;
21825
+ //! Name of the Index
21826
+ string index_name;
21827
+ //! If it is an unique index
21828
+ bool unique = false;
21829
+ //! The table to create the index on
21830
+ unique_ptr<BaseTableRef> table;
21831
+ //! Set of expressions to index by
21832
+ vector<unique_ptr<ParsedExpression>> expressions;
21855
21833
 
21856
21834
  public:
21857
21835
  unique_ptr<CreateInfo> Copy() const override {
21858
- auto result = make_unique<CreateCollationInfo>(name, function, combinable, not_required_for_equality);
21836
+ auto result = make_unique<CreateIndexInfo>();
21859
21837
  CopyProperties(*result);
21838
+ result->index_type = index_type;
21839
+ result->index_name = index_name;
21840
+ result->unique = unique;
21841
+ result->table = unique_ptr_cast<TableRef, BaseTableRef>(table->Copy());
21842
+ for (auto &expr : expressions) {
21843
+ result->expressions.push_back(expr->Copy());
21844
+ }
21860
21845
  return move(result);
21861
21846
  }
21862
21847
  };
@@ -21865,7 +21850,7 @@ public:
21865
21850
  //===----------------------------------------------------------------------===//
21866
21851
  // DuckDB
21867
21852
  //
21868
- // duckdb/parser/parsed_data/create_schema_info.hpp
21853
+ // duckdb/parser/parsed_data/show_select_info.hpp
21869
21854
  //
21870
21855
  //
21871
21856
  //===----------------------------------------------------------------------===//
@@ -21874,17 +21859,26 @@ public:
21874
21859
 
21875
21860
 
21876
21861
 
21862
+
21877
21863
  namespace duckdb {
21878
21864
 
21879
- struct CreateSchemaInfo : public CreateInfo {
21880
- CreateSchemaInfo() : CreateInfo(CatalogType::SCHEMA_ENTRY) {
21881
- }
21865
+ struct ShowSelectInfo : public ParseInfo {
21866
+ //! Types of projected columns
21867
+ vector<LogicalType> types;
21868
+ //! The QueryNode of select query
21869
+ unique_ptr<QueryNode> query;
21870
+ //! Aliases of projected columns
21871
+ vector<string> aliases;
21872
+ //! Whether or not we are requesting a summary or a describe
21873
+ bool is_summary;
21882
21874
 
21883
- public:
21884
- unique_ptr<CreateInfo> Copy() const override {
21885
- auto result = make_unique<CreateSchemaInfo>();
21886
- CopyProperties(*result);
21887
- return move(result);
21875
+ unique_ptr<ShowSelectInfo> Copy() {
21876
+ auto result = make_unique<ShowSelectInfo>();
21877
+ result->types = types;
21878
+ result->query = query->Copy();
21879
+ result->aliases = aliases;
21880
+ result->is_summary = is_summary;
21881
+ return result;
21888
21882
  }
21889
21883
  };
21890
21884
 
@@ -21892,7 +21886,7 @@ public:
21892
21886
  //===----------------------------------------------------------------------===//
21893
21887
  // DuckDB
21894
21888
  //
21895
- // duckdb/parser/parsed_data/vacuum_info.hpp
21889
+ // duckdb/parser/parsed_data/transaction_info.hpp
21896
21890
  //
21897
21891
  //
21898
21892
  //===----------------------------------------------------------------------===//
@@ -21903,26 +21897,21 @@ public:
21903
21897
 
21904
21898
  namespace duckdb {
21905
21899
 
21906
- struct VacuumInfo : public ParseInfo {
21907
- // nothing for now
21908
- };
21909
-
21910
- } // namespace duckdb
21911
- //===----------------------------------------------------------------------===//
21912
- // DuckDB
21913
- //
21914
- // duckdb/parser/parsed_data/create_macro_info.hpp
21915
- //
21916
- //
21917
- //===----------------------------------------------------------------------===//
21918
-
21900
+ enum class TransactionType : uint8_t { INVALID, BEGIN_TRANSACTION, COMMIT, ROLLBACK };
21919
21901
 
21902
+ struct TransactionInfo : public ParseInfo {
21903
+ explicit TransactionInfo(TransactionType type) : type(type) {
21904
+ }
21920
21905
 
21906
+ //! The type of transaction statement
21907
+ TransactionType type;
21908
+ };
21921
21909
 
21910
+ } // namespace duckdb
21922
21911
  //===----------------------------------------------------------------------===//
21923
21912
  // DuckDB
21924
21913
  //
21925
- // duckdb/function/macro_function.hpp
21914
+ // duckdb/parser/parsed_data/create_schema_info.hpp
21926
21915
  //
21927
21916
  //
21928
21917
  //===----------------------------------------------------------------------===//
@@ -21931,48 +21920,55 @@ struct VacuumInfo : public ParseInfo {
21931
21920
 
21932
21921
 
21933
21922
 
21934
-
21935
-
21936
-
21937
21923
  namespace duckdb {
21938
21924
 
21939
- class MacroCatalogEntry;
21940
-
21941
- class MacroFunction {
21942
- public:
21943
- explicit MacroFunction(unique_ptr<ParsedExpression> expression);
21944
-
21945
- //! Check whether the supplied arguments are valid
21946
- static string ValidateArguments(MacroCatalogEntry &macro_func, FunctionExpression &function_expr,
21947
- vector<unique_ptr<ParsedExpression>> &positionals,
21948
- unordered_map<string, unique_ptr<ParsedExpression>> &defaults);
21949
- //! The macro expression
21950
- unique_ptr<ParsedExpression> expression;
21951
- //! The positional parameters
21952
- vector<unique_ptr<ParsedExpression>> parameters;
21953
- //! The default parameters and their associated values
21954
- unordered_map<string, unique_ptr<ParsedExpression>> default_parameters;
21925
+ struct CreateSchemaInfo : public CreateInfo {
21926
+ CreateSchemaInfo() : CreateInfo(CatalogType::SCHEMA_ENTRY) {
21927
+ }
21955
21928
 
21956
21929
  public:
21957
- unique_ptr<MacroFunction> Copy();
21930
+ unique_ptr<CreateInfo> Copy() const override {
21931
+ auto result = make_unique<CreateSchemaInfo>();
21932
+ CopyProperties(*result);
21933
+ return move(result);
21934
+ }
21958
21935
  };
21959
21936
 
21960
21937
  } // namespace duckdb
21938
+ //===----------------------------------------------------------------------===//
21939
+ // DuckDB
21940
+ //
21941
+ // duckdb/parser/parsed_data/create_pragma_function_info.hpp
21942
+ //
21943
+ //
21944
+ //===----------------------------------------------------------------------===//
21945
+
21946
+
21947
+
21948
+
21961
21949
 
21962
21950
 
21963
21951
  namespace duckdb {
21964
21952
 
21965
- struct CreateMacroInfo : public CreateFunctionInfo {
21966
- CreateMacroInfo() : CreateFunctionInfo(CatalogType::MACRO_ENTRY, INVALID_SCHEMA) {
21953
+ struct CreatePragmaFunctionInfo : public CreateFunctionInfo {
21954
+ explicit CreatePragmaFunctionInfo(PragmaFunction function)
21955
+ : CreateFunctionInfo(CatalogType::PRAGMA_FUNCTION_ENTRY) {
21956
+ functions.push_back(move(function));
21957
+ this->name = function.name;
21958
+ }
21959
+ CreatePragmaFunctionInfo(string name, vector<PragmaFunction> functions_)
21960
+ : CreateFunctionInfo(CatalogType::PRAGMA_FUNCTION_ENTRY), functions(move(functions_)) {
21961
+ this->name = name;
21962
+ for (auto &function : functions) {
21963
+ function.name = name;
21964
+ }
21967
21965
  }
21968
21966
 
21969
- unique_ptr<MacroFunction> function;
21967
+ vector<PragmaFunction> functions;
21970
21968
 
21971
21969
  public:
21972
21970
  unique_ptr<CreateInfo> Copy() const override {
21973
- auto result = make_unique<CreateMacroInfo>();
21974
- result->function = function->Copy();
21975
- result->name = name;
21971
+ auto result = make_unique<CreatePragmaFunctionInfo>(functions[0].name, functions);
21976
21972
  CopyProperties(*result);
21977
21973
  return move(result);
21978
21974
  }
@@ -22023,7 +22019,7 @@ public:
22023
22019
  //===----------------------------------------------------------------------===//
22024
22020
  // DuckDB
22025
22021
  //
22026
- // duckdb/parser/parsed_data/export_table_data.hpp
22022
+ // duckdb/parser/parsed_data/create_macro_info.hpp
22027
22023
  //
22028
22024
  //
22029
22025
  //===----------------------------------------------------------------------===//
@@ -22031,58 +22027,62 @@ public:
22031
22027
 
22032
22028
 
22033
22029
 
22030
+ //===----------------------------------------------------------------------===//
22031
+ // DuckDB
22032
+ //
22033
+ // duckdb/function/macro_function.hpp
22034
+ //
22035
+ //
22036
+ //===----------------------------------------------------------------------===//
22034
22037
 
22035
22038
 
22036
- namespace duckdb {
22037
22039
 
22038
- struct ExportedTableData {
22039
- //! Name of the exported table
22040
- string table_name;
22041
22040
 
22042
- //! Name of the schema
22043
- string schema_name;
22044
22041
 
22045
- //! Path to be exported
22046
- string file_path;
22047
- };
22048
22042
 
22049
- struct BoundExportData : public ParseInfo {
22050
- unordered_map<TableCatalogEntry *, ExportedTableData> data;
22051
- };
22052
22043
 
22053
- } // namespace duckdb
22054
- //===----------------------------------------------------------------------===//
22055
- // DuckDB
22056
- //
22057
- // duckdb/parser/parsed_data/show_select_info.hpp
22058
- //
22059
- //
22060
- //===----------------------------------------------------------------------===//
22061
22044
 
22045
+ namespace duckdb {
22046
+
22047
+ class MacroCatalogEntry;
22048
+
22049
+ class MacroFunction {
22050
+ public:
22051
+ explicit MacroFunction(unique_ptr<ParsedExpression> expression);
22062
22052
 
22053
+ //! Check whether the supplied arguments are valid
22054
+ static string ValidateArguments(MacroCatalogEntry &macro_func, FunctionExpression &function_expr,
22055
+ vector<unique_ptr<ParsedExpression>> &positionals,
22056
+ unordered_map<string, unique_ptr<ParsedExpression>> &defaults);
22057
+ //! The macro expression
22058
+ unique_ptr<ParsedExpression> expression;
22059
+ //! The positional parameters
22060
+ vector<unique_ptr<ParsedExpression>> parameters;
22061
+ //! The default parameters and their associated values
22062
+ unordered_map<string, unique_ptr<ParsedExpression>> default_parameters;
22063
22063
 
22064
+ public:
22065
+ unique_ptr<MacroFunction> Copy();
22066
+ };
22064
22067
 
22068
+ } // namespace duckdb
22065
22069
 
22066
22070
 
22067
22071
  namespace duckdb {
22068
22072
 
22069
- struct ShowSelectInfo : public ParseInfo {
22070
- //! Types of projected columns
22071
- vector<LogicalType> types;
22072
- //! The QueryNode of select query
22073
- unique_ptr<QueryNode> query;
22074
- //! Aliases of projected columns
22075
- vector<string> aliases;
22076
- //! Whether or not we are requesting a summary or a describe
22077
- bool is_summary;
22073
+ struct CreateMacroInfo : public CreateFunctionInfo {
22074
+ CreateMacroInfo() : CreateFunctionInfo(CatalogType::MACRO_ENTRY, INVALID_SCHEMA) {
22075
+ }
22078
22076
 
22079
- unique_ptr<ShowSelectInfo> Copy() {
22080
- auto result = make_unique<ShowSelectInfo>();
22081
- result->types = types;
22082
- result->query = query->Copy();
22083
- result->aliases = aliases;
22084
- result->is_summary = is_summary;
22085
- return result;
22077
+ unique_ptr<MacroFunction> function;
22078
+
22079
+ public:
22080
+ unique_ptr<CreateInfo> Copy() const override {
22081
+ auto result = make_unique<CreateMacroInfo>();
22082
+ result->function = function->Copy();
22083
+ result->name = name;
22084
+ CopyProperties(*result);
22085
+ return move(result);
22086
22086
  }
22087
22087
  };
22088
22088
 
@@ -22125,47 +22125,6 @@ public:
22125
22125
  //===----------------------------------------------------------------------===//
22126
22126
  // DuckDB
22127
22127
  //
22128
- // duckdb/parser/tableref/table_function_ref.hpp
22129
- //
22130
- //
22131
- //===----------------------------------------------------------------------===//
22132
-
22133
-
22134
-
22135
-
22136
-
22137
-
22138
-
22139
-
22140
- namespace duckdb {
22141
- //! Represents a Table producing function
22142
- class TableFunctionRef : public TableRef {
22143
- public:
22144
- TableFunctionRef() : TableRef(TableReferenceType::TABLE_FUNCTION) {
22145
- }
22146
-
22147
- unique_ptr<ParsedExpression> function;
22148
- vector<string> column_name_alias;
22149
-
22150
- // if the function takes a subquery as argument its in here
22151
- unique_ptr<SelectStatement> subquery;
22152
-
22153
- public:
22154
- string ToString() const override;
22155
-
22156
- bool Equals(const TableRef *other_p) const override;
22157
-
22158
- unique_ptr<TableRef> Copy() override;
22159
-
22160
- //! Serializes a blob into a BaseTableRef
22161
- void Serialize(Serializer &serializer) override;
22162
- //! Deserializes a blob back into a BaseTableRef
22163
- static unique_ptr<TableRef> Deserialize(Deserializer &source);
22164
- };
22165
- } // namespace duckdb
22166
- //===----------------------------------------------------------------------===//
22167
- // DuckDB
22168
- //
22169
22128
  // duckdb/parser/tableref/crossproductref.hpp
22170
22129
  //
22171
22130
  //
@@ -22198,12 +22157,10 @@ public:
22198
22157
  static unique_ptr<TableRef> Deserialize(Deserializer &source);
22199
22158
  };
22200
22159
  } // namespace duckdb
22201
-
22202
-
22203
22160
  //===----------------------------------------------------------------------===//
22204
22161
  // DuckDB
22205
22162
  //
22206
- // duckdb/parser/tableref/emptytableref.hpp
22163
+ // duckdb/parser/tableref/joinref.hpp
22207
22164
  //
22208
22165
  //
22209
22166
  //===----------------------------------------------------------------------===//
@@ -22212,25 +22169,41 @@ public:
22212
22169
 
22213
22170
 
22214
22171
 
22172
+
22173
+
22174
+
22175
+
22215
22176
  namespace duckdb {
22216
- //! Represents a cross product
22217
- class EmptyTableRef : public TableRef {
22177
+ //! Represents a JOIN between two expressions
22178
+ class JoinRef : public TableRef {
22218
22179
  public:
22219
- EmptyTableRef() : TableRef(TableReferenceType::EMPTY) {
22180
+ JoinRef() : TableRef(TableReferenceType::JOIN), is_natural(false) {
22220
22181
  }
22221
22182
 
22183
+ //! The left hand side of the join
22184
+ unique_ptr<TableRef> left;
22185
+ //! The right hand side of the join
22186
+ unique_ptr<TableRef> right;
22187
+ //! The join condition
22188
+ unique_ptr<ParsedExpression> condition;
22189
+ //! The join type
22190
+ JoinType type;
22191
+ //! Natural join
22192
+ bool is_natural;
22193
+ //! The set of USING columns (if any)
22194
+ vector<string> using_columns;
22195
+
22222
22196
  public:
22223
22197
  bool Equals(const TableRef *other_p) const override;
22224
22198
 
22225
22199
  unique_ptr<TableRef> Copy() override;
22226
22200
 
22227
- //! Serializes a blob into a DummyTableRef
22201
+ //! Serializes a blob into a JoinRef
22228
22202
  void Serialize(Serializer &serializer) override;
22229
- //! Deserializes a blob back into a DummyTableRef
22203
+ //! Deserializes a blob back into a JoinRef
22230
22204
  static unique_ptr<TableRef> Deserialize(Deserializer &source);
22231
22205
  };
22232
22206
  } // namespace duckdb
22233
-
22234
22207
  //===----------------------------------------------------------------------===//
22235
22208
  // DuckDB
22236
22209
  //
@@ -22271,11 +22244,10 @@ public:
22271
22244
  static unique_ptr<TableRef> Deserialize(Deserializer &source);
22272
22245
  };
22273
22246
  } // namespace duckdb
22274
-
22275
22247
  //===----------------------------------------------------------------------===//
22276
22248
  // DuckDB
22277
22249
  //
22278
- // duckdb/parser/tableref/joinref.hpp
22250
+ // duckdb/parser/tableref/emptytableref.hpp
22279
22251
  //
22280
22252
  //
22281
22253
  //===----------------------------------------------------------------------===//
@@ -22284,41 +22256,69 @@ public:
22284
22256
 
22285
22257
 
22286
22258
 
22259
+ namespace duckdb {
22260
+ //! Represents a cross product
22261
+ class EmptyTableRef : public TableRef {
22262
+ public:
22263
+ EmptyTableRef() : TableRef(TableReferenceType::EMPTY) {
22264
+ }
22265
+
22266
+ public:
22267
+ bool Equals(const TableRef *other_p) const override;
22268
+
22269
+ unique_ptr<TableRef> Copy() override;
22270
+
22271
+ //! Serializes a blob into a DummyTableRef
22272
+ void Serialize(Serializer &serializer) override;
22273
+ //! Deserializes a blob back into a DummyTableRef
22274
+ static unique_ptr<TableRef> Deserialize(Deserializer &source);
22275
+ };
22276
+ } // namespace duckdb
22277
+ //===----------------------------------------------------------------------===//
22278
+ // DuckDB
22279
+ //
22280
+ // duckdb/parser/tableref/table_function_ref.hpp
22281
+ //
22282
+ //
22283
+ //===----------------------------------------------------------------------===//
22284
+
22285
+
22286
+
22287
+
22287
22288
 
22288
22289
 
22289
22290
 
22290
22291
 
22291
22292
  namespace duckdb {
22292
- //! Represents a JOIN between two expressions
22293
- class JoinRef : public TableRef {
22293
+ //! Represents a Table producing function
22294
+ class TableFunctionRef : public TableRef {
22294
22295
  public:
22295
- JoinRef() : TableRef(TableReferenceType::JOIN), is_natural(false) {
22296
+ TableFunctionRef() : TableRef(TableReferenceType::TABLE_FUNCTION) {
22296
22297
  }
22297
22298
 
22298
- //! The left hand side of the join
22299
- unique_ptr<TableRef> left;
22300
- //! The right hand side of the join
22301
- unique_ptr<TableRef> right;
22302
- //! The join condition
22303
- unique_ptr<ParsedExpression> condition;
22304
- //! The join type
22305
- JoinType type;
22306
- //! Natural join
22307
- bool is_natural;
22308
- //! The set of USING columns (if any)
22309
- vector<string> using_columns;
22299
+ unique_ptr<ParsedExpression> function;
22300
+ vector<string> column_name_alias;
22301
+
22302
+ // if the function takes a subquery as argument its in here
22303
+ unique_ptr<SelectStatement> subquery;
22310
22304
 
22311
22305
  public:
22306
+ string ToString() const override;
22307
+
22312
22308
  bool Equals(const TableRef *other_p) const override;
22313
22309
 
22314
22310
  unique_ptr<TableRef> Copy() override;
22315
22311
 
22316
- //! Serializes a blob into a JoinRef
22312
+ //! Serializes a blob into a BaseTableRef
22317
22313
  void Serialize(Serializer &serializer) override;
22318
- //! Deserializes a blob back into a JoinRef
22314
+ //! Deserializes a blob back into a BaseTableRef
22319
22315
  static unique_ptr<TableRef> Deserialize(Deserializer &source);
22320
22316
  };
22321
22317
  } // namespace duckdb
22322
22318
 
22323
22319
 
22324
22320
 
22321
+
22322
+
22323
+
22324
+