1//===----------------------------------------------------------------------===//
2// DuckDB
3//
4// duckdb/main/extension_entries.hpp
5//
6//
7//===----------------------------------------------------------------------===//
8
9#pragma once
10
11#include "duckdb/common/unordered_map.hpp"
12
13namespace duckdb {
14
15struct ExtensionEntry {
16 char name[48];
17 char extension[48];
18};
19
20static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {{.name: "->>", .extension: "json"},
21 {.name: "array_to_json", .extension: "json"},
22 {.name: "create_fts_index", .extension: "fts"},
23 {.name: "current_localtime", .extension: "icu"},
24 {.name: "current_localtimestamp", .extension: "icu"},
25 {.name: "dbgen", .extension: "tpch"},
26 {.name: "drop_fts_index", .extension: "fts"},
27 {.name: "dsdgen", .extension: "tpcds"},
28 {.name: "excel_text", .extension: "excel"},
29 {.name: "from_json", .extension: "json"},
30 {.name: "from_json_strict", .extension: "json"},
31 {.name: "from_substrait", .extension: "substrait"},
32 {.name: "from_substrait_json", .extension: "substrait"},
33 {.name: "get_substrait", .extension: "substrait"},
34 {.name: "get_substrait_json", .extension: "substrait"},
35 {.name: "icu_calendar_names", .extension: "icu"},
36 {.name: "icu_sort_key", .extension: "icu"},
37 {.name: "json", .extension: "json"},
38 {.name: "json_array", .extension: "json"},
39 {.name: "json_array_length", .extension: "json"},
40 {.name: "json_contains", .extension: "json"},
41 {.name: "json_extract", .extension: "json"},
42 {.name: "json_extract_path", .extension: "json"},
43 {.name: "json_extract_path_text", .extension: "json"},
44 {.name: "json_extract_string", .extension: "json"},
45 {.name: "json_group_array", .extension: "json"},
46 {.name: "json_group_object", .extension: "json"},
47 {.name: "json_group_structure", .extension: "json"},
48 {.name: "json_keys", .extension: "json"},
49 {.name: "json_merge_patch", .extension: "json"},
50 {.name: "json_object", .extension: "json"},
51 {.name: "json_quote", .extension: "json"},
52 {.name: "json_structure", .extension: "json"},
53 {.name: "json_transform", .extension: "json"},
54 {.name: "json_transform_strict", .extension: "json"},
55 {.name: "json_type", .extension: "json"},
56 {.name: "json_valid", .extension: "json"},
57 {.name: "json_serialize_sql", .extension: "json"},
58 {.name: "json_deserialize_sql", .extension: "json"},
59 {.name: "json_serialize_sql", .extension: "json"},
60 {.name: "json_execute_serialized_sql", .extension: "json"},
61 {.name: "make_timestamptz", .extension: "icu"},
62 {.name: "parquet_metadata", .extension: "parquet"},
63 {.name: "parquet_scan", .extension: "parquet"},
64 {.name: "parquet_schema", .extension: "parquet"},
65 {.name: "pg_timezone_names", .extension: "icu"},
66 {.name: "postgres_attach", .extension: "postgres_scanner"},
67 {.name: "postgres_scan", .extension: "postgres_scanner"},
68 {.name: "postgres_scan_pushdown", .extension: "postgres_scanner"},
69 {.name: "read_json", .extension: "json"},
70 {.name: "read_json_auto", .extension: "json"},
71 {.name: "read_json_objects", .extension: "json"},
72 {.name: "read_json_objects_auto", .extension: "json"},
73 {.name: "read_ndjson", .extension: "json"},
74 {.name: "read_ndjson_auto", .extension: "json"},
75 {.name: "read_ndjson_objects", .extension: "json"},
76 {.name: "read_parquet", .extension: "parquet"},
77 {.name: "row_to_json", .extension: "json"},
78 {.name: "scan_arrow_ipc", .extension: "arrow"},
79 {.name: "sqlite_attach", .extension: "sqlite_scanner"},
80 {.name: "sqlite_scan", .extension: "sqlite_scanner"},
81 {.name: "stem", .extension: "fts"},
82 {.name: "text", .extension: "excel"},
83 {.name: "to_arrow_ipc", .extension: "arrow"},
84 {.name: "to_json", .extension: "json"},
85 {.name: "tpcds", .extension: "tpcds"},
86 {.name: "tpcds_answers", .extension: "tpcds"},
87 {.name: "tpcds_queries", .extension: "tpcds"},
88 {.name: "tpch", .extension: "tpch"},
89 {.name: "tpch_answers", .extension: "tpch"},
90 {.name: "tpch_queries", .extension: "tpch"},
91 {.name: "visualize_diff_profiling_output", .extension: "visualizer"},
92 {.name: "visualize_json_profiling_output", .extension: "visualizer"},
93 {.name: "visualize_last_profiling_output", .extension: "visualizer"},
94 {.name: "st_distance_spheroid", .extension: "spatial"},
95 {.name: "st_boundary", .extension: "spatial"},
96 {.name: "st_makeline", .extension: "spatial"},
97 {.name: "st_buffer", .extension: "spatial"},
98 {.name: "st_x", .extension: "spatial"},
99 {.name: "st_isring", .extension: "spatial"},
100 {.name: "st_centroid", .extension: "spatial"},
101 {.name: "st_read", .extension: "spatial"},
102 {.name: "st_geomfromwkb", .extension: "spatial"},
103 {.name: "st_list_proj_crs", .extension: "spatial"},
104 {.name: "st_isvalid", .extension: "spatial"},
105 {.name: "st_polygon2dfromwkb", .extension: "spatial"},
106 {.name: "st_disjoint", .extension: "spatial"},
107 {.name: "st_length", .extension: "spatial"},
108 {.name: "st_difference", .extension: "spatial"},
109 {.name: "st_area", .extension: "spatial"},
110 {.name: "st_union", .extension: "spatial"},
111 {.name: "st_isclosed", .extension: "spatial"},
112 {.name: "st_asgeojson", .extension: "spatial"},
113 {.name: "st_intersection", .extension: "spatial"},
114 {.name: "st_transform", .extension: "spatial"},
115 {.name: "st_dwithin", .extension: "spatial"},
116 {.name: "st_perimeter", .extension: "spatial"},
117 {.name: "st_issimple", .extension: "spatial"},
118 {.name: "st_geometrytype", .extension: "spatial"},
119 {.name: "st_simplifypreservetopology", .extension: "spatial"},
120 {.name: "st_distance", .extension: "spatial"},
121 {.name: "st_astext", .extension: "spatial"},
122 {.name: "st_overlaps", .extension: "spatial"},
123 {.name: "st_convexhull", .extension: "spatial"},
124 {.name: "st_normalize", .extension: "spatial"},
125 {.name: "st_drivers", .extension: "spatial"},
126 {.name: "st_point2dfromwkb", .extension: "spatial"},
127 {.name: "st_point2d", .extension: "spatial"},
128 {.name: "st_y", .extension: "spatial"},
129 {.name: "st_dwithin_spheroid", .extension: "spatial"},
130 {.name: "st_isempty", .extension: "spatial"},
131 {.name: "st_simplify", .extension: "spatial"},
132 {.name: "st_area_spheroid", .extension: "spatial"},
133 {.name: "st_within", .extension: "spatial"},
134 {.name: "st_length_spheroid", .extension: "spatial"},
135 {.name: "st_point3d", .extension: "spatial"},
136 {.name: "st_containsproperly", .extension: "spatial"},
137 {.name: "st_contains", .extension: "spatial"},
138 {.name: "st_collect", .extension: "spatial"},
139 {.name: "st_touches", .extension: "spatial"},
140 {.name: "st_linestring2dfromwkb", .extension: "spatial"},
141 {.name: "st_flipcoordinates", .extension: "spatial"},
142 {.name: "st_ashexwkb", .extension: "spatial"},
143 {.name: "st_geomfromtext", .extension: "spatial"},
144 {.name: "st_point4d", .extension: "spatial"},
145 {.name: "st_point", .extension: "spatial"},
146 {.name: "st_coveredby", .extension: "spatial"},
147 {.name: "st_perimeter_spheroid", .extension: "spatial"},
148 {.name: "st_intersects", .extension: "spatial"},
149 {.name: "st_crosses", .extension: "spatial"},
150 {.name: "st_covers", .extension: "spatial"},
151 {.name: "st_envelope", .extension: "spatial"},
152 {.name: "st_aswkb", .extension: "spatial"},
153 {.name: "st_equals", .extension: "spatial"},
154 {.name: "st_collectionextract", .extension: "spatial"},
155 {.name: "st_npoints", .extension: "spatial"},
156 {.name: "st_pointonsurface", .extension: "spatial"},
157 {.name: "st_dimension", .extension: "spatial"},
158 {.name: "st_removerepeatedpoints", .extension: "spatial"},
159 {.name: "st_geomfromgeojson", .extension: "spatial"},
160 {.name: "st_readosm", .extension: "spatial"},
161 {.name: "st_numpoints", .extension: "spatial"}};
162
163static constexpr ExtensionEntry EXTENSION_SETTINGS[] = {
164 {.name: "binary_as_string", .extension: "parquet"},
165 {.name: "calendar", .extension: "icu"},
166 {.name: "http_retries", .extension: "httpfs"},
167 {.name: "http_retry_backoff", .extension: "httpfs"},
168 {.name: "http_retry_wait_ms", .extension: "httpfs"},
169 {.name: "http_timeout", .extension: "httpfs"},
170 {.name: "force_download", .extension: "httpfs"},
171 {.name: "s3_access_key_id", .extension: "httpfs"},
172 {.name: "s3_endpoint", .extension: "httpfs"},
173 {.name: "s3_region", .extension: "httpfs"},
174 {.name: "s3_secret_access_key", .extension: "httpfs"},
175 {.name: "s3_session_token", .extension: "httpfs"},
176 {.name: "s3_uploader_max_filesize", .extension: "httpfs"},
177 {.name: "s3_uploader_max_parts_per_file", .extension: "httpfs"},
178 {.name: "s3_uploader_thread_limit", .extension: "httpfs"},
179 {.name: "s3_url_compatibility_mode", .extension: "httpfs"},
180 {.name: "s3_url_style", .extension: "httpfs"},
181 {.name: "s3_use_ssl", .extension: "httpfs"},
182 {.name: "sqlite_all_varchar", .extension: "sqlite_scanner"},
183 {.name: "timezone", .extension: "icu"},
184};
185} // namespace duckdb
186