1use const_format::concatcp;
16
17pub const SYSTEM_CATALOG_NAME: &str = "system";
18pub const INFORMATION_SCHEMA_NAME: &str = "information_schema";
19pub const PG_CATALOG_NAME: &str = "pg_catalog";
20pub const SYSTEM_CATALOG_TABLE_NAME: &str = "system_catalog";
21pub const DEFAULT_CATALOG_NAME: &str = env!("DEFAULT_CATALOG_NAME");
22pub const DEFAULT_SCHEMA_NAME: &str = "public";
23pub const DEFAULT_PRIVATE_SCHEMA_NAME: &str = concatcp!(DEFAULT_CATALOG_NAME, "_private");
24
25pub const MIN_USER_FLOW_ID: u32 = 1024;
28pub const MIN_USER_TABLE_ID: u32 = 1024;
31pub const MAX_SYS_TABLE_ID: u32 = MIN_USER_TABLE_ID - 1;
33pub const SYSTEM_CATALOG_TABLE_ID: u32 = 0;
35pub const SCRIPTS_TABLE_ID: u32 = 1;
37pub const NUMBERS_TABLE_ID: u32 = 2;
39
40pub const INFORMATION_SCHEMA_TABLES_TABLE_ID: u32 = 3;
43pub const INFORMATION_SCHEMA_COLUMNS_TABLE_ID: u32 = 4;
45pub const INFORMATION_SCHEMA_ENGINES_TABLE_ID: u32 = 5;
47pub const INFORMATION_SCHEMA_COLUMN_PRIVILEGES_TABLE_ID: u32 = 6;
49pub const INFORMATION_SCHEMA_COLUMN_STATISTICS_TABLE_ID: u32 = 7;
51pub const INFORMATION_SCHEMA_BUILD_INFO_TABLE_ID: u32 = 8;
53pub const INFORMATION_SCHEMA_CHARACTER_SETS_TABLE_ID: u32 = 9;
55pub const INFORMATION_SCHEMA_COLLATIONS_TABLE_ID: u32 = 10;
57pub const INFORMATION_SCHEMA_COLLATION_CHARACTER_SET_APPLICABILITY_TABLE_ID: u32 = 11;
59pub const INFORMATION_SCHEMA_CHECK_CONSTRAINTS_TABLE_ID: u32 = 12;
61pub const INFORMATION_SCHEMA_EVENTS_TABLE_ID: u32 = 13;
63pub const INFORMATION_SCHEMA_FILES_TABLE_ID: u32 = 14;
65pub const INFORMATION_SCHEMA_SCHEMATA_TABLE_ID: u32 = 15;
67pub const INFORMATION_SCHEMA_KEY_COLUMN_USAGE_TABLE_ID: u32 = 16;
69pub const INFORMATION_SCHEMA_OPTIMIZER_TRACE_TABLE_ID: u32 = 17;
71pub const INFORMATION_SCHEMA_PARAMETERS_TABLE_ID: u32 = 18;
73pub const INFORMATION_SCHEMA_PROFILING_TABLE_ID: u32 = 19;
75pub const INFORMATION_SCHEMA_REFERENTIAL_CONSTRAINTS_TABLE_ID: u32 = 20;
77pub const INFORMATION_SCHEMA_ROUTINES_TABLE_ID: u32 = 21;
79pub const INFORMATION_SCHEMA_SCHEMA_PRIVILEGES_TABLE_ID: u32 = 22;
81pub const INFORMATION_SCHEMA_TABLE_PRIVILEGES_TABLE_ID: u32 = 23;
83pub const INFORMATION_SCHEMA_TRIGGERS_TABLE_ID: u32 = 24;
85pub const INFORMATION_SCHEMA_GLOBAL_STATUS_TABLE_ID: u32 = 25;
87pub const INFORMATION_SCHEMA_SESSION_STATUS_TABLE_ID: u32 = 26;
89pub const INFORMATION_SCHEMA_PARTITIONS_TABLE_ID: u32 = 28;
91pub const INFORMATION_SCHEMA_REGION_PEERS_TABLE_ID: u32 = 29;
93pub const INFORMATION_SCHEMA_TABLE_CONSTRAINTS_TABLE_ID: u32 = 30;
95pub const INFORMATION_SCHEMA_CLUSTER_INFO_TABLE_ID: u32 = 31;
97pub const INFORMATION_SCHEMA_VIEW_TABLE_ID: u32 = 32;
99pub const INFORMATION_SCHEMA_FLOW_TABLE_ID: u32 = 33;
101pub const INFORMATION_SCHEMA_PROCEDURE_INFO_TABLE_ID: u32 = 34;
103pub const INFORMATION_SCHEMA_REGION_STATISTICS_TABLE_ID: u32 = 35;
105pub const INFORMATION_SCHEMA_PROCESS_LIST_TABLE_ID: u32 = 36;
107pub const INFORMATION_SCHEMA_SSTS_MANIFEST_TABLE_ID: u32 = 37;
109pub const INFORMATION_SCHEMA_SSTS_STORAGE_TABLE_ID: u32 = 38;
111pub const INFORMATION_SCHEMA_SSTS_INDEX_META_TABLE_ID: u32 = 39;
113pub const INFORMATION_SCHEMA_ALERTS_TABLE_ID: u32 = 40;
115pub const INFORMATION_SCHEMA_REGION_INFO_TABLE_ID: u32 = 41;
117pub const INFORMATION_SCHEMA_TABLE_SEMANTICS_TABLE_ID: u32 = 42;
119pub const INFORMATION_SCHEMA_STATISTICS_TABLE_ID: u32 = 43;
121pub const INFORMATION_SCHEMA_RECYCLE_BIN_TABLE_ID: u32 = 44;
123pub const INFORMATION_SCHEMA_FLOW_STATISTICS_TABLE_ID: u32 = 45;
125pub const INFORMATION_SCHEMA_PLUGINS_TABLE_ID: u32 = 47;
127pub const INFORMATION_SCHEMA_USER_PRIVILEGES_TABLE_ID: u32 = 48;
129pub const INFORMATION_SCHEMA_PROCESSLIST_TABLE_ID: u32 = 49;
131
132pub const SEMANTIC_ENTITIES_TABLE_ID: u32 = 45;
138pub const SEMANTIC_RELATIONSHIPS_TABLE_ID: u32 = 46;
140
141pub const PG_CATALOG_TABLE_ID_START: u32 = 256;
143pub const MITO_ENGINE: &str = "mito";
147pub const MITO2_ENGINE: &str = "mito2";
148pub const METRIC_ENGINE: &str = "metric";
149
150pub fn default_engine() -> &'static str {
151 MITO_ENGINE
152}
153
154pub const FILE_ENGINE: &str = "file";
155pub const RELATIONAL_ENGINE: &str = "relational";
156
157pub const SEMANTIC_TYPE_PRIMARY_KEY: &str = "TAG";
158pub const SEMANTIC_TYPE_FIELD: &str = "FIELD";
159pub const SEMANTIC_TYPE_TIME_INDEX: &str = "TIMESTAMP";
160
161const SYSTEM_SCHEMA_NAMES: [&str; 3] = [
162 INFORMATION_SCHEMA_NAME,
163 PG_CATALOG_NAME,
164 DEFAULT_PRIVATE_SCHEMA_NAME,
165];
166
167pub fn system_schema_name(schema: &str) -> Option<&'static str> {
173 SYSTEM_SCHEMA_NAMES
174 .into_iter()
175 .find(|name| schema.eq_ignore_ascii_case(name))
176}
177
178pub fn is_readonly_schema(schema: &str) -> bool {
179 matches!(schema, INFORMATION_SCHEMA_NAME)
180}
181
182pub fn is_readonly_table(schema: &str, table: &str) -> bool {
186 is_readonly_schema(schema)
187 || (schema == DEFAULT_PRIVATE_SCHEMA_NAME
188 && matches!(
189 table,
190 SEMANTIC_ENTITIES_TABLE_NAME | SEMANTIC_RELATIONSHIPS_TABLE_NAME
191 ))
192}
193
194pub fn is_ddl_reserved_table(schema: &str, table: &str) -> bool {
199 schema == DEFAULT_PRIVATE_SCHEMA_NAME && table == SEMANTIC_RELATIONSHIPS_DECLARED_TABLE_NAME
200}
201
202pub const TRACE_ID_COLUMN: &str = "trace_id";
204pub const SPAN_ID_COLUMN: &str = "span_id";
205pub const SPAN_NAME_COLUMN: &str = "span_name";
206pub const SPAN_ATTRIBUTES_COLUMN: &str = "span_attributes";
208pub const SCOPE_ATTRIBUTES_COLUMN: &str = "scope_attributes";
210pub const RESOURCE_ATTRIBUTES_COLUMN: &str = "resource_attributes";
212pub const SERVICE_NAME_COLUMN: &str = "service_name";
213pub const PARENT_SPAN_ID_COLUMN: &str = "parent_span_id";
214pub const TRACE_TIMESTAMP_COLUMN: &str = "timestamp";
218pub const SPAN_KIND_COLUMN: &str = "span_kind";
219pub const SPAN_STATUS_CODE_COLUMN: &str = "span_status_code";
220pub const DURATION_NANO_COLUMN: &str = "duration_nano";
221pub const TIMESTAMP_END_COLUMN: &str = "timestamp_end";
222pub const SPAN_KIND_CLIENT: &str = "SPAN_KIND_CLIENT";
223pub const SPAN_KIND_SERVER: &str = "SPAN_KIND_SERVER";
224pub const SPAN_STATUS_ERROR: &str = "STATUS_CODE_ERROR";
225pub const TRACE_TABLE_NAME: &str = "opentelemetry_traces";
226pub const TRACE_TABLE_NAME_SESSION_KEY: &str = "trace_table_name";
227pub fn trace_services_table_name(trace_table_name: &str) -> String {
231 format!("{}_services", trace_table_name)
232}
233
234pub fn trace_operations_table_name(trace_table_name: &str) -> String {
236 format!("{}_operations", trace_table_name)
237}
238pub const SEMANTIC_ENTITIES_TABLE_NAME: &str = "semantic_entities";
247pub const SEMANTIC_RELATIONSHIPS_TABLE_NAME: &str = "semantic_relationships";
250pub const SEMANTIC_RELATIONSHIPS_DECLARED_TABLE_NAME: &str = "semantic_relationships_declared";
253
254pub const SEMANTIC_GRAPH_WINDOW_NANOS: i64 = 60 * 1_000_000_000;
258
259pub const OBSERVED_AT_COLUMN: &str = "observed_at";
262pub const WINDOW_START_COLUMN: &str = "window_start";
263pub const WINDOW_END_COLUMN: &str = "window_end";
264pub const FRESH_UNTIL_COLUMN: &str = "fresh_until";
265pub const ENTITY_TYPE_COLUMN: &str = "entity_type";
266pub const ENTITY_ID_COLUMN: &str = "entity_id";
267pub const ENTITY_ID_ATTRS_COLUMN: &str = "entity_id_attrs";
268pub const ENTITY_SCOPE_COLUMN: &str = "scope";
269pub const ENTITY_DESCRIPTIVE_COLUMN: &str = "descriptive";
270pub const SOURCE_TABLES_COLUMN: &str = "source_tables";
271pub const SRC_TYPE_COLUMN: &str = "src_type";
272pub const SRC_ID_COLUMN: &str = "src_id";
273pub const DST_TYPE_COLUMN: &str = "dst_type";
274pub const DST_ID_COLUMN: &str = "dst_id";
275pub const REL_TYPE_COLUMN: &str = "rel_type";
276pub const PROVENANCE_COLUMN: &str = "provenance";
277pub const CONFIDENCE_COLUMN: &str = "confidence";
278pub const REQUEST_COUNT_COLUMN: &str = "request_count";
279pub const UNMATCHED_COUNT_COLUMN: &str = "unmatched_count";
280pub const ERROR_COUNT_COLUMN: &str = "error_count";
281pub const DURATION_SUM_COLUMN: &str = "duration_sum";
282pub const DURATION_COUNT_COLUMN: &str = "duration_count";
283pub const DURATION_MAX_COLUMN: &str = "duration_max";
284pub const EDGE_ATTRIBUTES_COLUMN: &str = "attributes";
285pub const VALID_FROM_COLUMN: &str = "valid_from";
287pub const VALID_UNTIL_COLUMN: &str = "valid_until";
288pub const GENERATION_ID_COLUMN: &str = "generation_id";
289