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;
125
126pub const SEMANTIC_ENTITIES_TABLE_ID: u32 = 45;
132pub const SEMANTIC_RELATIONSHIPS_TABLE_ID: u32 = 46;
134
135pub const PG_CATALOG_TABLE_ID_START: u32 = 256;
137pub const MITO_ENGINE: &str = "mito";
141pub const MITO2_ENGINE: &str = "mito2";
142pub const METRIC_ENGINE: &str = "metric";
143
144pub fn default_engine() -> &'static str {
145 MITO_ENGINE
146}
147
148pub const FILE_ENGINE: &str = "file";
149
150pub const SEMANTIC_TYPE_PRIMARY_KEY: &str = "TAG";
151pub const SEMANTIC_TYPE_FIELD: &str = "FIELD";
152pub const SEMANTIC_TYPE_TIME_INDEX: &str = "TIMESTAMP";
153
154const SYSTEM_SCHEMA_NAMES: [&str; 3] = [
155 INFORMATION_SCHEMA_NAME,
156 PG_CATALOG_NAME,
157 DEFAULT_PRIVATE_SCHEMA_NAME,
158];
159
160pub fn system_schema_name(schema: &str) -> Option<&'static str> {
166 SYSTEM_SCHEMA_NAMES
167 .into_iter()
168 .find(|name| schema.eq_ignore_ascii_case(name))
169}
170
171pub fn is_readonly_schema(schema: &str) -> bool {
172 matches!(schema, INFORMATION_SCHEMA_NAME)
173}
174
175pub fn is_readonly_table(schema: &str, table: &str) -> bool {
179 is_readonly_schema(schema)
180 || (schema == DEFAULT_PRIVATE_SCHEMA_NAME
181 && matches!(
182 table,
183 SEMANTIC_ENTITIES_TABLE_NAME | SEMANTIC_RELATIONSHIPS_TABLE_NAME
184 ))
185}
186
187pub fn is_ddl_reserved_table(schema: &str, table: &str) -> bool {
192 schema == DEFAULT_PRIVATE_SCHEMA_NAME && table == SEMANTIC_RELATIONSHIPS_DECLARED_TABLE_NAME
193}
194
195pub const TRACE_ID_COLUMN: &str = "trace_id";
197pub const SPAN_ID_COLUMN: &str = "span_id";
198pub const SPAN_NAME_COLUMN: &str = "span_name";
199pub const SERVICE_NAME_COLUMN: &str = "service_name";
200pub const PARENT_SPAN_ID_COLUMN: &str = "parent_span_id";
201pub const TRACE_TIMESTAMP_COLUMN: &str = "timestamp";
205pub const SPAN_KIND_COLUMN: &str = "span_kind";
206pub const SPAN_STATUS_CODE_COLUMN: &str = "span_status_code";
207pub const DURATION_NANO_COLUMN: &str = "duration_nano";
208pub const SPAN_KIND_CLIENT: &str = "SPAN_KIND_CLIENT";
209pub const SPAN_KIND_SERVER: &str = "SPAN_KIND_SERVER";
210pub const SPAN_STATUS_ERROR: &str = "STATUS_CODE_ERROR";
211pub const TRACE_TABLE_NAME: &str = "opentelemetry_traces";
212pub const TRACE_TABLE_NAME_SESSION_KEY: &str = "trace_table_name";
213pub fn trace_services_table_name(trace_table_name: &str) -> String {
217 format!("{}_services", trace_table_name)
218}
219
220pub fn trace_operations_table_name(trace_table_name: &str) -> String {
222 format!("{}_operations", trace_table_name)
223}
224pub const SEMANTIC_ENTITIES_TABLE_NAME: &str = "semantic_entities";
233pub const SEMANTIC_RELATIONSHIPS_TABLE_NAME: &str = "semantic_relationships";
236pub const SEMANTIC_RELATIONSHIPS_DECLARED_TABLE_NAME: &str = "semantic_relationships_declared";
239
240pub const SEMANTIC_GRAPH_WINDOW_NANOS: i64 = 60 * 1_000_000_000;
244
245pub const OBSERVED_AT_COLUMN: &str = "observed_at";
248pub const WINDOW_START_COLUMN: &str = "window_start";
249pub const WINDOW_END_COLUMN: &str = "window_end";
250pub const FRESH_UNTIL_COLUMN: &str = "fresh_until";
251pub const ENTITY_TYPE_COLUMN: &str = "entity_type";
252pub const ENTITY_ID_COLUMN: &str = "entity_id";
253pub const ENTITY_ID_ATTRS_COLUMN: &str = "entity_id_attrs";
254pub const ENTITY_SCOPE_COLUMN: &str = "scope";
255pub const ENTITY_DESCRIPTIVE_COLUMN: &str = "descriptive";
256pub const SOURCE_TABLES_COLUMN: &str = "source_tables";
257pub const SRC_TYPE_COLUMN: &str = "src_type";
258pub const SRC_ID_COLUMN: &str = "src_id";
259pub const DST_TYPE_COLUMN: &str = "dst_type";
260pub const DST_ID_COLUMN: &str = "dst_id";
261pub const REL_TYPE_COLUMN: &str = "rel_type";
262pub const PROVENANCE_COLUMN: &str = "provenance";
263pub const CONFIDENCE_COLUMN: &str = "confidence";
264pub const REQUEST_COUNT_COLUMN: &str = "request_count";
265pub const UNMATCHED_COUNT_COLUMN: &str = "unmatched_count";
266pub const ERROR_COUNT_COLUMN: &str = "error_count";
267pub const DURATION_SUM_COLUMN: &str = "duration_sum";
268pub const DURATION_COUNT_COLUMN: &str = "duration_count";
269pub const DURATION_MAX_COLUMN: &str = "duration_max";
270pub const EDGE_ATTRIBUTES_COLUMN: &str = "attributes";
271pub const VALID_FROM_COLUMN: &str = "valid_from";
273pub const VALID_UNTIL_COLUMN: &str = "valid_until";
274pub const GENERATION_ID_COLUMN: &str = "generation_id";
275