1 | // this file is used to instantiate symbols for LLDB so e.g. |
2 | // std::vector and std::unique_ptr can be accessed from the debugger |
3 | |
4 | #ifdef DEBUG |
5 | |
6 | #include "duckdb/catalog/catalog.hpp" |
7 | #include "duckdb/catalog/catalog_entry/list.hpp" |
8 | #include "duckdb/common/types/chunk_collection.hpp" |
9 | #include "duckdb/execution/aggregate_hashtable.hpp" |
10 | #include "duckdb/execution/column_binding_resolver.hpp" |
11 | #include "duckdb/execution/join_hashtable.hpp" |
12 | #include "duckdb/execution/physical_operator.hpp" |
13 | #include "duckdb/main/materialized_query_result.hpp" |
14 | #include "duckdb/main/query_profiler.hpp" |
15 | #include "duckdb/main/query_result.hpp" |
16 | #include "duckdb/main/stream_query_result.hpp" |
17 | #include "duckdb/main/relation.hpp" |
18 | #include "duckdb/optimizer/join_order_optimizer.hpp" |
19 | #include "duckdb/optimizer/rule.hpp" |
20 | #include "duckdb/parser/constraint.hpp" |
21 | #include "duckdb/parser/constraints/list.hpp" |
22 | #include "duckdb/parser/expression/list.hpp" |
23 | #include "duckdb/parser/query_node.hpp" |
24 | #include "duckdb/parser/query_node/select_node.hpp" |
25 | #include "duckdb/parser/query_node/set_operation_node.hpp" |
26 | #include "duckdb/parser/statement/list.hpp" |
27 | #include "duckdb/planner/expression/list.hpp" |
28 | #include "duckdb/planner/logical_operator.hpp" |
29 | #include "duckdb/planner/operator/list.hpp" |
30 | #include "duckdb/planner/operator/logical_join.hpp" |
31 | #include "duckdb/planner/query_node/bound_select_node.hpp" |
32 | #include "duckdb/planner/query_node/bound_set_operation_node.hpp" |
33 | #include "duckdb/storage/data_table.hpp" |
34 | #include "duckdb/storage/write_ahead_log.hpp" |
35 | #include "duckdb/transaction/transaction.hpp" |
36 | #include "duckdb/parser/tableref/list.hpp" |
37 | |
38 | using namespace duckdb; |
39 | using namespace std; |
40 | template class std::unique_ptr<SQLStatement>; |
41 | template class std::unique_ptr<AlterTableStatement>; |
42 | template class std::unique_ptr<CopyStatement>; |
43 | template class std::unique_ptr<CreateStatement>; |
44 | template class std::unique_ptr<DeleteStatement>; |
45 | template class std::unique_ptr<DropStatement>; |
46 | template class std::unique_ptr<InsertStatement>; |
47 | template class std::unique_ptr<SelectStatement>; |
48 | template class std::unique_ptr<TransactionStatement>; |
49 | template class std::unique_ptr<UpdateStatement>; |
50 | template class std::unique_ptr<PrepareStatement>; |
51 | template class std::unique_ptr<ExecuteStatement>; |
52 | template class std::unique_ptr<QueryNode>; |
53 | template class std::unique_ptr<SelectNode>; |
54 | template class std::unique_ptr<SetOperationNode>; |
55 | template class std::unique_ptr<ParsedExpression>; |
56 | template class std::unique_ptr<CaseExpression>; |
57 | template class std::unique_ptr<CastExpression>; |
58 | template class std::unique_ptr<ColumnRefExpression>; |
59 | template class std::unique_ptr<ComparisonExpression>; |
60 | template class std::unique_ptr<ConjunctionExpression>; |
61 | template class std::unique_ptr<ConstantExpression>; |
62 | template class std::unique_ptr<DefaultExpression>; |
63 | template class std::unique_ptr<FunctionExpression>; |
64 | template class std::unique_ptr<OperatorExpression>; |
65 | template class std::unique_ptr<ParameterExpression>; |
66 | template class std::unique_ptr<PreparedStatementData>; |
67 | template class std::unique_ptr<StarExpression>; |
68 | template class std::unique_ptr<SubqueryExpression>; |
69 | template class std::unique_ptr<WindowExpression>; |
70 | template class std::unique_ptr<Constraint>; |
71 | template class std::unique_ptr<NotNullConstraint>; |
72 | template class std::unique_ptr<CheckConstraint>; |
73 | template class std::unique_ptr<UniqueConstraint>; |
74 | // template class std::unique_ptr<TableRef>; |
75 | template class std::unique_ptr<BaseTableRef>; |
76 | template class std::unique_ptr<CrossProductRef>; |
77 | template class std::unique_ptr<JoinRef>; |
78 | template class std::unique_ptr<SubqueryRef>; |
79 | template class std::unique_ptr<TableFunctionRef>; |
80 | |
81 | template class std::unique_ptr<Expression>; |
82 | template class std::unique_ptr<BoundQueryNode>; |
83 | template class std::unique_ptr<BoundSelectNode>; |
84 | template class std::unique_ptr<BoundSetOperationNode>; |
85 | template class std::unique_ptr<BoundAggregateExpression>; |
86 | template class std::unique_ptr<BoundCaseExpression>; |
87 | template class std::unique_ptr<BoundCastExpression>; |
88 | template class std::unique_ptr<BoundColumnRefExpression>; |
89 | template class std::unique_ptr<BoundComparisonExpression>; |
90 | template class std::unique_ptr<BoundConjunctionExpression>; |
91 | template class std::unique_ptr<BoundConstantExpression>; |
92 | template class std::unique_ptr<BoundDefaultExpression>; |
93 | template class std::unique_ptr<BoundFunctionExpression>; |
94 | template class std::unique_ptr<BoundOperatorExpression>; |
95 | template class std::unique_ptr<BoundParameterExpression>; |
96 | template class std::unique_ptr<BoundReferenceExpression>; |
97 | template class std::unique_ptr<BoundSubqueryExpression>; |
98 | template class std::unique_ptr<BoundWindowExpression>; |
99 | template class std::unique_ptr<CommonSubExpression>; |
100 | |
101 | template class std::unique_ptr<CatalogEntry>; |
102 | template class std::unique_ptr<BindContext>; |
103 | template class std::unique_ptr<char[]>; |
104 | template class std::unique_ptr<QueryResult>; |
105 | template class std::unique_ptr<MaterializedQueryResult>; |
106 | template class std::unique_ptr<StreamQueryResult>; |
107 | template class std::unique_ptr<LogicalOperator>; |
108 | template class std::unique_ptr<PhysicalOperator>; |
109 | template class std::unique_ptr<PhysicalOperatorState>; |
110 | template class std::unique_ptr<sel_t[]>; |
111 | template class std::unique_ptr<StringHeap>; |
112 | template class std::unique_ptr<SuperLargeHashTable>; |
113 | template class std::unique_ptr<TableRef>; |
114 | template class std::unique_ptr<Transaction>; |
115 | template class std::unique_ptr<uint64_t[]>; |
116 | template class std::unique_ptr<data_t[]>; |
117 | template class std::unique_ptr<Vector[]>; |
118 | template class std::unique_ptr<DataChunk>; |
119 | template class std::unique_ptr<JoinHashTable>; |
120 | template class std::unique_ptr<JoinHashTable::ScanStructure>; |
121 | template class std::unique_ptr<data_ptr_t[]>; |
122 | template class std::unique_ptr<Rule>; |
123 | template class std::unique_ptr<LogicalFilter>; |
124 | template class std::unique_ptr<LogicalJoin>; |
125 | template class std::unique_ptr<LogicalComparisonJoin>; |
126 | template class std::unique_ptr<FilterInfo>; |
127 | template class std::unique_ptr<JoinOrderOptimizer::JoinNode>; |
128 | template class std::unique_ptr<SingleJoinRelation>; |
129 | template class std::shared_ptr<Relation>; |
130 | template class std::unique_ptr<CatalogSet>; |
131 | template class std::unique_ptr<PreparedStatementCatalogEntry>; |
132 | template class std::unique_ptr<Binder>; |
133 | |
134 | #define INSTANTIATE_VECTOR(VECTOR_DEFINITION) \ |
135 | template VECTOR_DEFINITION::size_type VECTOR_DEFINITION::size() const; \ |
136 | template VECTOR_DEFINITION::const_reference VECTOR_DEFINITION::operator[](VECTOR_DEFINITION::size_type n) const; \ |
137 | template VECTOR_DEFINITION::reference VECTOR_DEFINITION::operator[](VECTOR_DEFINITION::size_type n); \ |
138 | template VECTOR_DEFINITION::const_reference VECTOR_DEFINITION::back() const; \ |
139 | template VECTOR_DEFINITION::reference VECTOR_DEFINITION::back(); \ |
140 | template VECTOR_DEFINITION::const_reference VECTOR_DEFINITION::front() const; \ |
141 | template VECTOR_DEFINITION::reference VECTOR_DEFINITION::front(); |
142 | |
143 | INSTANTIATE_VECTOR(std::vector<ColumnDefinition>); |
144 | template class std::vector<ExpressionType>; |
145 | INSTANTIATE_VECTOR(std::vector<JoinCondition>); |
146 | INSTANTIATE_VECTOR(std::vector<OrderByNode>); |
147 | template class std::vector<uint64_t>; |
148 | template class std::vector<string>; |
149 | INSTANTIATE_VECTOR(std::vector<Expression *>) |
150 | INSTANTIATE_VECTOR(std::vector<std::unique_ptr<Expression>>) |
151 | INSTANTIATE_VECTOR(std::vector<std::unique_ptr<DataChunk>>); |
152 | INSTANTIATE_VECTOR(std::vector<std::unique_ptr<SQLStatement>>); |
153 | INSTANTIATE_VECTOR(std::vector<std::unique_ptr<PhysicalOperator>>); |
154 | INSTANTIATE_VECTOR(std::vector<std::unique_ptr<LogicalOperator>>); |
155 | INSTANTIATE_VECTOR(std::vector<std::unique_ptr<Transaction>>); |
156 | INSTANTIATE_VECTOR(std::vector<std::unique_ptr<JoinOrderOptimizer::JoinNode>>); |
157 | template class std::vector<TypeId>; |
158 | template class std::vector<Value>; |
159 | template class std::vector<int>; |
160 | INSTANTIATE_VECTOR(std::vector<std::unique_ptr<Rule>>); |
161 | template class std::vector<std::vector<Expression *>>; |
162 | template class std::vector<SQLType>; |
163 | |
164 | template struct std::atomic<uint64_t>; |
165 | template class std::bitset<STANDARD_VECTOR_SIZE>; |
166 | template class std::unordered_map<PhysicalOperator *, QueryProfiler::TreeNode *>; |
167 | template class std::stack<PhysicalOperator *>; |
168 | |
169 | #define INSTANTIATE_UNORDERED_MAP(MAP_DEFINITION) \ |
170 | template MAP_DEFINITION::mapped_type &MAP_DEFINITION::operator[](MAP_DEFINITION::key_type &&k); \ |
171 | template MAP_DEFINITION::mapped_type &MAP_DEFINITION::operator[](const MAP_DEFINITION::key_type &k); |
172 | |
173 | using catalog_map = std::unordered_map<string, unique_ptr<CatalogEntry>>; |
174 | INSTANTIATE_UNORDERED_MAP(catalog_map); |
175 | |
176 | template class std::unordered_map<string, uint64_t>; |
177 | template class std::unordered_map<string, std::vector<string>>; |
178 | template class std::unordered_map<string, std::pair<uint64_t, Expression *>>; |
179 | // template class std::unordered_map<string, TableBinding>; |
180 | template class std::unordered_map<string, SelectStatement *>; |
181 | template class std::unordered_map<uint64_t, uint64_t>; |
182 | |
183 | #endif |
184 | |