Skip to main content

reifydb_core/interface/catalog/
id.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4use std::{
5	fmt,
6	fmt::{Display, Formatter},
7	ops::Deref,
8};
9
10use serde::{Deserialize, Deserializer, Serialize, Serializer, de::Visitor};
11
12#[repr(transparent)]
13#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
14pub struct ColumnId(pub u64);
15
16impl ColumnId {
17	pub const REQUEST_HISTORY_TIMESTAMP: ColumnId = ColumnId(1);
18	pub const REQUEST_HISTORY_OPERATION: ColumnId = ColumnId(2);
19	pub const REQUEST_HISTORY_FINGERPRINT: ColumnId = ColumnId(3);
20	pub const REQUEST_HISTORY_TOTAL_DURATION: ColumnId = ColumnId(4);
21	pub const REQUEST_HISTORY_COMPUTE_DURATION: ColumnId = ColumnId(5);
22	pub const REQUEST_HISTORY_SUCCESS: ColumnId = ColumnId(6);
23	pub const REQUEST_HISTORY_STATEMENT_COUNT: ColumnId = ColumnId(7);
24	pub const REQUEST_HISTORY_NORMALIZED_RQL: ColumnId = ColumnId(8);
25
26	pub const STATEMENT_STATS_SNAPSHOT_TIMESTAMP: ColumnId = ColumnId(9);
27	pub const STATEMENT_STATS_FINGERPRINT: ColumnId = ColumnId(10);
28	pub const STATEMENT_STATS_NORMALIZED_RQL: ColumnId = ColumnId(11);
29	pub const STATEMENT_STATS_CALLS: ColumnId = ColumnId(12);
30	pub const STATEMENT_STATS_TOTAL_DURATION: ColumnId = ColumnId(13);
31	pub const STATEMENT_STATS_MEAN_DURATION: ColumnId = ColumnId(14);
32	pub const STATEMENT_STATS_MAX_DURATION: ColumnId = ColumnId(15);
33	pub const STATEMENT_STATS_MIN_DURATION: ColumnId = ColumnId(16);
34	pub const STATEMENT_STATS_TOTAL_ROWS: ColumnId = ColumnId(17);
35	pub const STATEMENT_STATS_ERRORS: ColumnId = ColumnId(18);
36
37	pub const PROFILER_QUERY_SNAPSHOTS_TS: ColumnId = ColumnId(1024);
38	pub const PROFILER_QUERY_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1025);
39	pub const PROFILER_QUERY_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1026);
40	pub const PROFILER_QUERY_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1027);
41	pub const PROFILER_QUERY_SNAPSHOTS_CALLS: ColumnId = ColumnId(1028);
42	pub const PROFILER_QUERY_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1029);
43	pub const PROFILER_QUERY_SNAPSHOTS_MIN: ColumnId = ColumnId(1030);
44	pub const PROFILER_QUERY_SNAPSHOTS_MAX: ColumnId = ColumnId(1031);
45	pub const PROFILER_QUERY_SNAPSHOTS_P50: ColumnId = ColumnId(1032);
46	pub const PROFILER_QUERY_SNAPSHOTS_P60: ColumnId = ColumnId(1033);
47	pub const PROFILER_QUERY_SNAPSHOTS_P70: ColumnId = ColumnId(1034);
48	pub const PROFILER_QUERY_SNAPSHOTS_P75: ColumnId = ColumnId(1035);
49	pub const PROFILER_QUERY_SNAPSHOTS_P80: ColumnId = ColumnId(1036);
50	pub const PROFILER_QUERY_SNAPSHOTS_P85: ColumnId = ColumnId(1037);
51	pub const PROFILER_QUERY_SNAPSHOTS_P90: ColumnId = ColumnId(1038);
52	pub const PROFILER_QUERY_SNAPSHOTS_P95: ColumnId = ColumnId(1039);
53	pub const PROFILER_QUERY_SNAPSHOTS_P98: ColumnId = ColumnId(1040);
54	pub const PROFILER_QUERY_SNAPSHOTS_P99: ColumnId = ColumnId(1041);
55	pub const PROFILER_QUERY_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1042);
56	pub const PROFILER_QUERY_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1043);
57	pub const PROFILER_QUERY_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1044);
58	pub const PROFILER_QUERY_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1045);
59	pub const PROFILER_TXN_SNAPSHOTS_TS: ColumnId = ColumnId(1046);
60	pub const PROFILER_TXN_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1047);
61	pub const PROFILER_TXN_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1048);
62	pub const PROFILER_TXN_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1049);
63	pub const PROFILER_TXN_SNAPSHOTS_CALLS: ColumnId = ColumnId(1050);
64	pub const PROFILER_TXN_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1051);
65	pub const PROFILER_TXN_SNAPSHOTS_MIN: ColumnId = ColumnId(1052);
66	pub const PROFILER_TXN_SNAPSHOTS_MAX: ColumnId = ColumnId(1053);
67	pub const PROFILER_TXN_SNAPSHOTS_P50: ColumnId = ColumnId(1054);
68	pub const PROFILER_TXN_SNAPSHOTS_P60: ColumnId = ColumnId(1055);
69	pub const PROFILER_TXN_SNAPSHOTS_P70: ColumnId = ColumnId(1056);
70	pub const PROFILER_TXN_SNAPSHOTS_P75: ColumnId = ColumnId(1057);
71	pub const PROFILER_TXN_SNAPSHOTS_P80: ColumnId = ColumnId(1058);
72	pub const PROFILER_TXN_SNAPSHOTS_P85: ColumnId = ColumnId(1059);
73	pub const PROFILER_TXN_SNAPSHOTS_P90: ColumnId = ColumnId(1060);
74	pub const PROFILER_TXN_SNAPSHOTS_P95: ColumnId = ColumnId(1061);
75	pub const PROFILER_TXN_SNAPSHOTS_P98: ColumnId = ColumnId(1062);
76	pub const PROFILER_TXN_SNAPSHOTS_P99: ColumnId = ColumnId(1063);
77	pub const PROFILER_TXN_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1064);
78	pub const PROFILER_TXN_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1065);
79	pub const PROFILER_TXN_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1066);
80	pub const PROFILER_TXN_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1067);
81	pub const PROFILER_STORAGE_SNAPSHOTS_TS: ColumnId = ColumnId(1068);
82	pub const PROFILER_STORAGE_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1069);
83	pub const PROFILER_STORAGE_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1070);
84	pub const PROFILER_STORAGE_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1071);
85	pub const PROFILER_STORAGE_SNAPSHOTS_CALLS: ColumnId = ColumnId(1072);
86	pub const PROFILER_STORAGE_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1073);
87	pub const PROFILER_STORAGE_SNAPSHOTS_MIN: ColumnId = ColumnId(1074);
88	pub const PROFILER_STORAGE_SNAPSHOTS_MAX: ColumnId = ColumnId(1075);
89	pub const PROFILER_STORAGE_SNAPSHOTS_P50: ColumnId = ColumnId(1076);
90	pub const PROFILER_STORAGE_SNAPSHOTS_P60: ColumnId = ColumnId(1077);
91	pub const PROFILER_STORAGE_SNAPSHOTS_P70: ColumnId = ColumnId(1078);
92	pub const PROFILER_STORAGE_SNAPSHOTS_P75: ColumnId = ColumnId(1079);
93	pub const PROFILER_STORAGE_SNAPSHOTS_P80: ColumnId = ColumnId(1080);
94	pub const PROFILER_STORAGE_SNAPSHOTS_P85: ColumnId = ColumnId(1081);
95	pub const PROFILER_STORAGE_SNAPSHOTS_P90: ColumnId = ColumnId(1082);
96	pub const PROFILER_STORAGE_SNAPSHOTS_P95: ColumnId = ColumnId(1083);
97	pub const PROFILER_STORAGE_SNAPSHOTS_P98: ColumnId = ColumnId(1084);
98	pub const PROFILER_STORAGE_SNAPSHOTS_P99: ColumnId = ColumnId(1085);
99	pub const PROFILER_STORAGE_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1086);
100	pub const PROFILER_STORAGE_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1087);
101	pub const PROFILER_STORAGE_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1088);
102	pub const PROFILER_STORAGE_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1089);
103	pub const PROFILER_PLAN_SNAPSHOTS_TS: ColumnId = ColumnId(1090);
104	pub const PROFILER_PLAN_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1091);
105	pub const PROFILER_PLAN_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1092);
106	pub const PROFILER_PLAN_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1093);
107	pub const PROFILER_PLAN_SNAPSHOTS_CALLS: ColumnId = ColumnId(1094);
108	pub const PROFILER_PLAN_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1095);
109	pub const PROFILER_PLAN_SNAPSHOTS_MIN: ColumnId = ColumnId(1096);
110	pub const PROFILER_PLAN_SNAPSHOTS_MAX: ColumnId = ColumnId(1097);
111	pub const PROFILER_PLAN_SNAPSHOTS_P50: ColumnId = ColumnId(1098);
112	pub const PROFILER_PLAN_SNAPSHOTS_P60: ColumnId = ColumnId(1099);
113	pub const PROFILER_PLAN_SNAPSHOTS_P70: ColumnId = ColumnId(1100);
114	pub const PROFILER_PLAN_SNAPSHOTS_P75: ColumnId = ColumnId(1101);
115	pub const PROFILER_PLAN_SNAPSHOTS_P80: ColumnId = ColumnId(1102);
116	pub const PROFILER_PLAN_SNAPSHOTS_P85: ColumnId = ColumnId(1103);
117	pub const PROFILER_PLAN_SNAPSHOTS_P90: ColumnId = ColumnId(1104);
118	pub const PROFILER_PLAN_SNAPSHOTS_P95: ColumnId = ColumnId(1105);
119	pub const PROFILER_PLAN_SNAPSHOTS_P98: ColumnId = ColumnId(1106);
120	pub const PROFILER_PLAN_SNAPSHOTS_P99: ColumnId = ColumnId(1107);
121	pub const PROFILER_PLAN_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1108);
122	pub const PROFILER_PLAN_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1109);
123	pub const PROFILER_PLAN_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1110);
124	pub const PROFILER_PLAN_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1111);
125	pub const PROFILER_CDC_SNAPSHOTS_TS: ColumnId = ColumnId(1112);
126	pub const PROFILER_CDC_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1113);
127	pub const PROFILER_CDC_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1114);
128	pub const PROFILER_CDC_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1115);
129	pub const PROFILER_CDC_SNAPSHOTS_CALLS: ColumnId = ColumnId(1116);
130	pub const PROFILER_CDC_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1117);
131	pub const PROFILER_CDC_SNAPSHOTS_MIN: ColumnId = ColumnId(1118);
132	pub const PROFILER_CDC_SNAPSHOTS_MAX: ColumnId = ColumnId(1119);
133	pub const PROFILER_CDC_SNAPSHOTS_P50: ColumnId = ColumnId(1120);
134	pub const PROFILER_CDC_SNAPSHOTS_P60: ColumnId = ColumnId(1121);
135	pub const PROFILER_CDC_SNAPSHOTS_P70: ColumnId = ColumnId(1122);
136	pub const PROFILER_CDC_SNAPSHOTS_P75: ColumnId = ColumnId(1123);
137	pub const PROFILER_CDC_SNAPSHOTS_P80: ColumnId = ColumnId(1124);
138	pub const PROFILER_CDC_SNAPSHOTS_P85: ColumnId = ColumnId(1125);
139	pub const PROFILER_CDC_SNAPSHOTS_P90: ColumnId = ColumnId(1126);
140	pub const PROFILER_CDC_SNAPSHOTS_P95: ColumnId = ColumnId(1127);
141	pub const PROFILER_CDC_SNAPSHOTS_P98: ColumnId = ColumnId(1128);
142	pub const PROFILER_CDC_SNAPSHOTS_P99: ColumnId = ColumnId(1129);
143	pub const PROFILER_CDC_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1130);
144	pub const PROFILER_CDC_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1131);
145	pub const PROFILER_CDC_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1132);
146	pub const PROFILER_CDC_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1133);
147	pub const PROFILER_FLOW_SNAPSHOTS_TS: ColumnId = ColumnId(1134);
148	pub const PROFILER_FLOW_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1135);
149	pub const PROFILER_FLOW_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1136);
150	pub const PROFILER_FLOW_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1137);
151	pub const PROFILER_FLOW_SNAPSHOTS_CALLS: ColumnId = ColumnId(1138);
152	pub const PROFILER_FLOW_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1139);
153	pub const PROFILER_FLOW_SNAPSHOTS_MIN: ColumnId = ColumnId(1140);
154	pub const PROFILER_FLOW_SNAPSHOTS_MAX: ColumnId = ColumnId(1141);
155	pub const PROFILER_FLOW_SNAPSHOTS_P50: ColumnId = ColumnId(1142);
156	pub const PROFILER_FLOW_SNAPSHOTS_P60: ColumnId = ColumnId(1143);
157	pub const PROFILER_FLOW_SNAPSHOTS_P70: ColumnId = ColumnId(1144);
158	pub const PROFILER_FLOW_SNAPSHOTS_P75: ColumnId = ColumnId(1145);
159	pub const PROFILER_FLOW_SNAPSHOTS_P80: ColumnId = ColumnId(1146);
160	pub const PROFILER_FLOW_SNAPSHOTS_P85: ColumnId = ColumnId(1147);
161	pub const PROFILER_FLOW_SNAPSHOTS_P90: ColumnId = ColumnId(1148);
162	pub const PROFILER_FLOW_SNAPSHOTS_P95: ColumnId = ColumnId(1149);
163	pub const PROFILER_FLOW_SNAPSHOTS_P98: ColumnId = ColumnId(1150);
164	pub const PROFILER_FLOW_SNAPSHOTS_P99: ColumnId = ColumnId(1151);
165	pub const PROFILER_FLOW_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1152);
166	pub const PROFILER_FLOW_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1153);
167	pub const PROFILER_FLOW_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1154);
168	pub const PROFILER_FLOW_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1155);
169	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_TS: ColumnId = ColumnId(1156);
170	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1157);
171	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1158);
172	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1159);
173	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_CALLS: ColumnId = ColumnId(1160);
174	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1161);
175	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_MIN: ColumnId = ColumnId(1162);
176	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_MAX: ColumnId = ColumnId(1163);
177	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P50: ColumnId = ColumnId(1164);
178	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P60: ColumnId = ColumnId(1165);
179	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P70: ColumnId = ColumnId(1166);
180	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P75: ColumnId = ColumnId(1167);
181	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P80: ColumnId = ColumnId(1168);
182	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P85: ColumnId = ColumnId(1169);
183	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P90: ColumnId = ColumnId(1170);
184	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P95: ColumnId = ColumnId(1171);
185	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P98: ColumnId = ColumnId(1172);
186	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_P99: ColumnId = ColumnId(1173);
187	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1174);
188	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1175);
189	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1176);
190	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1177);
191	pub const PROFILER_SERVER_SNAPSHOTS_TS: ColumnId = ColumnId(1178);
192	pub const PROFILER_SERVER_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1179);
193	pub const PROFILER_SERVER_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1180);
194	pub const PROFILER_SERVER_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1181);
195	pub const PROFILER_SERVER_SNAPSHOTS_CALLS: ColumnId = ColumnId(1182);
196	pub const PROFILER_SERVER_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1183);
197	pub const PROFILER_SERVER_SNAPSHOTS_MIN: ColumnId = ColumnId(1184);
198	pub const PROFILER_SERVER_SNAPSHOTS_MAX: ColumnId = ColumnId(1185);
199	pub const PROFILER_SERVER_SNAPSHOTS_P50: ColumnId = ColumnId(1186);
200	pub const PROFILER_SERVER_SNAPSHOTS_P60: ColumnId = ColumnId(1187);
201	pub const PROFILER_SERVER_SNAPSHOTS_P70: ColumnId = ColumnId(1188);
202	pub const PROFILER_SERVER_SNAPSHOTS_P75: ColumnId = ColumnId(1189);
203	pub const PROFILER_SERVER_SNAPSHOTS_P80: ColumnId = ColumnId(1190);
204	pub const PROFILER_SERVER_SNAPSHOTS_P85: ColumnId = ColumnId(1191);
205	pub const PROFILER_SERVER_SNAPSHOTS_P90: ColumnId = ColumnId(1192);
206	pub const PROFILER_SERVER_SNAPSHOTS_P95: ColumnId = ColumnId(1193);
207	pub const PROFILER_SERVER_SNAPSHOTS_P98: ColumnId = ColumnId(1194);
208	pub const PROFILER_SERVER_SNAPSHOTS_P99: ColumnId = ColumnId(1195);
209	pub const PROFILER_SERVER_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1196);
210	pub const PROFILER_SERVER_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1197);
211	pub const PROFILER_SERVER_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1198);
212	pub const PROFILER_SERVER_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1199);
213	pub const PROFILER_WIRE_SNAPSHOTS_TS: ColumnId = ColumnId(1200);
214	pub const PROFILER_WIRE_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1201);
215	pub const PROFILER_WIRE_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1202);
216	pub const PROFILER_WIRE_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1203);
217	pub const PROFILER_WIRE_SNAPSHOTS_CALLS: ColumnId = ColumnId(1204);
218	pub const PROFILER_WIRE_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1205);
219	pub const PROFILER_WIRE_SNAPSHOTS_MIN: ColumnId = ColumnId(1206);
220	pub const PROFILER_WIRE_SNAPSHOTS_MAX: ColumnId = ColumnId(1207);
221	pub const PROFILER_WIRE_SNAPSHOTS_P50: ColumnId = ColumnId(1208);
222	pub const PROFILER_WIRE_SNAPSHOTS_P60: ColumnId = ColumnId(1209);
223	pub const PROFILER_WIRE_SNAPSHOTS_P70: ColumnId = ColumnId(1210);
224	pub const PROFILER_WIRE_SNAPSHOTS_P75: ColumnId = ColumnId(1211);
225	pub const PROFILER_WIRE_SNAPSHOTS_P80: ColumnId = ColumnId(1212);
226	pub const PROFILER_WIRE_SNAPSHOTS_P85: ColumnId = ColumnId(1213);
227	pub const PROFILER_WIRE_SNAPSHOTS_P90: ColumnId = ColumnId(1214);
228	pub const PROFILER_WIRE_SNAPSHOTS_P95: ColumnId = ColumnId(1215);
229	pub const PROFILER_WIRE_SNAPSHOTS_P98: ColumnId = ColumnId(1216);
230	pub const PROFILER_WIRE_SNAPSHOTS_P99: ColumnId = ColumnId(1217);
231	pub const PROFILER_WIRE_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1218);
232	pub const PROFILER_WIRE_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1219);
233	pub const PROFILER_WIRE_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1220);
234	pub const PROFILER_WIRE_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1221);
235	pub const PROFILER_AUTH_SNAPSHOTS_TS: ColumnId = ColumnId(1222);
236	pub const PROFILER_AUTH_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1223);
237	pub const PROFILER_AUTH_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1224);
238	pub const PROFILER_AUTH_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1225);
239	pub const PROFILER_AUTH_SNAPSHOTS_CALLS: ColumnId = ColumnId(1226);
240	pub const PROFILER_AUTH_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1227);
241	pub const PROFILER_AUTH_SNAPSHOTS_MIN: ColumnId = ColumnId(1228);
242	pub const PROFILER_AUTH_SNAPSHOTS_MAX: ColumnId = ColumnId(1229);
243	pub const PROFILER_AUTH_SNAPSHOTS_P50: ColumnId = ColumnId(1230);
244	pub const PROFILER_AUTH_SNAPSHOTS_P60: ColumnId = ColumnId(1231);
245	pub const PROFILER_AUTH_SNAPSHOTS_P70: ColumnId = ColumnId(1232);
246	pub const PROFILER_AUTH_SNAPSHOTS_P75: ColumnId = ColumnId(1233);
247	pub const PROFILER_AUTH_SNAPSHOTS_P80: ColumnId = ColumnId(1234);
248	pub const PROFILER_AUTH_SNAPSHOTS_P85: ColumnId = ColumnId(1235);
249	pub const PROFILER_AUTH_SNAPSHOTS_P90: ColumnId = ColumnId(1236);
250	pub const PROFILER_AUTH_SNAPSHOTS_P95: ColumnId = ColumnId(1237);
251	pub const PROFILER_AUTH_SNAPSHOTS_P98: ColumnId = ColumnId(1238);
252	pub const PROFILER_AUTH_SNAPSHOTS_P99: ColumnId = ColumnId(1239);
253	pub const PROFILER_AUTH_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1240);
254	pub const PROFILER_AUTH_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1241);
255	pub const PROFILER_AUTH_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1242);
256	pub const PROFILER_AUTH_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1243);
257	pub const PROFILER_CATALOG_SNAPSHOTS_TS: ColumnId = ColumnId(1244);
258	pub const PROFILER_CATALOG_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1245);
259	pub const PROFILER_CATALOG_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1246);
260	pub const PROFILER_CATALOG_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1247);
261	pub const PROFILER_CATALOG_SNAPSHOTS_CALLS: ColumnId = ColumnId(1248);
262	pub const PROFILER_CATALOG_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1249);
263	pub const PROFILER_CATALOG_SNAPSHOTS_MIN: ColumnId = ColumnId(1250);
264	pub const PROFILER_CATALOG_SNAPSHOTS_MAX: ColumnId = ColumnId(1251);
265	pub const PROFILER_CATALOG_SNAPSHOTS_P50: ColumnId = ColumnId(1252);
266	pub const PROFILER_CATALOG_SNAPSHOTS_P60: ColumnId = ColumnId(1253);
267	pub const PROFILER_CATALOG_SNAPSHOTS_P70: ColumnId = ColumnId(1254);
268	pub const PROFILER_CATALOG_SNAPSHOTS_P75: ColumnId = ColumnId(1255);
269	pub const PROFILER_CATALOG_SNAPSHOTS_P80: ColumnId = ColumnId(1256);
270	pub const PROFILER_CATALOG_SNAPSHOTS_P85: ColumnId = ColumnId(1257);
271	pub const PROFILER_CATALOG_SNAPSHOTS_P90: ColumnId = ColumnId(1258);
272	pub const PROFILER_CATALOG_SNAPSHOTS_P95: ColumnId = ColumnId(1259);
273	pub const PROFILER_CATALOG_SNAPSHOTS_P98: ColumnId = ColumnId(1260);
274	pub const PROFILER_CATALOG_SNAPSHOTS_P99: ColumnId = ColumnId(1261);
275	pub const PROFILER_CATALOG_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1262);
276	pub const PROFILER_CATALOG_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1263);
277	pub const PROFILER_CATALOG_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1264);
278	pub const PROFILER_CATALOG_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1265);
279	pub const PROFILER_ENGINE_SNAPSHOTS_TS: ColumnId = ColumnId(1266);
280	pub const PROFILER_ENGINE_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1267);
281	pub const PROFILER_ENGINE_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1268);
282	pub const PROFILER_ENGINE_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1269);
283	pub const PROFILER_ENGINE_SNAPSHOTS_CALLS: ColumnId = ColumnId(1270);
284	pub const PROFILER_ENGINE_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1271);
285	pub const PROFILER_ENGINE_SNAPSHOTS_MIN: ColumnId = ColumnId(1272);
286	pub const PROFILER_ENGINE_SNAPSHOTS_MAX: ColumnId = ColumnId(1273);
287	pub const PROFILER_ENGINE_SNAPSHOTS_P50: ColumnId = ColumnId(1274);
288	pub const PROFILER_ENGINE_SNAPSHOTS_P60: ColumnId = ColumnId(1275);
289	pub const PROFILER_ENGINE_SNAPSHOTS_P70: ColumnId = ColumnId(1276);
290	pub const PROFILER_ENGINE_SNAPSHOTS_P75: ColumnId = ColumnId(1277);
291	pub const PROFILER_ENGINE_SNAPSHOTS_P80: ColumnId = ColumnId(1278);
292	pub const PROFILER_ENGINE_SNAPSHOTS_P85: ColumnId = ColumnId(1279);
293	pub const PROFILER_ENGINE_SNAPSHOTS_P90: ColumnId = ColumnId(1280);
294	pub const PROFILER_ENGINE_SNAPSHOTS_P95: ColumnId = ColumnId(1281);
295	pub const PROFILER_ENGINE_SNAPSHOTS_P98: ColumnId = ColumnId(1282);
296	pub const PROFILER_ENGINE_SNAPSHOTS_P99: ColumnId = ColumnId(1283);
297	pub const PROFILER_ENGINE_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1284);
298	pub const PROFILER_ENGINE_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1285);
299	pub const PROFILER_ENGINE_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1286);
300	pub const PROFILER_ENGINE_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1287);
301	pub const PROFILER_MUTATE_SNAPSHOTS_TS: ColumnId = ColumnId(1288);
302	pub const PROFILER_MUTATE_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1289);
303	pub const PROFILER_MUTATE_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1290);
304	pub const PROFILER_MUTATE_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1291);
305	pub const PROFILER_MUTATE_SNAPSHOTS_CALLS: ColumnId = ColumnId(1292);
306	pub const PROFILER_MUTATE_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1293);
307	pub const PROFILER_MUTATE_SNAPSHOTS_MIN: ColumnId = ColumnId(1294);
308	pub const PROFILER_MUTATE_SNAPSHOTS_MAX: ColumnId = ColumnId(1295);
309	pub const PROFILER_MUTATE_SNAPSHOTS_P50: ColumnId = ColumnId(1296);
310	pub const PROFILER_MUTATE_SNAPSHOTS_P60: ColumnId = ColumnId(1297);
311	pub const PROFILER_MUTATE_SNAPSHOTS_P70: ColumnId = ColumnId(1298);
312	pub const PROFILER_MUTATE_SNAPSHOTS_P75: ColumnId = ColumnId(1299);
313	pub const PROFILER_MUTATE_SNAPSHOTS_P80: ColumnId = ColumnId(1300);
314	pub const PROFILER_MUTATE_SNAPSHOTS_P85: ColumnId = ColumnId(1301);
315	pub const PROFILER_MUTATE_SNAPSHOTS_P90: ColumnId = ColumnId(1302);
316	pub const PROFILER_MUTATE_SNAPSHOTS_P95: ColumnId = ColumnId(1303);
317	pub const PROFILER_MUTATE_SNAPSHOTS_P98: ColumnId = ColumnId(1304);
318	pub const PROFILER_MUTATE_SNAPSHOTS_P99: ColumnId = ColumnId(1305);
319	pub const PROFILER_MUTATE_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1306);
320	pub const PROFILER_MUTATE_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1307);
321	pub const PROFILER_MUTATE_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1308);
322	pub const PROFILER_MUTATE_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1309);
323	pub const PROFILER_TRANSPORT_SNAPSHOTS_TS: ColumnId = ColumnId(1310);
324	pub const PROFILER_TRANSPORT_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1311);
325	pub const PROFILER_TRANSPORT_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1312);
326	pub const PROFILER_TRANSPORT_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1313);
327	pub const PROFILER_TRANSPORT_SNAPSHOTS_CALLS: ColumnId = ColumnId(1314);
328	pub const PROFILER_TRANSPORT_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1315);
329	pub const PROFILER_TRANSPORT_SNAPSHOTS_MIN: ColumnId = ColumnId(1316);
330	pub const PROFILER_TRANSPORT_SNAPSHOTS_MAX: ColumnId = ColumnId(1317);
331	pub const PROFILER_TRANSPORT_SNAPSHOTS_P50: ColumnId = ColumnId(1318);
332	pub const PROFILER_TRANSPORT_SNAPSHOTS_P60: ColumnId = ColumnId(1319);
333	pub const PROFILER_TRANSPORT_SNAPSHOTS_P70: ColumnId = ColumnId(1320);
334	pub const PROFILER_TRANSPORT_SNAPSHOTS_P75: ColumnId = ColumnId(1321);
335	pub const PROFILER_TRANSPORT_SNAPSHOTS_P80: ColumnId = ColumnId(1322);
336	pub const PROFILER_TRANSPORT_SNAPSHOTS_P85: ColumnId = ColumnId(1323);
337	pub const PROFILER_TRANSPORT_SNAPSHOTS_P90: ColumnId = ColumnId(1324);
338	pub const PROFILER_TRANSPORT_SNAPSHOTS_P95: ColumnId = ColumnId(1325);
339	pub const PROFILER_TRANSPORT_SNAPSHOTS_P98: ColumnId = ColumnId(1326);
340	pub const PROFILER_TRANSPORT_SNAPSHOTS_P99: ColumnId = ColumnId(1327);
341	pub const PROFILER_TRANSPORT_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1328);
342	pub const PROFILER_TRANSPORT_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1329);
343	pub const PROFILER_TRANSPORT_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1330);
344	pub const PROFILER_TRANSPORT_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1331);
345	pub const PROFILER_TASK_SNAPSHOTS_TS: ColumnId = ColumnId(1332);
346	pub const PROFILER_TASK_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1333);
347	pub const PROFILER_TASK_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1334);
348	pub const PROFILER_TASK_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1335);
349	pub const PROFILER_TASK_SNAPSHOTS_CALLS: ColumnId = ColumnId(1336);
350	pub const PROFILER_TASK_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1337);
351	pub const PROFILER_TASK_SNAPSHOTS_MIN: ColumnId = ColumnId(1338);
352	pub const PROFILER_TASK_SNAPSHOTS_MAX: ColumnId = ColumnId(1339);
353	pub const PROFILER_TASK_SNAPSHOTS_P50: ColumnId = ColumnId(1340);
354	pub const PROFILER_TASK_SNAPSHOTS_P60: ColumnId = ColumnId(1341);
355	pub const PROFILER_TASK_SNAPSHOTS_P70: ColumnId = ColumnId(1342);
356	pub const PROFILER_TASK_SNAPSHOTS_P75: ColumnId = ColumnId(1343);
357	pub const PROFILER_TASK_SNAPSHOTS_P80: ColumnId = ColumnId(1344);
358	pub const PROFILER_TASK_SNAPSHOTS_P85: ColumnId = ColumnId(1345);
359	pub const PROFILER_TASK_SNAPSHOTS_P90: ColumnId = ColumnId(1346);
360	pub const PROFILER_TASK_SNAPSHOTS_P95: ColumnId = ColumnId(1347);
361	pub const PROFILER_TASK_SNAPSHOTS_P98: ColumnId = ColumnId(1348);
362	pub const PROFILER_TASK_SNAPSHOTS_P99: ColumnId = ColumnId(1349);
363	pub const PROFILER_TASK_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1350);
364	pub const PROFILER_TASK_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1351);
365	pub const PROFILER_TASK_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1352);
366	pub const PROFILER_TASK_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1353);
367	pub const PROFILER_POLICY_SNAPSHOTS_TS: ColumnId = ColumnId(1354);
368	pub const PROFILER_POLICY_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1355);
369	pub const PROFILER_POLICY_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1356);
370	pub const PROFILER_POLICY_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1357);
371	pub const PROFILER_POLICY_SNAPSHOTS_CALLS: ColumnId = ColumnId(1358);
372	pub const PROFILER_POLICY_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1359);
373	pub const PROFILER_POLICY_SNAPSHOTS_MIN: ColumnId = ColumnId(1360);
374	pub const PROFILER_POLICY_SNAPSHOTS_MAX: ColumnId = ColumnId(1361);
375	pub const PROFILER_POLICY_SNAPSHOTS_P50: ColumnId = ColumnId(1362);
376	pub const PROFILER_POLICY_SNAPSHOTS_P60: ColumnId = ColumnId(1363);
377	pub const PROFILER_POLICY_SNAPSHOTS_P70: ColumnId = ColumnId(1364);
378	pub const PROFILER_POLICY_SNAPSHOTS_P75: ColumnId = ColumnId(1365);
379	pub const PROFILER_POLICY_SNAPSHOTS_P80: ColumnId = ColumnId(1366);
380	pub const PROFILER_POLICY_SNAPSHOTS_P85: ColumnId = ColumnId(1367);
381	pub const PROFILER_POLICY_SNAPSHOTS_P90: ColumnId = ColumnId(1368);
382	pub const PROFILER_POLICY_SNAPSHOTS_P95: ColumnId = ColumnId(1369);
383	pub const PROFILER_POLICY_SNAPSHOTS_P98: ColumnId = ColumnId(1370);
384	pub const PROFILER_POLICY_SNAPSHOTS_P99: ColumnId = ColumnId(1371);
385	pub const PROFILER_POLICY_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1372);
386	pub const PROFILER_POLICY_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1373);
387	pub const PROFILER_POLICY_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1374);
388	pub const PROFILER_POLICY_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1375);
389	pub const PROFILER_FFI_SNAPSHOTS_TS: ColumnId = ColumnId(1376);
390	pub const PROFILER_FFI_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1377);
391	pub const PROFILER_FFI_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1378);
392	pub const PROFILER_FFI_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1379);
393	pub const PROFILER_FFI_SNAPSHOTS_CALLS: ColumnId = ColumnId(1380);
394	pub const PROFILER_FFI_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1381);
395	pub const PROFILER_FFI_SNAPSHOTS_MIN: ColumnId = ColumnId(1382);
396	pub const PROFILER_FFI_SNAPSHOTS_MAX: ColumnId = ColumnId(1383);
397	pub const PROFILER_FFI_SNAPSHOTS_P50: ColumnId = ColumnId(1384);
398	pub const PROFILER_FFI_SNAPSHOTS_P60: ColumnId = ColumnId(1385);
399	pub const PROFILER_FFI_SNAPSHOTS_P70: ColumnId = ColumnId(1386);
400	pub const PROFILER_FFI_SNAPSHOTS_P75: ColumnId = ColumnId(1387);
401	pub const PROFILER_FFI_SNAPSHOTS_P80: ColumnId = ColumnId(1388);
402	pub const PROFILER_FFI_SNAPSHOTS_P85: ColumnId = ColumnId(1389);
403	pub const PROFILER_FFI_SNAPSHOTS_P90: ColumnId = ColumnId(1390);
404	pub const PROFILER_FFI_SNAPSHOTS_P95: ColumnId = ColumnId(1391);
405	pub const PROFILER_FFI_SNAPSHOTS_P98: ColumnId = ColumnId(1392);
406	pub const PROFILER_FFI_SNAPSHOTS_P99: ColumnId = ColumnId(1393);
407	pub const PROFILER_FFI_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1394);
408	pub const PROFILER_FFI_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1395);
409	pub const PROFILER_FFI_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1396);
410	pub const PROFILER_FFI_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1397);
411	pub const RUNTIME_MEMORY_SNAPSHOTS_TS: ColumnId = ColumnId(1398);
412	pub const RUNTIME_MEMORY_SNAPSHOTS_SCOPE: ColumnId = ColumnId(1399);
413	pub const RUNTIME_MEMORY_SNAPSHOTS_METRIC: ColumnId = ColumnId(1400);
414	pub const RUNTIME_MEMORY_SNAPSHOTS_VALUE: ColumnId = ColumnId(1401);
415	pub const RUNTIME_MEMORY_SNAPSHOTS_UNIT: ColumnId = ColumnId(1402);
416	pub const RUNTIME_WATERMARKS_SNAPSHOTS_TS: ColumnId = ColumnId(1403);
417	pub const RUNTIME_WATERMARKS_SNAPSHOTS_SCOPE: ColumnId = ColumnId(1404);
418	pub const RUNTIME_WATERMARKS_SNAPSHOTS_METRIC: ColumnId = ColumnId(1405);
419	pub const RUNTIME_WATERMARKS_SNAPSHOTS_VALUE: ColumnId = ColumnId(1406);
420	pub const RUNTIME_WATERMARKS_SNAPSHOTS_UNIT: ColumnId = ColumnId(1407);
421
422	pub const PROFILER_CACHE_SNAPSHOTS_TS: ColumnId = ColumnId(1408);
423	pub const PROFILER_CACHE_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1409);
424	pub const PROFILER_CACHE_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1410);
425	pub const PROFILER_CACHE_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1411);
426	pub const PROFILER_CACHE_SNAPSHOTS_CALLS: ColumnId = ColumnId(1412);
427	pub const PROFILER_CACHE_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1413);
428	pub const PROFILER_CACHE_SNAPSHOTS_MIN: ColumnId = ColumnId(1414);
429	pub const PROFILER_CACHE_SNAPSHOTS_MAX: ColumnId = ColumnId(1415);
430	pub const PROFILER_CACHE_SNAPSHOTS_P50: ColumnId = ColumnId(1416);
431	pub const PROFILER_CACHE_SNAPSHOTS_P60: ColumnId = ColumnId(1417);
432	pub const PROFILER_CACHE_SNAPSHOTS_P70: ColumnId = ColumnId(1418);
433	pub const PROFILER_CACHE_SNAPSHOTS_P75: ColumnId = ColumnId(1419);
434	pub const PROFILER_CACHE_SNAPSHOTS_P80: ColumnId = ColumnId(1420);
435	pub const PROFILER_CACHE_SNAPSHOTS_P85: ColumnId = ColumnId(1421);
436	pub const PROFILER_CACHE_SNAPSHOTS_P90: ColumnId = ColumnId(1422);
437	pub const PROFILER_CACHE_SNAPSHOTS_P95: ColumnId = ColumnId(1423);
438	pub const PROFILER_CACHE_SNAPSHOTS_P98: ColumnId = ColumnId(1424);
439	pub const PROFILER_CACHE_SNAPSHOTS_P99: ColumnId = ColumnId(1425);
440	pub const PROFILER_CACHE_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1426);
441	pub const PROFILER_CACHE_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1427);
442	pub const PROFILER_CACHE_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1428);
443	pub const PROFILER_CACHE_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1429);
444	pub const PROFILER_SHAPE_SNAPSHOTS_TS: ColumnId = ColumnId(1430);
445	pub const PROFILER_SHAPE_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1431);
446	pub const PROFILER_SHAPE_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1432);
447	pub const PROFILER_SHAPE_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1433);
448	pub const PROFILER_SHAPE_SNAPSHOTS_CALLS: ColumnId = ColumnId(1434);
449	pub const PROFILER_SHAPE_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1435);
450	pub const PROFILER_SHAPE_SNAPSHOTS_MIN: ColumnId = ColumnId(1436);
451	pub const PROFILER_SHAPE_SNAPSHOTS_MAX: ColumnId = ColumnId(1437);
452	pub const PROFILER_SHAPE_SNAPSHOTS_P50: ColumnId = ColumnId(1438);
453	pub const PROFILER_SHAPE_SNAPSHOTS_P60: ColumnId = ColumnId(1439);
454	pub const PROFILER_SHAPE_SNAPSHOTS_P70: ColumnId = ColumnId(1440);
455	pub const PROFILER_SHAPE_SNAPSHOTS_P75: ColumnId = ColumnId(1441);
456	pub const PROFILER_SHAPE_SNAPSHOTS_P80: ColumnId = ColumnId(1442);
457	pub const PROFILER_SHAPE_SNAPSHOTS_P85: ColumnId = ColumnId(1443);
458	pub const PROFILER_SHAPE_SNAPSHOTS_P90: ColumnId = ColumnId(1444);
459	pub const PROFILER_SHAPE_SNAPSHOTS_P95: ColumnId = ColumnId(1445);
460	pub const PROFILER_SHAPE_SNAPSHOTS_P98: ColumnId = ColumnId(1446);
461	pub const PROFILER_SHAPE_SNAPSHOTS_P99: ColumnId = ColumnId(1447);
462	pub const PROFILER_SHAPE_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1448);
463	pub const PROFILER_SHAPE_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1449);
464	pub const PROFILER_SHAPE_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1450);
465	pub const PROFILER_SHAPE_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1451);
466	pub const PROFILER_API_SNAPSHOTS_TS: ColumnId = ColumnId(1452);
467	pub const PROFILER_API_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1453);
468	pub const PROFILER_API_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1454);
469	pub const PROFILER_API_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1455);
470	pub const PROFILER_API_SNAPSHOTS_CALLS: ColumnId = ColumnId(1456);
471	pub const PROFILER_API_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1457);
472	pub const PROFILER_API_SNAPSHOTS_MIN: ColumnId = ColumnId(1458);
473	pub const PROFILER_API_SNAPSHOTS_MAX: ColumnId = ColumnId(1459);
474	pub const PROFILER_API_SNAPSHOTS_P50: ColumnId = ColumnId(1460);
475	pub const PROFILER_API_SNAPSHOTS_P60: ColumnId = ColumnId(1461);
476	pub const PROFILER_API_SNAPSHOTS_P70: ColumnId = ColumnId(1462);
477	pub const PROFILER_API_SNAPSHOTS_P75: ColumnId = ColumnId(1463);
478	pub const PROFILER_API_SNAPSHOTS_P80: ColumnId = ColumnId(1464);
479	pub const PROFILER_API_SNAPSHOTS_P85: ColumnId = ColumnId(1465);
480	pub const PROFILER_API_SNAPSHOTS_P90: ColumnId = ColumnId(1466);
481	pub const PROFILER_API_SNAPSHOTS_P95: ColumnId = ColumnId(1467);
482	pub const PROFILER_API_SNAPSHOTS_P98: ColumnId = ColumnId(1468);
483	pub const PROFILER_API_SNAPSHOTS_P99: ColumnId = ColumnId(1469);
484	pub const PROFILER_API_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1470);
485	pub const PROFILER_API_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1471);
486	pub const PROFILER_API_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1472);
487	pub const PROFILER_API_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1473);
488	pub const PROFILER_ACTOR_SNAPSHOTS_TS: ColumnId = ColumnId(1474);
489	pub const PROFILER_ACTOR_SNAPSHOTS_SPAN_NAME: ColumnId = ColumnId(1475);
490	pub const PROFILER_ACTOR_SNAPSHOTS_DIM_1: ColumnId = ColumnId(1476);
491	pub const PROFILER_ACTOR_SNAPSHOTS_DIM_2: ColumnId = ColumnId(1477);
492	pub const PROFILER_ACTOR_SNAPSHOTS_CALLS: ColumnId = ColumnId(1478);
493	pub const PROFILER_ACTOR_SNAPSHOTS_TOTAL: ColumnId = ColumnId(1479);
494	pub const PROFILER_ACTOR_SNAPSHOTS_MIN: ColumnId = ColumnId(1480);
495	pub const PROFILER_ACTOR_SNAPSHOTS_MAX: ColumnId = ColumnId(1481);
496	pub const PROFILER_ACTOR_SNAPSHOTS_P50: ColumnId = ColumnId(1482);
497	pub const PROFILER_ACTOR_SNAPSHOTS_P60: ColumnId = ColumnId(1483);
498	pub const PROFILER_ACTOR_SNAPSHOTS_P70: ColumnId = ColumnId(1484);
499	pub const PROFILER_ACTOR_SNAPSHOTS_P75: ColumnId = ColumnId(1485);
500	pub const PROFILER_ACTOR_SNAPSHOTS_P80: ColumnId = ColumnId(1486);
501	pub const PROFILER_ACTOR_SNAPSHOTS_P85: ColumnId = ColumnId(1487);
502	pub const PROFILER_ACTOR_SNAPSHOTS_P90: ColumnId = ColumnId(1488);
503	pub const PROFILER_ACTOR_SNAPSHOTS_P95: ColumnId = ColumnId(1489);
504	pub const PROFILER_ACTOR_SNAPSHOTS_P98: ColumnId = ColumnId(1490);
505	pub const PROFILER_ACTOR_SNAPSHOTS_P99: ColumnId = ColumnId(1491);
506	pub const PROFILER_ACTOR_SNAPSHOTS_EXTRA_0: ColumnId = ColumnId(1492);
507	pub const PROFILER_ACTOR_SNAPSHOTS_EXTRA_1: ColumnId = ColumnId(1493);
508	pub const PROFILER_ACTOR_SNAPSHOTS_EXTRA_2: ColumnId = ColumnId(1494);
509	pub const PROFILER_ACTOR_SNAPSHOTS_EXTRA_3: ColumnId = ColumnId(1495);
510
511	pub const PROFILER_QUERY_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
512		Self::PROFILER_QUERY_SNAPSHOTS_TS,
513		Self::PROFILER_QUERY_SNAPSHOTS_SPAN_NAME,
514		Self::PROFILER_QUERY_SNAPSHOTS_DIM_1,
515		Self::PROFILER_QUERY_SNAPSHOTS_DIM_2,
516		Self::PROFILER_QUERY_SNAPSHOTS_CALLS,
517		Self::PROFILER_QUERY_SNAPSHOTS_TOTAL,
518		Self::PROFILER_QUERY_SNAPSHOTS_MIN,
519		Self::PROFILER_QUERY_SNAPSHOTS_MAX,
520		Self::PROFILER_QUERY_SNAPSHOTS_P50,
521		Self::PROFILER_QUERY_SNAPSHOTS_P60,
522		Self::PROFILER_QUERY_SNAPSHOTS_P70,
523		Self::PROFILER_QUERY_SNAPSHOTS_P75,
524		Self::PROFILER_QUERY_SNAPSHOTS_P80,
525		Self::PROFILER_QUERY_SNAPSHOTS_P85,
526		Self::PROFILER_QUERY_SNAPSHOTS_P90,
527		Self::PROFILER_QUERY_SNAPSHOTS_P95,
528		Self::PROFILER_QUERY_SNAPSHOTS_P98,
529		Self::PROFILER_QUERY_SNAPSHOTS_P99,
530		Self::PROFILER_QUERY_SNAPSHOTS_EXTRA_0,
531		Self::PROFILER_QUERY_SNAPSHOTS_EXTRA_1,
532		Self::PROFILER_QUERY_SNAPSHOTS_EXTRA_2,
533		Self::PROFILER_QUERY_SNAPSHOTS_EXTRA_3,
534	];
535	pub const PROFILER_TXN_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
536		Self::PROFILER_TXN_SNAPSHOTS_TS,
537		Self::PROFILER_TXN_SNAPSHOTS_SPAN_NAME,
538		Self::PROFILER_TXN_SNAPSHOTS_DIM_1,
539		Self::PROFILER_TXN_SNAPSHOTS_DIM_2,
540		Self::PROFILER_TXN_SNAPSHOTS_CALLS,
541		Self::PROFILER_TXN_SNAPSHOTS_TOTAL,
542		Self::PROFILER_TXN_SNAPSHOTS_MIN,
543		Self::PROFILER_TXN_SNAPSHOTS_MAX,
544		Self::PROFILER_TXN_SNAPSHOTS_P50,
545		Self::PROFILER_TXN_SNAPSHOTS_P60,
546		Self::PROFILER_TXN_SNAPSHOTS_P70,
547		Self::PROFILER_TXN_SNAPSHOTS_P75,
548		Self::PROFILER_TXN_SNAPSHOTS_P80,
549		Self::PROFILER_TXN_SNAPSHOTS_P85,
550		Self::PROFILER_TXN_SNAPSHOTS_P90,
551		Self::PROFILER_TXN_SNAPSHOTS_P95,
552		Self::PROFILER_TXN_SNAPSHOTS_P98,
553		Self::PROFILER_TXN_SNAPSHOTS_P99,
554		Self::PROFILER_TXN_SNAPSHOTS_EXTRA_0,
555		Self::PROFILER_TXN_SNAPSHOTS_EXTRA_1,
556		Self::PROFILER_TXN_SNAPSHOTS_EXTRA_2,
557		Self::PROFILER_TXN_SNAPSHOTS_EXTRA_3,
558	];
559	pub const PROFILER_STORAGE_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
560		Self::PROFILER_STORAGE_SNAPSHOTS_TS,
561		Self::PROFILER_STORAGE_SNAPSHOTS_SPAN_NAME,
562		Self::PROFILER_STORAGE_SNAPSHOTS_DIM_1,
563		Self::PROFILER_STORAGE_SNAPSHOTS_DIM_2,
564		Self::PROFILER_STORAGE_SNAPSHOTS_CALLS,
565		Self::PROFILER_STORAGE_SNAPSHOTS_TOTAL,
566		Self::PROFILER_STORAGE_SNAPSHOTS_MIN,
567		Self::PROFILER_STORAGE_SNAPSHOTS_MAX,
568		Self::PROFILER_STORAGE_SNAPSHOTS_P50,
569		Self::PROFILER_STORAGE_SNAPSHOTS_P60,
570		Self::PROFILER_STORAGE_SNAPSHOTS_P70,
571		Self::PROFILER_STORAGE_SNAPSHOTS_P75,
572		Self::PROFILER_STORAGE_SNAPSHOTS_P80,
573		Self::PROFILER_STORAGE_SNAPSHOTS_P85,
574		Self::PROFILER_STORAGE_SNAPSHOTS_P90,
575		Self::PROFILER_STORAGE_SNAPSHOTS_P95,
576		Self::PROFILER_STORAGE_SNAPSHOTS_P98,
577		Self::PROFILER_STORAGE_SNAPSHOTS_P99,
578		Self::PROFILER_STORAGE_SNAPSHOTS_EXTRA_0,
579		Self::PROFILER_STORAGE_SNAPSHOTS_EXTRA_1,
580		Self::PROFILER_STORAGE_SNAPSHOTS_EXTRA_2,
581		Self::PROFILER_STORAGE_SNAPSHOTS_EXTRA_3,
582	];
583	pub const PROFILER_PLAN_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
584		Self::PROFILER_PLAN_SNAPSHOTS_TS,
585		Self::PROFILER_PLAN_SNAPSHOTS_SPAN_NAME,
586		Self::PROFILER_PLAN_SNAPSHOTS_DIM_1,
587		Self::PROFILER_PLAN_SNAPSHOTS_DIM_2,
588		Self::PROFILER_PLAN_SNAPSHOTS_CALLS,
589		Self::PROFILER_PLAN_SNAPSHOTS_TOTAL,
590		Self::PROFILER_PLAN_SNAPSHOTS_MIN,
591		Self::PROFILER_PLAN_SNAPSHOTS_MAX,
592		Self::PROFILER_PLAN_SNAPSHOTS_P50,
593		Self::PROFILER_PLAN_SNAPSHOTS_P60,
594		Self::PROFILER_PLAN_SNAPSHOTS_P70,
595		Self::PROFILER_PLAN_SNAPSHOTS_P75,
596		Self::PROFILER_PLAN_SNAPSHOTS_P80,
597		Self::PROFILER_PLAN_SNAPSHOTS_P85,
598		Self::PROFILER_PLAN_SNAPSHOTS_P90,
599		Self::PROFILER_PLAN_SNAPSHOTS_P95,
600		Self::PROFILER_PLAN_SNAPSHOTS_P98,
601		Self::PROFILER_PLAN_SNAPSHOTS_P99,
602		Self::PROFILER_PLAN_SNAPSHOTS_EXTRA_0,
603		Self::PROFILER_PLAN_SNAPSHOTS_EXTRA_1,
604		Self::PROFILER_PLAN_SNAPSHOTS_EXTRA_2,
605		Self::PROFILER_PLAN_SNAPSHOTS_EXTRA_3,
606	];
607	pub const PROFILER_CDC_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
608		Self::PROFILER_CDC_SNAPSHOTS_TS,
609		Self::PROFILER_CDC_SNAPSHOTS_SPAN_NAME,
610		Self::PROFILER_CDC_SNAPSHOTS_DIM_1,
611		Self::PROFILER_CDC_SNAPSHOTS_DIM_2,
612		Self::PROFILER_CDC_SNAPSHOTS_CALLS,
613		Self::PROFILER_CDC_SNAPSHOTS_TOTAL,
614		Self::PROFILER_CDC_SNAPSHOTS_MIN,
615		Self::PROFILER_CDC_SNAPSHOTS_MAX,
616		Self::PROFILER_CDC_SNAPSHOTS_P50,
617		Self::PROFILER_CDC_SNAPSHOTS_P60,
618		Self::PROFILER_CDC_SNAPSHOTS_P70,
619		Self::PROFILER_CDC_SNAPSHOTS_P75,
620		Self::PROFILER_CDC_SNAPSHOTS_P80,
621		Self::PROFILER_CDC_SNAPSHOTS_P85,
622		Self::PROFILER_CDC_SNAPSHOTS_P90,
623		Self::PROFILER_CDC_SNAPSHOTS_P95,
624		Self::PROFILER_CDC_SNAPSHOTS_P98,
625		Self::PROFILER_CDC_SNAPSHOTS_P99,
626		Self::PROFILER_CDC_SNAPSHOTS_EXTRA_0,
627		Self::PROFILER_CDC_SNAPSHOTS_EXTRA_1,
628		Self::PROFILER_CDC_SNAPSHOTS_EXTRA_2,
629		Self::PROFILER_CDC_SNAPSHOTS_EXTRA_3,
630	];
631	pub const PROFILER_FLOW_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
632		Self::PROFILER_FLOW_SNAPSHOTS_TS,
633		Self::PROFILER_FLOW_SNAPSHOTS_SPAN_NAME,
634		Self::PROFILER_FLOW_SNAPSHOTS_DIM_1,
635		Self::PROFILER_FLOW_SNAPSHOTS_DIM_2,
636		Self::PROFILER_FLOW_SNAPSHOTS_CALLS,
637		Self::PROFILER_FLOW_SNAPSHOTS_TOTAL,
638		Self::PROFILER_FLOW_SNAPSHOTS_MIN,
639		Self::PROFILER_FLOW_SNAPSHOTS_MAX,
640		Self::PROFILER_FLOW_SNAPSHOTS_P50,
641		Self::PROFILER_FLOW_SNAPSHOTS_P60,
642		Self::PROFILER_FLOW_SNAPSHOTS_P70,
643		Self::PROFILER_FLOW_SNAPSHOTS_P75,
644		Self::PROFILER_FLOW_SNAPSHOTS_P80,
645		Self::PROFILER_FLOW_SNAPSHOTS_P85,
646		Self::PROFILER_FLOW_SNAPSHOTS_P90,
647		Self::PROFILER_FLOW_SNAPSHOTS_P95,
648		Self::PROFILER_FLOW_SNAPSHOTS_P98,
649		Self::PROFILER_FLOW_SNAPSHOTS_P99,
650		Self::PROFILER_FLOW_SNAPSHOTS_EXTRA_0,
651		Self::PROFILER_FLOW_SNAPSHOTS_EXTRA_1,
652		Self::PROFILER_FLOW_SNAPSHOTS_EXTRA_2,
653		Self::PROFILER_FLOW_SNAPSHOTS_EXTRA_3,
654	];
655	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
656		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_TS,
657		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_SPAN_NAME,
658		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_DIM_1,
659		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_DIM_2,
660		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_CALLS,
661		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_TOTAL,
662		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_MIN,
663		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_MAX,
664		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P50,
665		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P60,
666		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P70,
667		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P75,
668		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P80,
669		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P85,
670		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P90,
671		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P95,
672		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P98,
673		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_P99,
674		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_EXTRA_0,
675		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_EXTRA_1,
676		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_EXTRA_2,
677		Self::PROFILER_SUBSCRIPTION_SNAPSHOTS_EXTRA_3,
678	];
679	pub const PROFILER_SERVER_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
680		Self::PROFILER_SERVER_SNAPSHOTS_TS,
681		Self::PROFILER_SERVER_SNAPSHOTS_SPAN_NAME,
682		Self::PROFILER_SERVER_SNAPSHOTS_DIM_1,
683		Self::PROFILER_SERVER_SNAPSHOTS_DIM_2,
684		Self::PROFILER_SERVER_SNAPSHOTS_CALLS,
685		Self::PROFILER_SERVER_SNAPSHOTS_TOTAL,
686		Self::PROFILER_SERVER_SNAPSHOTS_MIN,
687		Self::PROFILER_SERVER_SNAPSHOTS_MAX,
688		Self::PROFILER_SERVER_SNAPSHOTS_P50,
689		Self::PROFILER_SERVER_SNAPSHOTS_P60,
690		Self::PROFILER_SERVER_SNAPSHOTS_P70,
691		Self::PROFILER_SERVER_SNAPSHOTS_P75,
692		Self::PROFILER_SERVER_SNAPSHOTS_P80,
693		Self::PROFILER_SERVER_SNAPSHOTS_P85,
694		Self::PROFILER_SERVER_SNAPSHOTS_P90,
695		Self::PROFILER_SERVER_SNAPSHOTS_P95,
696		Self::PROFILER_SERVER_SNAPSHOTS_P98,
697		Self::PROFILER_SERVER_SNAPSHOTS_P99,
698		Self::PROFILER_SERVER_SNAPSHOTS_EXTRA_0,
699		Self::PROFILER_SERVER_SNAPSHOTS_EXTRA_1,
700		Self::PROFILER_SERVER_SNAPSHOTS_EXTRA_2,
701		Self::PROFILER_SERVER_SNAPSHOTS_EXTRA_3,
702	];
703	pub const PROFILER_WIRE_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
704		Self::PROFILER_WIRE_SNAPSHOTS_TS,
705		Self::PROFILER_WIRE_SNAPSHOTS_SPAN_NAME,
706		Self::PROFILER_WIRE_SNAPSHOTS_DIM_1,
707		Self::PROFILER_WIRE_SNAPSHOTS_DIM_2,
708		Self::PROFILER_WIRE_SNAPSHOTS_CALLS,
709		Self::PROFILER_WIRE_SNAPSHOTS_TOTAL,
710		Self::PROFILER_WIRE_SNAPSHOTS_MIN,
711		Self::PROFILER_WIRE_SNAPSHOTS_MAX,
712		Self::PROFILER_WIRE_SNAPSHOTS_P50,
713		Self::PROFILER_WIRE_SNAPSHOTS_P60,
714		Self::PROFILER_WIRE_SNAPSHOTS_P70,
715		Self::PROFILER_WIRE_SNAPSHOTS_P75,
716		Self::PROFILER_WIRE_SNAPSHOTS_P80,
717		Self::PROFILER_WIRE_SNAPSHOTS_P85,
718		Self::PROFILER_WIRE_SNAPSHOTS_P90,
719		Self::PROFILER_WIRE_SNAPSHOTS_P95,
720		Self::PROFILER_WIRE_SNAPSHOTS_P98,
721		Self::PROFILER_WIRE_SNAPSHOTS_P99,
722		Self::PROFILER_WIRE_SNAPSHOTS_EXTRA_0,
723		Self::PROFILER_WIRE_SNAPSHOTS_EXTRA_1,
724		Self::PROFILER_WIRE_SNAPSHOTS_EXTRA_2,
725		Self::PROFILER_WIRE_SNAPSHOTS_EXTRA_3,
726	];
727	pub const PROFILER_AUTH_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
728		Self::PROFILER_AUTH_SNAPSHOTS_TS,
729		Self::PROFILER_AUTH_SNAPSHOTS_SPAN_NAME,
730		Self::PROFILER_AUTH_SNAPSHOTS_DIM_1,
731		Self::PROFILER_AUTH_SNAPSHOTS_DIM_2,
732		Self::PROFILER_AUTH_SNAPSHOTS_CALLS,
733		Self::PROFILER_AUTH_SNAPSHOTS_TOTAL,
734		Self::PROFILER_AUTH_SNAPSHOTS_MIN,
735		Self::PROFILER_AUTH_SNAPSHOTS_MAX,
736		Self::PROFILER_AUTH_SNAPSHOTS_P50,
737		Self::PROFILER_AUTH_SNAPSHOTS_P60,
738		Self::PROFILER_AUTH_SNAPSHOTS_P70,
739		Self::PROFILER_AUTH_SNAPSHOTS_P75,
740		Self::PROFILER_AUTH_SNAPSHOTS_P80,
741		Self::PROFILER_AUTH_SNAPSHOTS_P85,
742		Self::PROFILER_AUTH_SNAPSHOTS_P90,
743		Self::PROFILER_AUTH_SNAPSHOTS_P95,
744		Self::PROFILER_AUTH_SNAPSHOTS_P98,
745		Self::PROFILER_AUTH_SNAPSHOTS_P99,
746		Self::PROFILER_AUTH_SNAPSHOTS_EXTRA_0,
747		Self::PROFILER_AUTH_SNAPSHOTS_EXTRA_1,
748		Self::PROFILER_AUTH_SNAPSHOTS_EXTRA_2,
749		Self::PROFILER_AUTH_SNAPSHOTS_EXTRA_3,
750	];
751	pub const PROFILER_CATALOG_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
752		Self::PROFILER_CATALOG_SNAPSHOTS_TS,
753		Self::PROFILER_CATALOG_SNAPSHOTS_SPAN_NAME,
754		Self::PROFILER_CATALOG_SNAPSHOTS_DIM_1,
755		Self::PROFILER_CATALOG_SNAPSHOTS_DIM_2,
756		Self::PROFILER_CATALOG_SNAPSHOTS_CALLS,
757		Self::PROFILER_CATALOG_SNAPSHOTS_TOTAL,
758		Self::PROFILER_CATALOG_SNAPSHOTS_MIN,
759		Self::PROFILER_CATALOG_SNAPSHOTS_MAX,
760		Self::PROFILER_CATALOG_SNAPSHOTS_P50,
761		Self::PROFILER_CATALOG_SNAPSHOTS_P60,
762		Self::PROFILER_CATALOG_SNAPSHOTS_P70,
763		Self::PROFILER_CATALOG_SNAPSHOTS_P75,
764		Self::PROFILER_CATALOG_SNAPSHOTS_P80,
765		Self::PROFILER_CATALOG_SNAPSHOTS_P85,
766		Self::PROFILER_CATALOG_SNAPSHOTS_P90,
767		Self::PROFILER_CATALOG_SNAPSHOTS_P95,
768		Self::PROFILER_CATALOG_SNAPSHOTS_P98,
769		Self::PROFILER_CATALOG_SNAPSHOTS_P99,
770		Self::PROFILER_CATALOG_SNAPSHOTS_EXTRA_0,
771		Self::PROFILER_CATALOG_SNAPSHOTS_EXTRA_1,
772		Self::PROFILER_CATALOG_SNAPSHOTS_EXTRA_2,
773		Self::PROFILER_CATALOG_SNAPSHOTS_EXTRA_3,
774	];
775	pub const PROFILER_ENGINE_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
776		Self::PROFILER_ENGINE_SNAPSHOTS_TS,
777		Self::PROFILER_ENGINE_SNAPSHOTS_SPAN_NAME,
778		Self::PROFILER_ENGINE_SNAPSHOTS_DIM_1,
779		Self::PROFILER_ENGINE_SNAPSHOTS_DIM_2,
780		Self::PROFILER_ENGINE_SNAPSHOTS_CALLS,
781		Self::PROFILER_ENGINE_SNAPSHOTS_TOTAL,
782		Self::PROFILER_ENGINE_SNAPSHOTS_MIN,
783		Self::PROFILER_ENGINE_SNAPSHOTS_MAX,
784		Self::PROFILER_ENGINE_SNAPSHOTS_P50,
785		Self::PROFILER_ENGINE_SNAPSHOTS_P60,
786		Self::PROFILER_ENGINE_SNAPSHOTS_P70,
787		Self::PROFILER_ENGINE_SNAPSHOTS_P75,
788		Self::PROFILER_ENGINE_SNAPSHOTS_P80,
789		Self::PROFILER_ENGINE_SNAPSHOTS_P85,
790		Self::PROFILER_ENGINE_SNAPSHOTS_P90,
791		Self::PROFILER_ENGINE_SNAPSHOTS_P95,
792		Self::PROFILER_ENGINE_SNAPSHOTS_P98,
793		Self::PROFILER_ENGINE_SNAPSHOTS_P99,
794		Self::PROFILER_ENGINE_SNAPSHOTS_EXTRA_0,
795		Self::PROFILER_ENGINE_SNAPSHOTS_EXTRA_1,
796		Self::PROFILER_ENGINE_SNAPSHOTS_EXTRA_2,
797		Self::PROFILER_ENGINE_SNAPSHOTS_EXTRA_3,
798	];
799	pub const PROFILER_MUTATE_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
800		Self::PROFILER_MUTATE_SNAPSHOTS_TS,
801		Self::PROFILER_MUTATE_SNAPSHOTS_SPAN_NAME,
802		Self::PROFILER_MUTATE_SNAPSHOTS_DIM_1,
803		Self::PROFILER_MUTATE_SNAPSHOTS_DIM_2,
804		Self::PROFILER_MUTATE_SNAPSHOTS_CALLS,
805		Self::PROFILER_MUTATE_SNAPSHOTS_TOTAL,
806		Self::PROFILER_MUTATE_SNAPSHOTS_MIN,
807		Self::PROFILER_MUTATE_SNAPSHOTS_MAX,
808		Self::PROFILER_MUTATE_SNAPSHOTS_P50,
809		Self::PROFILER_MUTATE_SNAPSHOTS_P60,
810		Self::PROFILER_MUTATE_SNAPSHOTS_P70,
811		Self::PROFILER_MUTATE_SNAPSHOTS_P75,
812		Self::PROFILER_MUTATE_SNAPSHOTS_P80,
813		Self::PROFILER_MUTATE_SNAPSHOTS_P85,
814		Self::PROFILER_MUTATE_SNAPSHOTS_P90,
815		Self::PROFILER_MUTATE_SNAPSHOTS_P95,
816		Self::PROFILER_MUTATE_SNAPSHOTS_P98,
817		Self::PROFILER_MUTATE_SNAPSHOTS_P99,
818		Self::PROFILER_MUTATE_SNAPSHOTS_EXTRA_0,
819		Self::PROFILER_MUTATE_SNAPSHOTS_EXTRA_1,
820		Self::PROFILER_MUTATE_SNAPSHOTS_EXTRA_2,
821		Self::PROFILER_MUTATE_SNAPSHOTS_EXTRA_3,
822	];
823	pub const PROFILER_TRANSPORT_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
824		Self::PROFILER_TRANSPORT_SNAPSHOTS_TS,
825		Self::PROFILER_TRANSPORT_SNAPSHOTS_SPAN_NAME,
826		Self::PROFILER_TRANSPORT_SNAPSHOTS_DIM_1,
827		Self::PROFILER_TRANSPORT_SNAPSHOTS_DIM_2,
828		Self::PROFILER_TRANSPORT_SNAPSHOTS_CALLS,
829		Self::PROFILER_TRANSPORT_SNAPSHOTS_TOTAL,
830		Self::PROFILER_TRANSPORT_SNAPSHOTS_MIN,
831		Self::PROFILER_TRANSPORT_SNAPSHOTS_MAX,
832		Self::PROFILER_TRANSPORT_SNAPSHOTS_P50,
833		Self::PROFILER_TRANSPORT_SNAPSHOTS_P60,
834		Self::PROFILER_TRANSPORT_SNAPSHOTS_P70,
835		Self::PROFILER_TRANSPORT_SNAPSHOTS_P75,
836		Self::PROFILER_TRANSPORT_SNAPSHOTS_P80,
837		Self::PROFILER_TRANSPORT_SNAPSHOTS_P85,
838		Self::PROFILER_TRANSPORT_SNAPSHOTS_P90,
839		Self::PROFILER_TRANSPORT_SNAPSHOTS_P95,
840		Self::PROFILER_TRANSPORT_SNAPSHOTS_P98,
841		Self::PROFILER_TRANSPORT_SNAPSHOTS_P99,
842		Self::PROFILER_TRANSPORT_SNAPSHOTS_EXTRA_0,
843		Self::PROFILER_TRANSPORT_SNAPSHOTS_EXTRA_1,
844		Self::PROFILER_TRANSPORT_SNAPSHOTS_EXTRA_2,
845		Self::PROFILER_TRANSPORT_SNAPSHOTS_EXTRA_3,
846	];
847	pub const PROFILER_TASK_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
848		Self::PROFILER_TASK_SNAPSHOTS_TS,
849		Self::PROFILER_TASK_SNAPSHOTS_SPAN_NAME,
850		Self::PROFILER_TASK_SNAPSHOTS_DIM_1,
851		Self::PROFILER_TASK_SNAPSHOTS_DIM_2,
852		Self::PROFILER_TASK_SNAPSHOTS_CALLS,
853		Self::PROFILER_TASK_SNAPSHOTS_TOTAL,
854		Self::PROFILER_TASK_SNAPSHOTS_MIN,
855		Self::PROFILER_TASK_SNAPSHOTS_MAX,
856		Self::PROFILER_TASK_SNAPSHOTS_P50,
857		Self::PROFILER_TASK_SNAPSHOTS_P60,
858		Self::PROFILER_TASK_SNAPSHOTS_P70,
859		Self::PROFILER_TASK_SNAPSHOTS_P75,
860		Self::PROFILER_TASK_SNAPSHOTS_P80,
861		Self::PROFILER_TASK_SNAPSHOTS_P85,
862		Self::PROFILER_TASK_SNAPSHOTS_P90,
863		Self::PROFILER_TASK_SNAPSHOTS_P95,
864		Self::PROFILER_TASK_SNAPSHOTS_P98,
865		Self::PROFILER_TASK_SNAPSHOTS_P99,
866		Self::PROFILER_TASK_SNAPSHOTS_EXTRA_0,
867		Self::PROFILER_TASK_SNAPSHOTS_EXTRA_1,
868		Self::PROFILER_TASK_SNAPSHOTS_EXTRA_2,
869		Self::PROFILER_TASK_SNAPSHOTS_EXTRA_3,
870	];
871	pub const PROFILER_POLICY_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
872		Self::PROFILER_POLICY_SNAPSHOTS_TS,
873		Self::PROFILER_POLICY_SNAPSHOTS_SPAN_NAME,
874		Self::PROFILER_POLICY_SNAPSHOTS_DIM_1,
875		Self::PROFILER_POLICY_SNAPSHOTS_DIM_2,
876		Self::PROFILER_POLICY_SNAPSHOTS_CALLS,
877		Self::PROFILER_POLICY_SNAPSHOTS_TOTAL,
878		Self::PROFILER_POLICY_SNAPSHOTS_MIN,
879		Self::PROFILER_POLICY_SNAPSHOTS_MAX,
880		Self::PROFILER_POLICY_SNAPSHOTS_P50,
881		Self::PROFILER_POLICY_SNAPSHOTS_P60,
882		Self::PROFILER_POLICY_SNAPSHOTS_P70,
883		Self::PROFILER_POLICY_SNAPSHOTS_P75,
884		Self::PROFILER_POLICY_SNAPSHOTS_P80,
885		Self::PROFILER_POLICY_SNAPSHOTS_P85,
886		Self::PROFILER_POLICY_SNAPSHOTS_P90,
887		Self::PROFILER_POLICY_SNAPSHOTS_P95,
888		Self::PROFILER_POLICY_SNAPSHOTS_P98,
889		Self::PROFILER_POLICY_SNAPSHOTS_P99,
890		Self::PROFILER_POLICY_SNAPSHOTS_EXTRA_0,
891		Self::PROFILER_POLICY_SNAPSHOTS_EXTRA_1,
892		Self::PROFILER_POLICY_SNAPSHOTS_EXTRA_2,
893		Self::PROFILER_POLICY_SNAPSHOTS_EXTRA_3,
894	];
895	pub const PROFILER_FFI_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
896		Self::PROFILER_FFI_SNAPSHOTS_TS,
897		Self::PROFILER_FFI_SNAPSHOTS_SPAN_NAME,
898		Self::PROFILER_FFI_SNAPSHOTS_DIM_1,
899		Self::PROFILER_FFI_SNAPSHOTS_DIM_2,
900		Self::PROFILER_FFI_SNAPSHOTS_CALLS,
901		Self::PROFILER_FFI_SNAPSHOTS_TOTAL,
902		Self::PROFILER_FFI_SNAPSHOTS_MIN,
903		Self::PROFILER_FFI_SNAPSHOTS_MAX,
904		Self::PROFILER_FFI_SNAPSHOTS_P50,
905		Self::PROFILER_FFI_SNAPSHOTS_P60,
906		Self::PROFILER_FFI_SNAPSHOTS_P70,
907		Self::PROFILER_FFI_SNAPSHOTS_P75,
908		Self::PROFILER_FFI_SNAPSHOTS_P80,
909		Self::PROFILER_FFI_SNAPSHOTS_P85,
910		Self::PROFILER_FFI_SNAPSHOTS_P90,
911		Self::PROFILER_FFI_SNAPSHOTS_P95,
912		Self::PROFILER_FFI_SNAPSHOTS_P98,
913		Self::PROFILER_FFI_SNAPSHOTS_P99,
914		Self::PROFILER_FFI_SNAPSHOTS_EXTRA_0,
915		Self::PROFILER_FFI_SNAPSHOTS_EXTRA_1,
916		Self::PROFILER_FFI_SNAPSHOTS_EXTRA_2,
917		Self::PROFILER_FFI_SNAPSHOTS_EXTRA_3,
918	];
919	pub const PROFILER_CACHE_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
920		Self::PROFILER_CACHE_SNAPSHOTS_TS,
921		Self::PROFILER_CACHE_SNAPSHOTS_SPAN_NAME,
922		Self::PROFILER_CACHE_SNAPSHOTS_DIM_1,
923		Self::PROFILER_CACHE_SNAPSHOTS_DIM_2,
924		Self::PROFILER_CACHE_SNAPSHOTS_CALLS,
925		Self::PROFILER_CACHE_SNAPSHOTS_TOTAL,
926		Self::PROFILER_CACHE_SNAPSHOTS_MIN,
927		Self::PROFILER_CACHE_SNAPSHOTS_MAX,
928		Self::PROFILER_CACHE_SNAPSHOTS_P50,
929		Self::PROFILER_CACHE_SNAPSHOTS_P60,
930		Self::PROFILER_CACHE_SNAPSHOTS_P70,
931		Self::PROFILER_CACHE_SNAPSHOTS_P75,
932		Self::PROFILER_CACHE_SNAPSHOTS_P80,
933		Self::PROFILER_CACHE_SNAPSHOTS_P85,
934		Self::PROFILER_CACHE_SNAPSHOTS_P90,
935		Self::PROFILER_CACHE_SNAPSHOTS_P95,
936		Self::PROFILER_CACHE_SNAPSHOTS_P98,
937		Self::PROFILER_CACHE_SNAPSHOTS_P99,
938		Self::PROFILER_CACHE_SNAPSHOTS_EXTRA_0,
939		Self::PROFILER_CACHE_SNAPSHOTS_EXTRA_1,
940		Self::PROFILER_CACHE_SNAPSHOTS_EXTRA_2,
941		Self::PROFILER_CACHE_SNAPSHOTS_EXTRA_3,
942	];
943	pub const PROFILER_SHAPE_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
944		Self::PROFILER_SHAPE_SNAPSHOTS_TS,
945		Self::PROFILER_SHAPE_SNAPSHOTS_SPAN_NAME,
946		Self::PROFILER_SHAPE_SNAPSHOTS_DIM_1,
947		Self::PROFILER_SHAPE_SNAPSHOTS_DIM_2,
948		Self::PROFILER_SHAPE_SNAPSHOTS_CALLS,
949		Self::PROFILER_SHAPE_SNAPSHOTS_TOTAL,
950		Self::PROFILER_SHAPE_SNAPSHOTS_MIN,
951		Self::PROFILER_SHAPE_SNAPSHOTS_MAX,
952		Self::PROFILER_SHAPE_SNAPSHOTS_P50,
953		Self::PROFILER_SHAPE_SNAPSHOTS_P60,
954		Self::PROFILER_SHAPE_SNAPSHOTS_P70,
955		Self::PROFILER_SHAPE_SNAPSHOTS_P75,
956		Self::PROFILER_SHAPE_SNAPSHOTS_P80,
957		Self::PROFILER_SHAPE_SNAPSHOTS_P85,
958		Self::PROFILER_SHAPE_SNAPSHOTS_P90,
959		Self::PROFILER_SHAPE_SNAPSHOTS_P95,
960		Self::PROFILER_SHAPE_SNAPSHOTS_P98,
961		Self::PROFILER_SHAPE_SNAPSHOTS_P99,
962		Self::PROFILER_SHAPE_SNAPSHOTS_EXTRA_0,
963		Self::PROFILER_SHAPE_SNAPSHOTS_EXTRA_1,
964		Self::PROFILER_SHAPE_SNAPSHOTS_EXTRA_2,
965		Self::PROFILER_SHAPE_SNAPSHOTS_EXTRA_3,
966	];
967	pub const PROFILER_API_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
968		Self::PROFILER_API_SNAPSHOTS_TS,
969		Self::PROFILER_API_SNAPSHOTS_SPAN_NAME,
970		Self::PROFILER_API_SNAPSHOTS_DIM_1,
971		Self::PROFILER_API_SNAPSHOTS_DIM_2,
972		Self::PROFILER_API_SNAPSHOTS_CALLS,
973		Self::PROFILER_API_SNAPSHOTS_TOTAL,
974		Self::PROFILER_API_SNAPSHOTS_MIN,
975		Self::PROFILER_API_SNAPSHOTS_MAX,
976		Self::PROFILER_API_SNAPSHOTS_P50,
977		Self::PROFILER_API_SNAPSHOTS_P60,
978		Self::PROFILER_API_SNAPSHOTS_P70,
979		Self::PROFILER_API_SNAPSHOTS_P75,
980		Self::PROFILER_API_SNAPSHOTS_P80,
981		Self::PROFILER_API_SNAPSHOTS_P85,
982		Self::PROFILER_API_SNAPSHOTS_P90,
983		Self::PROFILER_API_SNAPSHOTS_P95,
984		Self::PROFILER_API_SNAPSHOTS_P98,
985		Self::PROFILER_API_SNAPSHOTS_P99,
986		Self::PROFILER_API_SNAPSHOTS_EXTRA_0,
987		Self::PROFILER_API_SNAPSHOTS_EXTRA_1,
988		Self::PROFILER_API_SNAPSHOTS_EXTRA_2,
989		Self::PROFILER_API_SNAPSHOTS_EXTRA_3,
990	];
991	pub const PROFILER_ACTOR_SNAPSHOTS_COLUMNS: [ColumnId; 22] = [
992		Self::PROFILER_ACTOR_SNAPSHOTS_TS,
993		Self::PROFILER_ACTOR_SNAPSHOTS_SPAN_NAME,
994		Self::PROFILER_ACTOR_SNAPSHOTS_DIM_1,
995		Self::PROFILER_ACTOR_SNAPSHOTS_DIM_2,
996		Self::PROFILER_ACTOR_SNAPSHOTS_CALLS,
997		Self::PROFILER_ACTOR_SNAPSHOTS_TOTAL,
998		Self::PROFILER_ACTOR_SNAPSHOTS_MIN,
999		Self::PROFILER_ACTOR_SNAPSHOTS_MAX,
1000		Self::PROFILER_ACTOR_SNAPSHOTS_P50,
1001		Self::PROFILER_ACTOR_SNAPSHOTS_P60,
1002		Self::PROFILER_ACTOR_SNAPSHOTS_P70,
1003		Self::PROFILER_ACTOR_SNAPSHOTS_P75,
1004		Self::PROFILER_ACTOR_SNAPSHOTS_P80,
1005		Self::PROFILER_ACTOR_SNAPSHOTS_P85,
1006		Self::PROFILER_ACTOR_SNAPSHOTS_P90,
1007		Self::PROFILER_ACTOR_SNAPSHOTS_P95,
1008		Self::PROFILER_ACTOR_SNAPSHOTS_P98,
1009		Self::PROFILER_ACTOR_SNAPSHOTS_P99,
1010		Self::PROFILER_ACTOR_SNAPSHOTS_EXTRA_0,
1011		Self::PROFILER_ACTOR_SNAPSHOTS_EXTRA_1,
1012		Self::PROFILER_ACTOR_SNAPSHOTS_EXTRA_2,
1013		Self::PROFILER_ACTOR_SNAPSHOTS_EXTRA_3,
1014	];
1015	pub const RUNTIME_MEMORY_SNAPSHOTS_COLUMNS: [ColumnId; 5] = [
1016		Self::RUNTIME_MEMORY_SNAPSHOTS_TS,
1017		Self::RUNTIME_MEMORY_SNAPSHOTS_SCOPE,
1018		Self::RUNTIME_MEMORY_SNAPSHOTS_METRIC,
1019		Self::RUNTIME_MEMORY_SNAPSHOTS_VALUE,
1020		Self::RUNTIME_MEMORY_SNAPSHOTS_UNIT,
1021	];
1022	pub const RUNTIME_WATERMARKS_SNAPSHOTS_COLUMNS: [ColumnId; 5] = [
1023		Self::RUNTIME_WATERMARKS_SNAPSHOTS_TS,
1024		Self::RUNTIME_WATERMARKS_SNAPSHOTS_SCOPE,
1025		Self::RUNTIME_WATERMARKS_SNAPSHOTS_METRIC,
1026		Self::RUNTIME_WATERMARKS_SNAPSHOTS_VALUE,
1027		Self::RUNTIME_WATERMARKS_SNAPSHOTS_UNIT,
1028	];
1029}
1030
1031impl Deref for ColumnId {
1032	type Target = u64;
1033
1034	fn deref(&self) -> &Self::Target {
1035		&self.0
1036	}
1037}
1038
1039impl PartialEq<u64> for ColumnId {
1040	fn eq(&self, other: &u64) -> bool {
1041		self.0.eq(other)
1042	}
1043}
1044
1045impl From<ColumnId> for u64 {
1046	fn from(value: ColumnId) -> Self {
1047		value.0
1048	}
1049}
1050
1051impl Serialize for ColumnId {
1052	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1053	where
1054		S: Serializer,
1055	{
1056		serializer.serialize_u64(self.0)
1057	}
1058}
1059
1060impl<'de> Deserialize<'de> for ColumnId {
1061	fn deserialize<D>(deserializer: D) -> Result<ColumnId, D::Error>
1062	where
1063		D: Deserializer<'de>,
1064	{
1065		struct U64Visitor;
1066
1067		impl Visitor<'_> for U64Visitor {
1068			type Value = ColumnId;
1069
1070			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1071				formatter.write_str("an unsigned 64-bit number")
1072			}
1073
1074			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1075				Ok(ColumnId(value))
1076			}
1077		}
1078
1079		deserializer.deserialize_u64(U64Visitor)
1080	}
1081}
1082
1083#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1084pub enum IndexId {
1085	Primary(PrimaryKeyId),
1086}
1087
1088impl IndexId {
1089	pub fn as_u64(&self) -> u64 {
1090		match self {
1091			IndexId::Primary(id) => id.0,
1092		}
1093	}
1094
1095	pub fn primary(id: impl Into<PrimaryKeyId>) -> Self {
1096		IndexId::Primary(id.into())
1097	}
1098
1099	pub fn next(&self) -> IndexId {
1100		match self {
1101			IndexId::Primary(primary) => IndexId::Primary(PrimaryKeyId(primary.0 + 1)),
1102		}
1103	}
1104
1105	pub fn prev(&self) -> IndexId {
1106		match self {
1107			IndexId::Primary(primary) => IndexId::Primary(PrimaryKeyId(primary.0.wrapping_sub(1))),
1108		}
1109	}
1110}
1111
1112impl Deref for IndexId {
1113	type Target = u64;
1114
1115	fn deref(&self) -> &Self::Target {
1116		match self {
1117			IndexId::Primary(id) => &id.0,
1118		}
1119	}
1120}
1121
1122impl PartialEq<u64> for IndexId {
1123	fn eq(&self, other: &u64) -> bool {
1124		self.as_u64().eq(other)
1125	}
1126}
1127
1128impl From<IndexId> for u64 {
1129	fn from(value: IndexId) -> Self {
1130		value.as_u64()
1131	}
1132}
1133
1134impl Serialize for IndexId {
1135	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1136	where
1137		S: Serializer,
1138	{
1139		serializer.serialize_u64(self.as_u64())
1140	}
1141}
1142
1143impl<'de> Deserialize<'de> for IndexId {
1144	fn deserialize<D>(deserializer: D) -> Result<IndexId, D::Error>
1145	where
1146		D: Deserializer<'de>,
1147	{
1148		struct U64Visitor;
1149
1150		impl Visitor<'_> for U64Visitor {
1151			type Value = IndexId;
1152
1153			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1154				formatter.write_str("an unsigned 64-bit number")
1155			}
1156
1157			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1158				Ok(IndexId::Primary(PrimaryKeyId(value)))
1159			}
1160		}
1161
1162		deserializer.deserialize_u64(U64Visitor)
1163	}
1164}
1165
1166#[repr(transparent)]
1167#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1168pub struct ColumnPropertyId(pub u64);
1169
1170impl Deref for ColumnPropertyId {
1171	type Target = u64;
1172
1173	fn deref(&self) -> &Self::Target {
1174		&self.0
1175	}
1176}
1177
1178impl PartialEq<u64> for ColumnPropertyId {
1179	fn eq(&self, other: &u64) -> bool {
1180		self.0.eq(other)
1181	}
1182}
1183
1184impl From<ColumnPropertyId> for u64 {
1185	fn from(value: ColumnPropertyId) -> Self {
1186		value.0
1187	}
1188}
1189
1190impl Serialize for ColumnPropertyId {
1191	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1192	where
1193		S: Serializer,
1194	{
1195		serializer.serialize_u64(self.0)
1196	}
1197}
1198
1199impl<'de> Deserialize<'de> for ColumnPropertyId {
1200	fn deserialize<D>(deserializer: D) -> Result<ColumnPropertyId, D::Error>
1201	where
1202		D: Deserializer<'de>,
1203	{
1204		struct U64Visitor;
1205
1206		impl Visitor<'_> for U64Visitor {
1207			type Value = ColumnPropertyId;
1208
1209			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1210				formatter.write_str("an unsigned 64-bit number")
1211			}
1212
1213			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1214				Ok(ColumnPropertyId(value))
1215			}
1216		}
1217
1218		deserializer.deserialize_u64(U64Visitor)
1219	}
1220}
1221
1222#[repr(transparent)]
1223#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1224pub struct NamespaceId(pub u64);
1225
1226impl Display for NamespaceId {
1227	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1228		Display::fmt(&self.0, f)
1229	}
1230}
1231
1232impl Deref for NamespaceId {
1233	type Target = u64;
1234
1235	fn deref(&self) -> &Self::Target {
1236		&self.0
1237	}
1238}
1239
1240impl PartialEq<u64> for NamespaceId {
1241	fn eq(&self, other: &u64) -> bool {
1242		self.0.eq(other)
1243	}
1244}
1245
1246impl From<NamespaceId> for u64 {
1247	fn from(value: NamespaceId) -> Self {
1248		value.0
1249	}
1250}
1251
1252impl Serialize for NamespaceId {
1253	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1254	where
1255		S: Serializer,
1256	{
1257		serializer.serialize_u64(self.0)
1258	}
1259}
1260
1261impl<'de> Deserialize<'de> for NamespaceId {
1262	fn deserialize<D>(deserializer: D) -> Result<NamespaceId, D::Error>
1263	where
1264		D: Deserializer<'de>,
1265	{
1266		struct U64Visitor;
1267
1268		impl Visitor<'_> for U64Visitor {
1269			type Value = NamespaceId;
1270
1271			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1272				formatter.write_str("an unsigned 64-bit number")
1273			}
1274
1275			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1276				Ok(NamespaceId(value))
1277			}
1278		}
1279
1280		deserializer.deserialize_u64(U64Visitor)
1281	}
1282}
1283
1284#[repr(transparent)]
1285#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1286pub struct TableId(pub u64);
1287
1288impl Display for TableId {
1289	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1290		Display::fmt(&self.0, f)
1291	}
1292}
1293
1294impl Deref for TableId {
1295	type Target = u64;
1296
1297	fn deref(&self) -> &Self::Target {
1298		&self.0
1299	}
1300}
1301
1302impl PartialEq<u64> for TableId {
1303	fn eq(&self, other: &u64) -> bool {
1304		self.0.eq(other)
1305	}
1306}
1307
1308impl From<TableId> for u64 {
1309	fn from(value: TableId) -> Self {
1310		value.0
1311	}
1312}
1313
1314impl TableId {
1315	#[inline]
1316	pub fn to_u64(self) -> u64 {
1317		self.0
1318	}
1319}
1320
1321impl From<i32> for TableId {
1322	fn from(value: i32) -> Self {
1323		Self(value as u64)
1324	}
1325}
1326
1327impl From<u64> for TableId {
1328	fn from(value: u64) -> Self {
1329		Self(value)
1330	}
1331}
1332
1333impl Serialize for TableId {
1334	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1335	where
1336		S: Serializer,
1337	{
1338		serializer.serialize_u64(self.0)
1339	}
1340}
1341
1342impl<'de> Deserialize<'de> for TableId {
1343	fn deserialize<D>(deserializer: D) -> Result<TableId, D::Error>
1344	where
1345		D: Deserializer<'de>,
1346	{
1347		struct U64Visitor;
1348
1349		impl Visitor<'_> for U64Visitor {
1350			type Value = TableId;
1351
1352			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1353				formatter.write_str("an unsigned 64-bit number")
1354			}
1355
1356			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1357				Ok(TableId(value))
1358			}
1359		}
1360
1361		deserializer.deserialize_u64(U64Visitor)
1362	}
1363}
1364
1365#[repr(transparent)]
1366#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1367pub struct ViewId(pub u64);
1368
1369impl Display for ViewId {
1370	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1371		Display::fmt(&self.0, f)
1372	}
1373}
1374
1375impl Deref for ViewId {
1376	type Target = u64;
1377
1378	fn deref(&self) -> &Self::Target {
1379		&self.0
1380	}
1381}
1382
1383impl PartialEq<u64> for ViewId {
1384	fn eq(&self, other: &u64) -> bool {
1385		self.0.eq(other)
1386	}
1387}
1388
1389impl From<ViewId> for u64 {
1390	fn from(value: ViewId) -> Self {
1391		value.0
1392	}
1393}
1394
1395impl ViewId {
1396	#[inline]
1397	pub fn to_u64(self) -> u64 {
1398		self.0
1399	}
1400}
1401
1402impl From<i32> for ViewId {
1403	fn from(value: i32) -> Self {
1404		Self(value as u64)
1405	}
1406}
1407
1408impl From<u64> for ViewId {
1409	fn from(value: u64) -> Self {
1410		Self(value)
1411	}
1412}
1413
1414impl Serialize for ViewId {
1415	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1416	where
1417		S: Serializer,
1418	{
1419		serializer.serialize_u64(self.0)
1420	}
1421}
1422
1423impl<'de> Deserialize<'de> for ViewId {
1424	fn deserialize<D>(deserializer: D) -> Result<ViewId, D::Error>
1425	where
1426		D: Deserializer<'de>,
1427	{
1428		struct U64Visitor;
1429
1430		impl Visitor<'_> for U64Visitor {
1431			type Value = ViewId;
1432
1433			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1434				formatter.write_str("an unsigned 64-bit number")
1435			}
1436
1437			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1438				Ok(ViewId(value))
1439			}
1440		}
1441
1442		deserializer.deserialize_u64(U64Visitor)
1443	}
1444}
1445
1446#[repr(transparent)]
1447#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1448pub struct PrimaryKeyId(pub u64);
1449
1450impl Display for PrimaryKeyId {
1451	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1452		Display::fmt(&self.0, f)
1453	}
1454}
1455
1456impl Deref for PrimaryKeyId {
1457	type Target = u64;
1458
1459	fn deref(&self) -> &Self::Target {
1460		&self.0
1461	}
1462}
1463
1464impl PartialEq<u64> for PrimaryKeyId {
1465	fn eq(&self, other: &u64) -> bool {
1466		self.0.eq(other)
1467	}
1468}
1469
1470impl From<PrimaryKeyId> for u64 {
1471	fn from(value: PrimaryKeyId) -> Self {
1472		value.0
1473	}
1474}
1475
1476impl From<i32> for PrimaryKeyId {
1477	fn from(value: i32) -> Self {
1478		Self(value as u64)
1479	}
1480}
1481
1482impl From<u64> for PrimaryKeyId {
1483	fn from(value: u64) -> Self {
1484		Self(value)
1485	}
1486}
1487
1488impl Serialize for PrimaryKeyId {
1489	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1490	where
1491		S: Serializer,
1492	{
1493		serializer.serialize_u64(self.0)
1494	}
1495}
1496
1497impl<'de> Deserialize<'de> for PrimaryKeyId {
1498	fn deserialize<D>(deserializer: D) -> Result<PrimaryKeyId, D::Error>
1499	where
1500		D: Deserializer<'de>,
1501	{
1502		struct U64Visitor;
1503
1504		impl Visitor<'_> for U64Visitor {
1505			type Value = PrimaryKeyId;
1506
1507			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1508				formatter.write_str("an unsigned 64-bit number")
1509			}
1510
1511			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1512				Ok(PrimaryKeyId(value))
1513			}
1514		}
1515
1516		deserializer.deserialize_u64(U64Visitor)
1517	}
1518}
1519
1520#[repr(transparent)]
1521#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1522pub struct RingBufferId(pub u64);
1523
1524impl RingBufferId {
1525	pub const REQUEST_HISTORY: RingBufferId = RingBufferId(1);
1526	pub const STATEMENT_STATS: RingBufferId = RingBufferId(2);
1527}
1528
1529impl Display for RingBufferId {
1530	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1531		Display::fmt(&self.0, f)
1532	}
1533}
1534
1535impl Deref for RingBufferId {
1536	type Target = u64;
1537
1538	fn deref(&self) -> &Self::Target {
1539		&self.0
1540	}
1541}
1542
1543impl PartialEq<u64> for RingBufferId {
1544	fn eq(&self, other: &u64) -> bool {
1545		self.0.eq(other)
1546	}
1547}
1548
1549impl From<RingBufferId> for u64 {
1550	fn from(value: RingBufferId) -> Self {
1551		value.0
1552	}
1553}
1554
1555impl RingBufferId {
1556	#[inline]
1557	pub fn to_u64(self) -> u64 {
1558		self.0
1559	}
1560}
1561
1562impl From<i32> for RingBufferId {
1563	fn from(value: i32) -> Self {
1564		Self(value as u64)
1565	}
1566}
1567
1568impl From<u64> for RingBufferId {
1569	fn from(value: u64) -> Self {
1570		Self(value)
1571	}
1572}
1573
1574impl Serialize for RingBufferId {
1575	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1576	where
1577		S: Serializer,
1578	{
1579		serializer.serialize_u64(self.0)
1580	}
1581}
1582
1583impl<'de> Deserialize<'de> for RingBufferId {
1584	fn deserialize<D>(deserializer: D) -> Result<RingBufferId, D::Error>
1585	where
1586		D: Deserializer<'de>,
1587	{
1588		struct U64Visitor;
1589
1590		impl Visitor<'_> for U64Visitor {
1591			type Value = RingBufferId;
1592
1593			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1594				formatter.write_str("an unsigned 64-bit number")
1595			}
1596
1597			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1598				Ok(RingBufferId(value))
1599			}
1600		}
1601
1602		deserializer.deserialize_u64(U64Visitor)
1603	}
1604}
1605
1606#[repr(transparent)]
1607#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1608pub struct ProcedureId(u64);
1609
1610impl ProcedureId {
1611	pub const SYSTEM_RESERVED_START: u64 = 1 << 48;
1612
1613	pub const SYSTEM_CONFIG_SET: ProcedureId = ProcedureId::persistent(1);
1614
1615	pub const fn persistent(id: u64) -> Self {
1616		assert!(id < Self::SYSTEM_RESERVED_START, "persistent ProcedureId must be below SYSTEM_RESERVED_START");
1617		Self(id)
1618	}
1619
1620	pub const fn ephemeral(id: u64) -> Self {
1621		assert!(
1622			id >= Self::SYSTEM_RESERVED_START,
1623			"ephemeral ProcedureId must be at or above SYSTEM_RESERVED_START"
1624		);
1625		Self(id)
1626	}
1627
1628	pub const fn from_raw(id: u64) -> Self {
1629		Self(id)
1630	}
1631
1632	pub const fn is_ephemeral(&self) -> bool {
1633		self.0 >= Self::SYSTEM_RESERVED_START
1634	}
1635}
1636
1637impl Display for ProcedureId {
1638	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1639		Display::fmt(&self.0, f)
1640	}
1641}
1642
1643impl Deref for ProcedureId {
1644	type Target = u64;
1645
1646	fn deref(&self) -> &Self::Target {
1647		&self.0
1648	}
1649}
1650
1651impl PartialEq<u64> for ProcedureId {
1652	fn eq(&self, other: &u64) -> bool {
1653		self.0.eq(other)
1654	}
1655}
1656
1657impl From<ProcedureId> for u64 {
1658	fn from(value: ProcedureId) -> Self {
1659		value.0
1660	}
1661}
1662
1663impl Serialize for ProcedureId {
1664	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1665	where
1666		S: Serializer,
1667	{
1668		serializer.serialize_u64(self.0)
1669	}
1670}
1671
1672impl<'de> Deserialize<'de> for ProcedureId {
1673	fn deserialize<D>(deserializer: D) -> Result<ProcedureId, D::Error>
1674	where
1675		D: Deserializer<'de>,
1676	{
1677		struct U64Visitor;
1678
1679		impl Visitor<'_> for U64Visitor {
1680			type Value = ProcedureId;
1681
1682			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1683				formatter.write_str("an unsigned 64-bit number")
1684			}
1685
1686			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1687				Ok(ProcedureId::from_raw(value))
1688			}
1689		}
1690
1691		deserializer.deserialize_u64(U64Visitor)
1692	}
1693}
1694
1695#[repr(transparent)]
1696#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1697pub struct TestId(pub u64);
1698
1699impl Display for TestId {
1700	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1701		Display::fmt(&self.0, f)
1702	}
1703}
1704
1705impl Deref for TestId {
1706	type Target = u64;
1707
1708	fn deref(&self) -> &Self::Target {
1709		&self.0
1710	}
1711}
1712
1713impl PartialEq<u64> for TestId {
1714	fn eq(&self, other: &u64) -> bool {
1715		self.0.eq(other)
1716	}
1717}
1718
1719impl From<TestId> for u64 {
1720	fn from(value: TestId) -> Self {
1721		value.0
1722	}
1723}
1724
1725impl From<i32> for TestId {
1726	fn from(value: i32) -> Self {
1727		Self(value as u64)
1728	}
1729}
1730
1731impl From<u64> for TestId {
1732	fn from(value: u64) -> Self {
1733		Self(value)
1734	}
1735}
1736
1737impl Serialize for TestId {
1738	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1739	where
1740		S: Serializer,
1741	{
1742		serializer.serialize_u64(self.0)
1743	}
1744}
1745
1746impl<'de> Deserialize<'de> for TestId {
1747	fn deserialize<D>(deserializer: D) -> Result<TestId, D::Error>
1748	where
1749		D: Deserializer<'de>,
1750	{
1751		struct U64Visitor;
1752
1753		impl Visitor<'_> for U64Visitor {
1754			type Value = TestId;
1755
1756			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1757				formatter.write_str("an unsigned 64-bit number")
1758			}
1759
1760			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1761				Ok(TestId(value))
1762			}
1763		}
1764
1765		deserializer.deserialize_u64(U64Visitor)
1766	}
1767}
1768
1769#[repr(transparent)]
1770#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1771pub struct SubscriptionId(pub u64);
1772
1773impl Display for SubscriptionId {
1774	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1775		Display::fmt(&self.0, f)
1776	}
1777}
1778
1779impl Deref for SubscriptionId {
1780	type Target = u64;
1781
1782	fn deref(&self) -> &Self::Target {
1783		&self.0
1784	}
1785}
1786
1787impl PartialEq<u64> for SubscriptionId {
1788	fn eq(&self, other: &u64) -> bool {
1789		self.0.eq(other)
1790	}
1791}
1792
1793impl From<SubscriptionId> for u64 {
1794	fn from(value: SubscriptionId) -> Self {
1795		value.0
1796	}
1797}
1798
1799impl From<u64> for SubscriptionId {
1800	fn from(value: u64) -> Self {
1801		Self(value)
1802	}
1803}
1804
1805impl Serialize for SubscriptionId {
1806	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1807	where
1808		S: Serializer,
1809	{
1810		serializer.serialize_u64(self.0)
1811	}
1812}
1813
1814impl<'de> Deserialize<'de> for SubscriptionId {
1815	fn deserialize<D>(deserializer: D) -> Result<SubscriptionId, D::Error>
1816	where
1817		D: Deserializer<'de>,
1818	{
1819		struct U64Visitor;
1820
1821		impl Visitor<'_> for U64Visitor {
1822			type Value = SubscriptionId;
1823
1824			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1825				formatter.write_str("an unsigned 64-bit number")
1826			}
1827
1828			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1829				Ok(SubscriptionId(value))
1830			}
1831		}
1832
1833		deserializer.deserialize_u64(U64Visitor)
1834	}
1835}
1836
1837#[repr(transparent)]
1838#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1839pub struct SequenceId(pub u64);
1840
1841impl Deref for SequenceId {
1842	type Target = u64;
1843
1844	fn deref(&self) -> &Self::Target {
1845		&self.0
1846	}
1847}
1848
1849impl PartialEq<u64> for SequenceId {
1850	fn eq(&self, other: &u64) -> bool {
1851		self.0.eq(other)
1852	}
1853}
1854
1855impl Serialize for SequenceId {
1856	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1857	where
1858		S: Serializer,
1859	{
1860		serializer.serialize_u64(self.0)
1861	}
1862}
1863
1864impl<'de> Deserialize<'de> for SequenceId {
1865	fn deserialize<D>(deserializer: D) -> Result<SequenceId, D::Error>
1866	where
1867		D: Deserializer<'de>,
1868	{
1869		struct U64Visitor;
1870
1871		impl Visitor<'_> for U64Visitor {
1872			type Value = SequenceId;
1873
1874			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1875				formatter.write_str("an unsigned 64-bit number")
1876			}
1877
1878			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1879				Ok(SequenceId(value))
1880			}
1881		}
1882
1883		deserializer.deserialize_u64(U64Visitor)
1884	}
1885}
1886
1887#[repr(transparent)]
1888#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1889pub struct SubscriptionColumnId(pub u64);
1890
1891impl Display for SubscriptionColumnId {
1892	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1893		Display::fmt(&self.0, f)
1894	}
1895}
1896
1897impl Deref for SubscriptionColumnId {
1898	type Target = u64;
1899
1900	fn deref(&self) -> &Self::Target {
1901		&self.0
1902	}
1903}
1904
1905impl PartialEq<u64> for SubscriptionColumnId {
1906	fn eq(&self, other: &u64) -> bool {
1907		self.0.eq(other)
1908	}
1909}
1910
1911impl From<SubscriptionColumnId> for u64 {
1912	fn from(value: SubscriptionColumnId) -> Self {
1913		value.0
1914	}
1915}
1916
1917impl From<i32> for SubscriptionColumnId {
1918	fn from(value: i32) -> Self {
1919		Self(value as u64)
1920	}
1921}
1922
1923impl From<u64> for SubscriptionColumnId {
1924	fn from(value: u64) -> Self {
1925		Self(value)
1926	}
1927}
1928
1929impl Serialize for SubscriptionColumnId {
1930	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1931	where
1932		S: Serializer,
1933	{
1934		serializer.serialize_u64(self.0)
1935	}
1936}
1937
1938impl<'de> Deserialize<'de> for SubscriptionColumnId {
1939	fn deserialize<D>(deserializer: D) -> Result<SubscriptionColumnId, D::Error>
1940	where
1941		D: Deserializer<'de>,
1942	{
1943		struct U64Visitor;
1944
1945		impl Visitor<'_> for U64Visitor {
1946			type Value = SubscriptionColumnId;
1947
1948			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
1949				formatter.write_str("an unsigned 64-bit number")
1950			}
1951
1952			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
1953				Ok(SubscriptionColumnId(value))
1954			}
1955		}
1956
1957		deserializer.deserialize_u64(U64Visitor)
1958	}
1959}
1960
1961#[repr(transparent)]
1962#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
1963pub struct SeriesId(pub u64);
1964
1965impl Display for SeriesId {
1966	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
1967		Display::fmt(&self.0, f)
1968	}
1969}
1970
1971impl Deref for SeriesId {
1972	type Target = u64;
1973
1974	fn deref(&self) -> &Self::Target {
1975		&self.0
1976	}
1977}
1978
1979impl PartialEq<u64> for SeriesId {
1980	fn eq(&self, other: &u64) -> bool {
1981		self.0.eq(other)
1982	}
1983}
1984
1985impl From<SeriesId> for u64 {
1986	fn from(value: SeriesId) -> Self {
1987		value.0
1988	}
1989}
1990
1991impl SeriesId {
1992	pub const PROFILER_QUERY_SNAPSHOTS: SeriesId = SeriesId(1024);
1993	pub const PROFILER_TXN_SNAPSHOTS: SeriesId = SeriesId(1025);
1994	pub const PROFILER_STORAGE_SNAPSHOTS: SeriesId = SeriesId(1026);
1995	pub const PROFILER_PLAN_SNAPSHOTS: SeriesId = SeriesId(1027);
1996	pub const PROFILER_CDC_SNAPSHOTS: SeriesId = SeriesId(1028);
1997	pub const PROFILER_FLOW_SNAPSHOTS: SeriesId = SeriesId(1029);
1998	pub const PROFILER_SUBSCRIPTION_SNAPSHOTS: SeriesId = SeriesId(1030);
1999	pub const PROFILER_SERVER_SNAPSHOTS: SeriesId = SeriesId(1031);
2000	pub const PROFILER_WIRE_SNAPSHOTS: SeriesId = SeriesId(1032);
2001	pub const PROFILER_AUTH_SNAPSHOTS: SeriesId = SeriesId(1033);
2002	pub const PROFILER_CATALOG_SNAPSHOTS: SeriesId = SeriesId(1034);
2003	pub const PROFILER_ENGINE_SNAPSHOTS: SeriesId = SeriesId(1035);
2004	pub const PROFILER_MUTATE_SNAPSHOTS: SeriesId = SeriesId(1036);
2005	pub const PROFILER_TRANSPORT_SNAPSHOTS: SeriesId = SeriesId(1037);
2006	pub const PROFILER_TASK_SNAPSHOTS: SeriesId = SeriesId(1038);
2007	pub const PROFILER_POLICY_SNAPSHOTS: SeriesId = SeriesId(1039);
2008	pub const PROFILER_FFI_SNAPSHOTS: SeriesId = SeriesId(1040);
2009	pub const PROFILER_CACHE_SNAPSHOTS: SeriesId = SeriesId(1043);
2010	pub const PROFILER_SHAPE_SNAPSHOTS: SeriesId = SeriesId(1044);
2011	pub const PROFILER_API_SNAPSHOTS: SeriesId = SeriesId(1045);
2012	pub const PROFILER_ACTOR_SNAPSHOTS: SeriesId = SeriesId(1046);
2013	pub const RUNTIME_MEMORY_SNAPSHOTS: SeriesId = SeriesId(1041);
2014	pub const RUNTIME_WATERMARKS_SNAPSHOTS: SeriesId = SeriesId(1042);
2015
2016	#[inline]
2017	pub fn to_u64(self) -> u64 {
2018		self.0
2019	}
2020}
2021
2022impl From<i32> for SeriesId {
2023	fn from(value: i32) -> Self {
2024		Self(value as u64)
2025	}
2026}
2027
2028impl From<u64> for SeriesId {
2029	fn from(value: u64) -> Self {
2030		Self(value)
2031	}
2032}
2033
2034impl Serialize for SeriesId {
2035	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2036	where
2037		S: Serializer,
2038	{
2039		serializer.serialize_u64(self.0)
2040	}
2041}
2042
2043impl<'de> Deserialize<'de> for SeriesId {
2044	fn deserialize<D>(deserializer: D) -> Result<SeriesId, D::Error>
2045	where
2046		D: Deserializer<'de>,
2047	{
2048		struct U64Visitor;
2049
2050		impl Visitor<'_> for U64Visitor {
2051			type Value = SeriesId;
2052
2053			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2054				formatter.write_str("an unsigned 64-bit number")
2055			}
2056
2057			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
2058				Ok(SeriesId(value))
2059			}
2060		}
2061
2062		deserializer.deserialize_u64(U64Visitor)
2063	}
2064}
2065
2066#[repr(transparent)]
2067#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
2068pub struct HandlerId(pub u64);
2069
2070impl Display for HandlerId {
2071	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
2072		Display::fmt(&self.0, f)
2073	}
2074}
2075
2076impl Deref for HandlerId {
2077	type Target = u64;
2078
2079	fn deref(&self) -> &Self::Target {
2080		&self.0
2081	}
2082}
2083
2084impl PartialEq<u64> for HandlerId {
2085	fn eq(&self, other: &u64) -> bool {
2086		self.0.eq(other)
2087	}
2088}
2089
2090impl From<HandlerId> for u64 {
2091	fn from(value: HandlerId) -> Self {
2092		value.0
2093	}
2094}
2095
2096impl From<i32> for HandlerId {
2097	fn from(value: i32) -> Self {
2098		Self(value as u64)
2099	}
2100}
2101
2102impl From<u64> for HandlerId {
2103	fn from(value: u64) -> Self {
2104		Self(value)
2105	}
2106}
2107
2108impl Serialize for HandlerId {
2109	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2110	where
2111		S: Serializer,
2112	{
2113		serializer.serialize_u64(self.0)
2114	}
2115}
2116
2117impl<'de> Deserialize<'de> for HandlerId {
2118	fn deserialize<D>(deserializer: D) -> Result<HandlerId, D::Error>
2119	where
2120		D: Deserializer<'de>,
2121	{
2122		struct U64Visitor;
2123
2124		impl Visitor<'_> for U64Visitor {
2125			type Value = HandlerId;
2126
2127			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2128				formatter.write_str("an unsigned 64-bit number")
2129			}
2130
2131			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
2132				Ok(HandlerId(value))
2133			}
2134		}
2135
2136		deserializer.deserialize_u64(U64Visitor)
2137	}
2138}
2139
2140#[repr(transparent)]
2141#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
2142pub struct MigrationId(pub u64);
2143
2144impl Display for MigrationId {
2145	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
2146		Display::fmt(&self.0, f)
2147	}
2148}
2149
2150impl Deref for MigrationId {
2151	type Target = u64;
2152
2153	fn deref(&self) -> &Self::Target {
2154		&self.0
2155	}
2156}
2157
2158impl PartialEq<u64> for MigrationId {
2159	fn eq(&self, other: &u64) -> bool {
2160		self.0.eq(other)
2161	}
2162}
2163
2164impl From<MigrationId> for u64 {
2165	fn from(value: MigrationId) -> Self {
2166		value.0
2167	}
2168}
2169
2170impl From<i32> for MigrationId {
2171	fn from(value: i32) -> Self {
2172		Self(value as u64)
2173	}
2174}
2175
2176impl From<u64> for MigrationId {
2177	fn from(value: u64) -> Self {
2178		Self(value)
2179	}
2180}
2181
2182impl Serialize for MigrationId {
2183	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2184	where
2185		S: Serializer,
2186	{
2187		serializer.serialize_u64(self.0)
2188	}
2189}
2190
2191impl<'de> Deserialize<'de> for MigrationId {
2192	fn deserialize<D>(deserializer: D) -> Result<MigrationId, D::Error>
2193	where
2194		D: Deserializer<'de>,
2195	{
2196		struct U64Visitor;
2197
2198		impl Visitor<'_> for U64Visitor {
2199			type Value = MigrationId;
2200
2201			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2202				formatter.write_str("an unsigned 64-bit number")
2203			}
2204
2205			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
2206				Ok(MigrationId(value))
2207			}
2208		}
2209
2210		deserializer.deserialize_u64(U64Visitor)
2211	}
2212}
2213
2214#[repr(transparent)]
2215#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
2216pub struct MigrationEventId(pub u64);
2217
2218impl Display for MigrationEventId {
2219	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
2220		Display::fmt(&self.0, f)
2221	}
2222}
2223
2224impl Deref for MigrationEventId {
2225	type Target = u64;
2226
2227	fn deref(&self) -> &Self::Target {
2228		&self.0
2229	}
2230}
2231
2232impl PartialEq<u64> for MigrationEventId {
2233	fn eq(&self, other: &u64) -> bool {
2234		self.0.eq(other)
2235	}
2236}
2237
2238impl From<MigrationEventId> for u64 {
2239	fn from(value: MigrationEventId) -> Self {
2240		value.0
2241	}
2242}
2243
2244impl From<i32> for MigrationEventId {
2245	fn from(value: i32) -> Self {
2246		Self(value as u64)
2247	}
2248}
2249
2250impl From<u64> for MigrationEventId {
2251	fn from(value: u64) -> Self {
2252		Self(value)
2253	}
2254}
2255
2256impl Serialize for MigrationEventId {
2257	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2258	where
2259		S: Serializer,
2260	{
2261		serializer.serialize_u64(self.0)
2262	}
2263}
2264
2265impl<'de> Deserialize<'de> for MigrationEventId {
2266	fn deserialize<D>(deserializer: D) -> Result<MigrationEventId, D::Error>
2267	where
2268		D: Deserializer<'de>,
2269	{
2270		struct U64Visitor;
2271
2272		impl Visitor<'_> for U64Visitor {
2273			type Value = MigrationEventId;
2274
2275			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2276				formatter.write_str("an unsigned 64-bit number")
2277			}
2278
2279			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
2280				Ok(MigrationEventId(value))
2281			}
2282		}
2283
2284		deserializer.deserialize_u64(U64Visitor)
2285	}
2286}
2287
2288#[repr(transparent)]
2289#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
2290pub struct SourceId(pub u64);
2291
2292impl Display for SourceId {
2293	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
2294		Display::fmt(&self.0, f)
2295	}
2296}
2297
2298impl Deref for SourceId {
2299	type Target = u64;
2300
2301	fn deref(&self) -> &Self::Target {
2302		&self.0
2303	}
2304}
2305
2306impl PartialEq<u64> for SourceId {
2307	fn eq(&self, other: &u64) -> bool {
2308		self.0.eq(other)
2309	}
2310}
2311
2312impl From<SourceId> for u64 {
2313	fn from(value: SourceId) -> Self {
2314		value.0
2315	}
2316}
2317
2318impl From<u64> for SourceId {
2319	fn from(value: u64) -> Self {
2320		Self(value)
2321	}
2322}
2323
2324impl Serialize for SourceId {
2325	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2326	where
2327		S: Serializer,
2328	{
2329		serializer.serialize_u64(self.0)
2330	}
2331}
2332
2333impl<'de> Deserialize<'de> for SourceId {
2334	fn deserialize<D>(deserializer: D) -> Result<SourceId, D::Error>
2335	where
2336		D: Deserializer<'de>,
2337	{
2338		struct U64Visitor;
2339
2340		impl Visitor<'_> for U64Visitor {
2341			type Value = SourceId;
2342
2343			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2344				formatter.write_str("an unsigned 64-bit number")
2345			}
2346
2347			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
2348				Ok(SourceId(value))
2349			}
2350		}
2351
2352		deserializer.deserialize_u64(U64Visitor)
2353	}
2354}
2355
2356#[repr(transparent)]
2357#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
2358pub struct BindingId(pub u64);
2359
2360impl Display for BindingId {
2361	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
2362		Display::fmt(&self.0, f)
2363	}
2364}
2365
2366impl Deref for BindingId {
2367	type Target = u64;
2368
2369	fn deref(&self) -> &Self::Target {
2370		&self.0
2371	}
2372}
2373
2374impl PartialEq<u64> for BindingId {
2375	fn eq(&self, other: &u64) -> bool {
2376		self.0.eq(other)
2377	}
2378}
2379
2380impl From<BindingId> for u64 {
2381	fn from(value: BindingId) -> Self {
2382		value.0
2383	}
2384}
2385
2386impl From<u64> for BindingId {
2387	fn from(value: u64) -> Self {
2388		Self(value)
2389	}
2390}
2391
2392impl Serialize for BindingId {
2393	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2394	where
2395		S: Serializer,
2396	{
2397		serializer.serialize_u64(self.0)
2398	}
2399}
2400
2401impl<'de> Deserialize<'de> for BindingId {
2402	fn deserialize<D>(deserializer: D) -> Result<BindingId, D::Error>
2403	where
2404		D: Deserializer<'de>,
2405	{
2406		struct U64Visitor;
2407
2408		impl Visitor<'_> for U64Visitor {
2409			type Value = BindingId;
2410
2411			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2412				formatter.write_str("an unsigned 64-bit number")
2413			}
2414
2415			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
2416				Ok(BindingId(value))
2417			}
2418		}
2419
2420		deserializer.deserialize_u64(U64Visitor)
2421	}
2422}
2423
2424#[repr(transparent)]
2425#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
2426pub struct ColumnSnapshotId(pub u64);
2427
2428impl Display for ColumnSnapshotId {
2429	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
2430		Display::fmt(&self.0, f)
2431	}
2432}
2433
2434impl Deref for ColumnSnapshotId {
2435	type Target = u64;
2436
2437	fn deref(&self) -> &Self::Target {
2438		&self.0
2439	}
2440}
2441
2442impl PartialEq<u64> for ColumnSnapshotId {
2443	fn eq(&self, other: &u64) -> bool {
2444		self.0.eq(other)
2445	}
2446}
2447
2448impl From<ColumnSnapshotId> for u64 {
2449	fn from(value: ColumnSnapshotId) -> Self {
2450		value.0
2451	}
2452}
2453
2454impl From<u64> for ColumnSnapshotId {
2455	fn from(value: u64) -> Self {
2456		Self(value)
2457	}
2458}
2459
2460impl Serialize for ColumnSnapshotId {
2461	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2462	where
2463		S: Serializer,
2464	{
2465		serializer.serialize_u64(self.0)
2466	}
2467}
2468
2469impl<'de> Deserialize<'de> for ColumnSnapshotId {
2470	fn deserialize<D>(deserializer: D) -> Result<ColumnSnapshotId, D::Error>
2471	where
2472		D: Deserializer<'de>,
2473	{
2474		struct U64Visitor;
2475
2476		impl Visitor<'_> for U64Visitor {
2477			type Value = ColumnSnapshotId;
2478
2479			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2480				formatter.write_str("an unsigned 64-bit number")
2481			}
2482
2483			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
2484				Ok(ColumnSnapshotId(value))
2485			}
2486		}
2487
2488		deserializer.deserialize_u64(U64Visitor)
2489	}
2490}
2491
2492#[repr(transparent)]
2493#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Ord, Eq, Hash)]
2494pub struct SinkId(pub u64);
2495
2496impl Display for SinkId {
2497	fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
2498		Display::fmt(&self.0, f)
2499	}
2500}
2501
2502impl Deref for SinkId {
2503	type Target = u64;
2504
2505	fn deref(&self) -> &Self::Target {
2506		&self.0
2507	}
2508}
2509
2510impl PartialEq<u64> for SinkId {
2511	fn eq(&self, other: &u64) -> bool {
2512		self.0.eq(other)
2513	}
2514}
2515
2516impl From<SinkId> for u64 {
2517	fn from(value: SinkId) -> Self {
2518		value.0
2519	}
2520}
2521
2522impl From<u64> for SinkId {
2523	fn from(value: u64) -> Self {
2524		Self(value)
2525	}
2526}
2527
2528impl Serialize for SinkId {
2529	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
2530	where
2531		S: Serializer,
2532	{
2533		serializer.serialize_u64(self.0)
2534	}
2535}
2536
2537impl<'de> Deserialize<'de> for SinkId {
2538	fn deserialize<D>(deserializer: D) -> Result<SinkId, D::Error>
2539	where
2540		D: Deserializer<'de>,
2541	{
2542		struct U64Visitor;
2543
2544		impl Visitor<'_> for U64Visitor {
2545			type Value = SinkId;
2546
2547			fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2548				formatter.write_str("an unsigned 64-bit number")
2549			}
2550
2551			fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E> {
2552				Ok(SinkId(value))
2553			}
2554		}
2555
2556		deserializer.deserialize_u64(U64Visitor)
2557	}
2558}
2559
2560const RESERVED_USER_ID_START: u64 = 16385;
2561
2562const RESERVED_SOURCE_IDS: [u64; 25] = [
2563	RingBufferId::REQUEST_HISTORY.0,
2564	RingBufferId::STATEMENT_STATS.0,
2565	SeriesId::PROFILER_QUERY_SNAPSHOTS.0,
2566	SeriesId::PROFILER_TXN_SNAPSHOTS.0,
2567	SeriesId::PROFILER_STORAGE_SNAPSHOTS.0,
2568	SeriesId::PROFILER_PLAN_SNAPSHOTS.0,
2569	SeriesId::PROFILER_CDC_SNAPSHOTS.0,
2570	SeriesId::PROFILER_FLOW_SNAPSHOTS.0,
2571	SeriesId::PROFILER_SUBSCRIPTION_SNAPSHOTS.0,
2572	SeriesId::PROFILER_SERVER_SNAPSHOTS.0,
2573	SeriesId::PROFILER_WIRE_SNAPSHOTS.0,
2574	SeriesId::PROFILER_AUTH_SNAPSHOTS.0,
2575	SeriesId::PROFILER_CATALOG_SNAPSHOTS.0,
2576	SeriesId::PROFILER_ENGINE_SNAPSHOTS.0,
2577	SeriesId::PROFILER_MUTATE_SNAPSHOTS.0,
2578	SeriesId::PROFILER_TRANSPORT_SNAPSHOTS.0,
2579	SeriesId::PROFILER_TASK_SNAPSHOTS.0,
2580	SeriesId::PROFILER_POLICY_SNAPSHOTS.0,
2581	SeriesId::PROFILER_FFI_SNAPSHOTS.0,
2582	SeriesId::PROFILER_CACHE_SNAPSHOTS.0,
2583	SeriesId::PROFILER_SHAPE_SNAPSHOTS.0,
2584	SeriesId::PROFILER_API_SNAPSHOTS.0,
2585	SeriesId::PROFILER_ACTOR_SNAPSHOTS.0,
2586	SeriesId::RUNTIME_MEMORY_SNAPSHOTS.0,
2587	SeriesId::RUNTIME_WATERMARKS_SNAPSHOTS.0,
2588];
2589
2590const RESERVED_RINGBUFFER_COLUMNS: [ColumnId; 18] = [
2591	ColumnId::REQUEST_HISTORY_TIMESTAMP,
2592	ColumnId::REQUEST_HISTORY_OPERATION,
2593	ColumnId::REQUEST_HISTORY_FINGERPRINT,
2594	ColumnId::REQUEST_HISTORY_TOTAL_DURATION,
2595	ColumnId::REQUEST_HISTORY_COMPUTE_DURATION,
2596	ColumnId::REQUEST_HISTORY_SUCCESS,
2597	ColumnId::REQUEST_HISTORY_STATEMENT_COUNT,
2598	ColumnId::REQUEST_HISTORY_NORMALIZED_RQL,
2599	ColumnId::STATEMENT_STATS_SNAPSHOT_TIMESTAMP,
2600	ColumnId::STATEMENT_STATS_FINGERPRINT,
2601	ColumnId::STATEMENT_STATS_NORMALIZED_RQL,
2602	ColumnId::STATEMENT_STATS_CALLS,
2603	ColumnId::STATEMENT_STATS_TOTAL_DURATION,
2604	ColumnId::STATEMENT_STATS_MEAN_DURATION,
2605	ColumnId::STATEMENT_STATS_MAX_DURATION,
2606	ColumnId::STATEMENT_STATS_MIN_DURATION,
2607	ColumnId::STATEMENT_STATS_TOTAL_ROWS,
2608	ColumnId::STATEMENT_STATS_ERRORS,
2609];
2610
2611const RESERVED_COLUMN_GROUPS: [&[ColumnId]; 24] = [
2612	&RESERVED_RINGBUFFER_COLUMNS,
2613	&ColumnId::PROFILER_QUERY_SNAPSHOTS_COLUMNS,
2614	&ColumnId::PROFILER_TXN_SNAPSHOTS_COLUMNS,
2615	&ColumnId::PROFILER_STORAGE_SNAPSHOTS_COLUMNS,
2616	&ColumnId::PROFILER_PLAN_SNAPSHOTS_COLUMNS,
2617	&ColumnId::PROFILER_CDC_SNAPSHOTS_COLUMNS,
2618	&ColumnId::PROFILER_FLOW_SNAPSHOTS_COLUMNS,
2619	&ColumnId::PROFILER_SUBSCRIPTION_SNAPSHOTS_COLUMNS,
2620	&ColumnId::PROFILER_SERVER_SNAPSHOTS_COLUMNS,
2621	&ColumnId::PROFILER_WIRE_SNAPSHOTS_COLUMNS,
2622	&ColumnId::PROFILER_AUTH_SNAPSHOTS_COLUMNS,
2623	&ColumnId::PROFILER_CATALOG_SNAPSHOTS_COLUMNS,
2624	&ColumnId::PROFILER_ENGINE_SNAPSHOTS_COLUMNS,
2625	&ColumnId::PROFILER_MUTATE_SNAPSHOTS_COLUMNS,
2626	&ColumnId::PROFILER_TRANSPORT_SNAPSHOTS_COLUMNS,
2627	&ColumnId::PROFILER_TASK_SNAPSHOTS_COLUMNS,
2628	&ColumnId::PROFILER_POLICY_SNAPSHOTS_COLUMNS,
2629	&ColumnId::PROFILER_FFI_SNAPSHOTS_COLUMNS,
2630	&ColumnId::PROFILER_CACHE_SNAPSHOTS_COLUMNS,
2631	&ColumnId::PROFILER_SHAPE_SNAPSHOTS_COLUMNS,
2632	&ColumnId::PROFILER_API_SNAPSHOTS_COLUMNS,
2633	&ColumnId::PROFILER_ACTOR_SNAPSHOTS_COLUMNS,
2634	&ColumnId::RUNTIME_MEMORY_SNAPSHOTS_COLUMNS,
2635	&ColumnId::RUNTIME_WATERMARKS_SNAPSHOTS_COLUMNS,
2636];
2637
2638const fn reserved_u64_all_below(values: &[u64], limit: u64) -> bool {
2639	let mut i = 0;
2640	while i < values.len() {
2641		if values[i] >= limit {
2642			return false;
2643		}
2644		i += 1;
2645	}
2646	true
2647}
2648
2649const fn reserved_u64_has_duplicate(values: &[u64]) -> bool {
2650	let mut i = 0;
2651	while i < values.len() {
2652		let mut j = i + 1;
2653		while j < values.len() {
2654			if values[i] == values[j] {
2655				return true;
2656			}
2657			j += 1;
2658		}
2659		i += 1;
2660	}
2661	false
2662}
2663
2664const fn reserved_columns_all_below(groups: &[&[ColumnId]], limit: u64) -> bool {
2665	let mut g = 0;
2666	while g < groups.len() {
2667		let group = groups[g];
2668		let mut i = 0;
2669		while i < group.len() {
2670			if group[i].0 >= limit {
2671				return false;
2672			}
2673			i += 1;
2674		}
2675		g += 1;
2676	}
2677	true
2678}
2679
2680const fn reserved_columns_has_duplicate(groups: &[&[ColumnId]]) -> bool {
2681	let mut g1 = 0;
2682	while g1 < groups.len() {
2683		let mut i1 = 0;
2684		while i1 < groups[g1].len() {
2685			let value = groups[g1][i1].0;
2686			let mut g2 = g1;
2687			let mut i2 = i1 + 1;
2688			while g2 < groups.len() {
2689				while i2 < groups[g2].len() {
2690					if groups[g2][i2].0 == value {
2691						return true;
2692					}
2693					i2 += 1;
2694				}
2695				g2 += 1;
2696				i2 = 0;
2697			}
2698			i1 += 1;
2699		}
2700		g1 += 1;
2701	}
2702	false
2703}
2704
2705const _: () = {
2706	assert!(
2707		reserved_u64_all_below(&RESERVED_SOURCE_IDS, RESERVED_USER_ID_START),
2708		"reserved system source id leaks into the user range"
2709	);
2710	assert!(!reserved_u64_has_duplicate(&RESERVED_SOURCE_IDS), "duplicate reserved system source id");
2711	assert!(
2712		reserved_columns_all_below(&RESERVED_COLUMN_GROUPS, RESERVED_USER_ID_START),
2713		"reserved system column id leaks into the user range"
2714	);
2715	assert!(!reserved_columns_has_duplicate(&RESERVED_COLUMN_GROUPS), "duplicate reserved system column id");
2716};
2717
2718#[cfg(test)]
2719mod reserved_id_tests {
2720	use std::collections::HashSet;
2721
2722	use super::{ColumnId, RingBufferId, SeriesId};
2723
2724	const USER_ID_START: u64 = 16385;
2725
2726	fn reserved_series_ids() -> [SeriesId; 23] {
2727		[
2728			SeriesId::PROFILER_QUERY_SNAPSHOTS,
2729			SeriesId::PROFILER_TXN_SNAPSHOTS,
2730			SeriesId::PROFILER_STORAGE_SNAPSHOTS,
2731			SeriesId::PROFILER_PLAN_SNAPSHOTS,
2732			SeriesId::PROFILER_CDC_SNAPSHOTS,
2733			SeriesId::PROFILER_FLOW_SNAPSHOTS,
2734			SeriesId::PROFILER_SUBSCRIPTION_SNAPSHOTS,
2735			SeriesId::PROFILER_SERVER_SNAPSHOTS,
2736			SeriesId::PROFILER_WIRE_SNAPSHOTS,
2737			SeriesId::PROFILER_AUTH_SNAPSHOTS,
2738			SeriesId::PROFILER_CATALOG_SNAPSHOTS,
2739			SeriesId::PROFILER_ENGINE_SNAPSHOTS,
2740			SeriesId::PROFILER_MUTATE_SNAPSHOTS,
2741			SeriesId::PROFILER_TRANSPORT_SNAPSHOTS,
2742			SeriesId::PROFILER_TASK_SNAPSHOTS,
2743			SeriesId::PROFILER_POLICY_SNAPSHOTS,
2744			SeriesId::PROFILER_FFI_SNAPSHOTS,
2745			SeriesId::PROFILER_CACHE_SNAPSHOTS,
2746			SeriesId::PROFILER_SHAPE_SNAPSHOTS,
2747			SeriesId::PROFILER_API_SNAPSHOTS,
2748			SeriesId::PROFILER_ACTOR_SNAPSHOTS,
2749			SeriesId::RUNTIME_MEMORY_SNAPSHOTS,
2750			SeriesId::RUNTIME_WATERMARKS_SNAPSHOTS,
2751		]
2752	}
2753
2754	fn reserved_column_arrays() -> [&'static [ColumnId]; 23] {
2755		[
2756			&ColumnId::PROFILER_QUERY_SNAPSHOTS_COLUMNS,
2757			&ColumnId::PROFILER_TXN_SNAPSHOTS_COLUMNS,
2758			&ColumnId::PROFILER_STORAGE_SNAPSHOTS_COLUMNS,
2759			&ColumnId::PROFILER_PLAN_SNAPSHOTS_COLUMNS,
2760			&ColumnId::PROFILER_CDC_SNAPSHOTS_COLUMNS,
2761			&ColumnId::PROFILER_FLOW_SNAPSHOTS_COLUMNS,
2762			&ColumnId::PROFILER_SUBSCRIPTION_SNAPSHOTS_COLUMNS,
2763			&ColumnId::PROFILER_SERVER_SNAPSHOTS_COLUMNS,
2764			&ColumnId::PROFILER_WIRE_SNAPSHOTS_COLUMNS,
2765			&ColumnId::PROFILER_AUTH_SNAPSHOTS_COLUMNS,
2766			&ColumnId::PROFILER_CATALOG_SNAPSHOTS_COLUMNS,
2767			&ColumnId::PROFILER_ENGINE_SNAPSHOTS_COLUMNS,
2768			&ColumnId::PROFILER_MUTATE_SNAPSHOTS_COLUMNS,
2769			&ColumnId::PROFILER_TRANSPORT_SNAPSHOTS_COLUMNS,
2770			&ColumnId::PROFILER_TASK_SNAPSHOTS_COLUMNS,
2771			&ColumnId::PROFILER_POLICY_SNAPSHOTS_COLUMNS,
2772			&ColumnId::PROFILER_FFI_SNAPSHOTS_COLUMNS,
2773			&ColumnId::PROFILER_CACHE_SNAPSHOTS_COLUMNS,
2774			&ColumnId::PROFILER_SHAPE_SNAPSHOTS_COLUMNS,
2775			&ColumnId::PROFILER_API_SNAPSHOTS_COLUMNS,
2776			&ColumnId::PROFILER_ACTOR_SNAPSHOTS_COLUMNS,
2777			&ColumnId::RUNTIME_MEMORY_SNAPSHOTS_COLUMNS,
2778			&ColumnId::RUNTIME_WATERMARKS_SNAPSHOTS_COLUMNS,
2779		]
2780	}
2781
2782	#[test]
2783	fn system_series_ids_are_reserved_unique_and_below_user_range() {
2784		let mut seen = HashSet::new();
2785		assert!(seen.insert(RingBufferId::REQUEST_HISTORY.0), "ringbuffer source id setup");
2786		assert!(seen.insert(RingBufferId::STATEMENT_STATS.0), "ringbuffer source id setup");
2787
2788		for id in reserved_series_ids() {
2789			assert!(id.0 < USER_ID_START, "system series id {} leaks into the user range", id.0);
2790			assert!(
2791				seen.insert(id.0),
2792				"system series id {} collides with another reserved source id",
2793				id.0
2794			);
2795		}
2796	}
2797
2798	#[test]
2799	fn system_column_ids_are_reserved_unique_and_below_user_range() {
2800		let mut seen = HashSet::new();
2801		for ringbuffer_column in 1..=18u64 {
2802			assert!(seen.insert(ringbuffer_column), "ringbuffer column id setup");
2803		}
2804
2805		let mut count = 0;
2806		for array in reserved_column_arrays() {
2807			for &id in array {
2808				assert!(id.0 < USER_ID_START, "system column id {} leaks into the user range", id.0);
2809				assert!(
2810					seen.insert(id.0),
2811					"system column id {} collides with another reserved column id",
2812					id.0
2813				);
2814				count += 1;
2815			}
2816		}
2817
2818		assert_eq!(count, 21 * 22 + 2 * 5, "expected exactly 472 reserved system column ids");
2819	}
2820
2821	#[test]
2822	fn profiler_snapshot_arrays_have_22_columns_and_runtime_have_5() {
2823		for array in &reserved_column_arrays()[..21] {
2824			assert_eq!(array.len(), 22, "profiler snapshot series must declare 22 column ids");
2825		}
2826		for array in &reserved_column_arrays()[21..] {
2827			assert_eq!(array.len(), 5, "runtime snapshot series must declare 5 column ids");
2828		}
2829	}
2830}