1use std::any::Any;
16
17use common_error::ext::ErrorExt;
18use common_error::status_code::StatusCode;
19use common_macro::stack_trace_debug;
20use datatypes::timestamp::TimestampNanosecond;
21use snafu::{Location, Snafu};
22
23#[derive(Snafu)]
24#[snafu(visibility(pub))]
25#[stack_trace_debug]
26pub enum Error {
27 #[snafu(display("Empty input field"))]
28 EmptyInputField {
29 #[snafu(implicit)]
30 location: Location,
31 },
32
33 #[snafu(display("Missing input field"))]
34 MissingInputField {
35 #[snafu(implicit)]
36 location: Location,
37 },
38
39 #[snafu(display(
40 "Field renaming must be a string pair of 'key' and 'rename_to', got: {value:?}"
41 ))]
42 InvalidFieldRename {
43 value: yaml_rust::Yaml,
44 #[snafu(implicit)]
45 location: Location,
46 },
47
48 #[snafu(display("Processor must be a map"))]
49 ProcessorMustBeMap {
50 #[snafu(implicit)]
51 location: Location,
52 },
53
54 #[snafu(display("Processor {processor}: missing field: {field}"))]
55 ProcessorMissingField {
56 processor: String,
57 field: String,
58 #[snafu(implicit)]
59 location: Location,
60 },
61
62 #[snafu(display("Processor {processor}: expect string value, but got {v:?}"))]
63 ProcessorExpectString {
64 processor: String,
65 v: vrl::value::Value,
66 #[snafu(implicit)]
67 location: Location,
68 },
69
70 #[snafu(display("Processor {processor}: unsupported value {val}"))]
71 ProcessorUnsupportedValue {
72 processor: String,
73 val: String,
74 #[snafu(implicit)]
75 location: Location,
76 },
77
78 #[snafu(display("Processor key must be a string"))]
79 ProcessorKeyMustBeString {
80 #[snafu(implicit)]
81 location: Location,
82 },
83
84 #[snafu(display("Processor {kind}: failed to parse {value}"))]
85 ProcessorFailedToParseString {
86 kind: String,
87 value: String,
88 #[snafu(implicit)]
89 location: Location,
90 },
91
92 #[snafu(display("Processor must have a string key"))]
93 ProcessorMustHaveStringKey {
94 #[snafu(implicit)]
95 location: Location,
96 },
97
98 #[snafu(display("Unsupported {processor} processor"))]
99 UnsupportedProcessor {
100 processor: String,
101 #[snafu(implicit)]
102 location: Location,
103 },
104
105 #[snafu(display("Field {field} must be a {ty}"))]
106 FieldMustBeType {
107 field: String,
108 ty: String,
109 #[snafu(implicit)]
110 location: Location,
111 },
112
113 #[snafu(display("Field parse from string failed: {field}"))]
114 FailedParseFieldFromString {
115 #[snafu(source)]
116 error: Box<dyn std::error::Error + Send + Sync>,
117 field: String,
118 #[snafu(implicit)]
119 location: Location,
120 },
121
122 #[snafu(display("Failed to parse {key} as int: {value}"))]
123 FailedToParseIntKey {
124 key: String,
125 value: String,
126 #[snafu(source)]
127 error: std::num::ParseIntError,
128 #[snafu(implicit)]
129 location: Location,
130 },
131
132 #[snafu(display("Failed to parse {value} to int"))]
133 FailedToParseInt {
134 value: String,
135 #[snafu(source)]
136 error: std::num::ParseIntError,
137 #[snafu(implicit)]
138 location: Location,
139 },
140 #[snafu(display("Failed to parse {key} as float: {value}"))]
141 FailedToParseFloatKey {
142 key: String,
143 value: String,
144 #[snafu(source)]
145 error: std::num::ParseFloatError,
146 #[snafu(implicit)]
147 location: Location,
148 },
149
150 #[snafu(display("Processor {kind}: {key} not found in intermediate keys"))]
151 IntermediateKeyIndex {
152 kind: String,
153 key: String,
154 #[snafu(implicit)]
155 location: Location,
156 },
157
158 #[snafu(display("Cmcd {k} missing value in {s}"))]
159 CmcdMissingValue {
160 k: String,
161 s: String,
162 #[snafu(implicit)]
163 location: Location,
164 },
165 #[snafu(display("Part: {part} missing key in {s}"))]
166 CmcdMissingKey {
167 part: String,
168 s: String,
169 #[snafu(implicit)]
170 location: Location,
171 },
172 #[snafu(display("Key must be a string, but got {k:?}"))]
173 KeyMustBeString {
174 k: yaml_rust::Yaml,
175 #[snafu(implicit)]
176 location: Location,
177 },
178
179 #[snafu(display("Csv read error"))]
180 CsvRead {
181 #[snafu(implicit)]
182 location: Location,
183 #[snafu(source)]
184 error: csv::Error,
185 },
186 #[snafu(display("Expected at least one record from csv format, but got none"))]
187 CsvNoRecord {
188 #[snafu(implicit)]
189 location: Location,
190 },
191
192 #[snafu(display("Separator '{separator}' must be a single character, but got '{value}'"))]
193 CsvSeparatorName {
194 separator: String,
195 value: String,
196 #[snafu(implicit)]
197 location: Location,
198 },
199
200 #[snafu(display("Quote '{quote}' must be a single character, but got '{value}'"))]
201 CsvQuoteName {
202 quote: String,
203 value: String,
204 #[snafu(implicit)]
205 location: Location,
206 },
207
208 #[snafu(display("Parse date timezone error {value}"))]
209 DateParseTimezone {
210 value: String,
211 #[snafu(source)]
212 error: chrono_tz::ParseError,
213 #[snafu(implicit)]
214 location: Location,
215 },
216
217 #[snafu(display("Parse date error {value}"))]
218 DateParse {
219 value: String,
220 #[snafu(source)]
221 error: chrono::ParseError,
222 #[snafu(implicit)]
223 location: Location,
224 },
225
226 #[snafu(display("Failed to get local timezone"))]
227 DateFailedToGetLocalTimezone {
228 #[snafu(implicit)]
229 location: Location,
230 },
231
232 #[snafu(display("Invalid Pattern: '{s}'. {detail}"))]
233 DissectInvalidPattern {
234 s: String,
235 detail: String,
236 #[snafu(implicit)]
237 location: Location,
238 },
239
240 #[snafu(display("Empty pattern is not allowed"))]
241 DissectEmptyPattern {
242 #[snafu(implicit)]
243 location: Location,
244 },
245 #[snafu(display("Split: '{split}' exceeds the input"))]
246 DissectSplitExceedsInput {
247 split: String,
248 #[snafu(implicit)]
249 location: Location,
250 },
251 #[snafu(display("Split: '{split}' does not match the input '{input}'"))]
252 DissectSplitNotMatchInput {
253 split: String,
254 input: String,
255 #[snafu(implicit)]
256 location: Location,
257 },
258 #[snafu(display("Consecutive names are not allowed: '{name1}' '{name2}'"))]
259 DissectConsecutiveNames {
260 name1: String,
261 name2: String,
262 #[snafu(implicit)]
263 location: Location,
264 },
265 #[snafu(display("No matching pattern found"))]
266 DissectNoMatchingPattern {
267 #[snafu(implicit)]
268 location: Location,
269 },
270 #[snafu(display("Modifier '{m}' already set, but found {modifier}"))]
271 DissectModifierAlreadySet {
272 m: String,
273 modifier: String,
274 #[snafu(implicit)]
275 location: Location,
276 },
277
278 #[snafu(display("Append Order modifier is already set to '{n}', cannot be set to {order}"))]
279 DissectAppendOrderAlreadySet {
280 n: String,
281 order: u32,
282 #[snafu(implicit)]
283 location: Location,
284 },
285 #[snafu(display("Order can only be set to Append Modifier, current modifier is {m}"))]
286 DissectOrderOnlyAppend {
287 m: String,
288 #[snafu(implicit)]
289 location: Location,
290 },
291
292 #[snafu(display("Order can only be set to Append Modifier"))]
293 DissectOrderOnlyAppendModifier {
294 #[snafu(implicit)]
295 location: Location,
296 },
297
298 #[snafu(display("End modifier already set: '{m}'"))]
299 DissectEndModifierAlreadySet {
300 m: String,
301 #[snafu(implicit)]
302 location: Location,
303 },
304 #[snafu(display("Invalid resolution: {resolution}"))]
305 EpochInvalidResolution {
306 resolution: String,
307 #[snafu(implicit)]
308 location: Location,
309 },
310 #[snafu(display("Pattern is required"))]
311 GsubPatternRequired {
312 #[snafu(implicit)]
313 location: Location,
314 },
315 #[snafu(display("Replacement is required"))]
316 GsubReplacementRequired {
317 #[snafu(implicit)]
318 location: Location,
319 },
320 #[snafu(display("Invalid regex pattern: {pattern}"))]
321 Regex {
322 #[snafu(source)]
323 error: regex::Error,
324 pattern: String,
325 #[snafu(implicit)]
326 location: Location,
327 },
328 #[snafu(display("Separator is required"))]
329 JoinSeparatorRequired {
330 #[snafu(implicit)]
331 location: Location,
332 },
333 #[snafu(display("Invalid method: {method}"))]
334 LetterInvalidMethod {
335 method: String,
336 #[snafu(implicit)]
337 location: Location,
338 },
339 #[snafu(display("No named group found in regex {origin}"))]
340 RegexNamedGroupNotFound {
341 origin: String,
342 #[snafu(implicit)]
343 location: Location,
344 },
345 #[snafu(display("No valid field found in {processor} processor"))]
346 RegexNoValidField {
347 processor: String,
348 #[snafu(implicit)]
349 location: Location,
350 },
351 #[snafu(display("No valid pattern found in {processor} processor"))]
352 RegexNoValidPattern {
353 processor: String,
354 #[snafu(implicit)]
355 location: Location,
356 },
357 #[snafu(display("Invalid method: {s}"))]
358 UrlEncodingInvalidMethod {
359 s: String,
360 #[snafu(implicit)]
361 location: Location,
362 },
363 #[snafu(display("Wrong digest pattern: {pattern}"))]
364 DigestPatternInvalid {
365 pattern: String,
366 #[snafu(implicit)]
367 location: Location,
368 },
369 #[snafu(display("Invalid transform on_failure value: {value}"))]
370 TransformOnFailureInvalidValue {
371 value: String,
372 #[snafu(implicit)]
373 location: Location,
374 },
375 #[snafu(display("Transform element must be a map"))]
376 TransformElementMustBeMap {
377 #[snafu(implicit)]
378 location: Location,
379 },
380 #[snafu(display("Transform fields must be set."))]
381 TransformFieldMustBeSet {
382 #[snafu(implicit)]
383 location: Location,
384 },
385 #[snafu(display("Transform {fields:?} type MUST BE set."))]
386 TransformTypeMustBeSet {
387 fields: String,
388 #[snafu(implicit)]
389 location: Location,
390 },
391 #[snafu(display("Column name must be unique, but got duplicated: {duplicates}"))]
392 TransformColumnNameMustBeUnique {
393 duplicates: String,
394 #[snafu(implicit)]
395 location: Location,
396 },
397 #[snafu(display(
398 "Illegal to set multiple timestamp Index columns, please set only one: {columns}"
399 ))]
400 TransformMultipleTimestampIndex {
401 columns: String,
402 #[snafu(implicit)]
403 location: Location,
404 },
405 #[snafu(display(
406 "Transform must have exactly one field specified as timestamp Index, but got {count}: {columns}"
407 ))]
408 TransformTimestampIndexCount {
409 count: usize,
410 columns: String,
411 #[snafu(implicit)]
412 location: Location,
413 },
414 #[snafu(display(
415 "Exactly one time-related processor and one timestamp value is required to use auto transform. `ignore_missing` can not be set to true."
416 ))]
417 AutoTransformOneTimestamp {
418 #[snafu(implicit)]
419 location: Location,
420 },
421 #[snafu(display("Invalid Pipeline doc version number: {}", version))]
422 InvalidVersionNumber {
423 version: String,
424 #[snafu(implicit)]
425 location: Location,
426 },
427 #[snafu(display("Type: {ty} value not supported for Epoch"))]
428 CoerceUnsupportedEpochType {
429 ty: String,
430 #[snafu(implicit)]
431 location: Location,
432 },
433 #[snafu(display("Failed to coerce string value '{s}' to type '{ty}'"))]
434 CoerceStringToType {
435 s: String,
436 ty: String,
437 #[snafu(implicit)]
438 location: Location,
439 },
440 #[snafu(display("Can not coerce json type to {ty}"))]
441 CoerceJsonTypeTo {
442 ty: String,
443 #[snafu(implicit)]
444 location: Location,
445 },
446 #[snafu(display(
447 "Can not coerce {ty} to json type. we only consider object and array to be json types."
448 ))]
449 CoerceTypeToJson {
450 ty: String,
451 #[snafu(implicit)]
452 location: Location,
453 },
454 #[snafu(display("Failed to coerce value: {msg}"))]
455 CoerceIncompatibleTypes {
456 msg: String,
457 #[snafu(implicit)]
458 location: Location,
459 },
460 #[snafu(display(
461 "Invalid resolution: '{resolution}'. Available resolutions: {valid_resolution}"
462 ))]
463 ValueInvalidResolution {
464 resolution: String,
465 valid_resolution: String,
466 #[snafu(implicit)]
467 location: Location,
468 },
469
470 #[snafu(display("Failed to parse type: '{t}'"))]
471 ValueParseType {
472 t: String,
473 #[snafu(implicit)]
474 location: Location,
475 },
476
477 #[snafu(display("Failed to parse {ty}: {v}"))]
478 ValueParseInt {
479 ty: String,
480 v: String,
481 #[snafu(source)]
482 error: std::num::ParseIntError,
483 #[snafu(implicit)]
484 location: Location,
485 },
486
487 #[snafu(display("Failed to parse {ty}: {v}"))]
488 ValueParseFloat {
489 ty: String,
490 v: String,
491 #[snafu(source)]
492 error: std::num::ParseFloatError,
493 #[snafu(implicit)]
494 location: Location,
495 },
496
497 #[snafu(display("Failed to parse {ty}: {v}"))]
498 ValueParseBoolean {
499 ty: String,
500 v: String,
501 #[snafu(source)]
502 error: std::str::ParseBoolError,
503 #[snafu(implicit)]
504 location: Location,
505 },
506 #[snafu(display("Default value not unsupported for type {value}"))]
507 ValueDefaultValueUnsupported {
508 value: String,
509 #[snafu(implicit)]
510 location: Location,
511 },
512
513 #[snafu(display("Unsupported yaml type: {value:?}"))]
514 ValueUnsupportedYamlType {
515 value: yaml_rust::Yaml,
516 #[snafu(implicit)]
517 location: Location,
518 },
519
520 #[snafu(display("key in Hash must be a string, but got {value:?}"))]
521 ValueYamlKeyMustBeString {
522 value: yaml_rust::Yaml,
523 #[snafu(implicit)]
524 location: Location,
525 },
526
527 #[snafu(display("Yaml load error."))]
528 YamlLoad {
529 #[snafu(source)]
530 error: yaml_rust::ScanError,
531 #[snafu(implicit)]
532 location: Location,
533 },
534 #[snafu(display("Yaml parse error."))]
535 YamlParse {
536 #[snafu(implicit)]
537 location: Location,
538 },
539 #[snafu(display("Column options error"))]
540 ColumnOptions {
541 #[snafu(source)]
542 source: api::error::Error,
543 #[snafu(implicit)]
544 location: Location,
545 },
546 #[snafu(display("Unsupported index type: {value}"))]
547 UnsupportedIndexType {
548 value: String,
549 #[snafu(implicit)]
550 location: Location,
551 },
552 #[snafu(display("Failed to parse json"))]
553 JsonParse {
554 #[snafu(source)]
555 error: serde_json::Error,
556 #[snafu(implicit)]
557 location: Location,
558 },
559 #[snafu(display(
560 "Column datatype mismatch. For column: {column}, expected datatype: {expected}, actual datatype: {actual}"
561 ))]
562 IdentifyPipelineColumnTypeMismatch {
563 column: String,
564 expected: String,
565 actual: String,
566 #[snafu(implicit)]
567 location: Location,
568 },
569 #[snafu(display("Parse json path error"))]
570 JsonPathParse {
571 #[snafu(implicit)]
572 location: Location,
573 #[snafu(source)]
574 error: jsonpath_rust::JsonPathParserError,
575 },
576 #[snafu(display("Json path result index not number"))]
577 JsonPathParseResultIndex {
578 #[snafu(implicit)]
579 location: Location,
580 },
581 #[snafu(display("Field is required for dispatcher"))]
582 FieldRequiredForDispatcher,
583 #[snafu(display("Table_suffix is required for dispatcher rule"))]
584 TableSuffixRequiredForDispatcherRule,
585 #[snafu(display("Value is required for dispatcher rule"))]
586 ValueRequiredForDispatcherRule,
587 #[snafu(display("Reached max nested levels when flattening JSON object: {max_nested_levels}"))]
588 ReachedMaxNestedLevels {
589 max_nested_levels: usize,
590 #[snafu(implicit)]
591 location: Location,
592 },
593
594 #[snafu(display("Pipeline table not found"))]
595 PipelineTableNotFound {
596 #[snafu(implicit)]
597 location: Location,
598 },
599
600 #[snafu(display("Failed to insert pipeline to pipelines table"))]
601 InsertPipeline {
602 #[snafu(source)]
603 source: operator::error::Error,
604 #[snafu(implicit)]
605 location: Location,
606 },
607
608 #[snafu(display("Pipeline not found, name: {}, version: {}", name, version.map(|ts| ts.0.to_iso8601_string()).unwrap_or("latest".to_string())))]
609 PipelineNotFound {
610 name: String,
611 version: Option<TimestampNanosecond>,
612 #[snafu(implicit)]
613 location: Location,
614 },
615
616 #[snafu(display(
617 "Multiple pipelines with different schemas found, but none under current schema. Please replicate one of them or delete until only one schema left. schemas: {}",
618 schemas
619 ))]
620 MultiPipelineWithDiffSchema {
621 schemas: String,
622 #[snafu(implicit)]
623 location: Location,
624 },
625
626 #[snafu(display(
627 "The return value's length of the record batch does not match, see debug log for details"
628 ))]
629 RecordBatchLenNotMatch {
630 #[snafu(implicit)]
631 location: Location,
632 },
633
634 #[snafu(display("Failed to collect record batch"))]
635 CollectRecords {
636 #[snafu(implicit)]
637 location: Location,
638 #[snafu(source)]
639 source: common_recordbatch::error::Error,
640 },
641
642 #[snafu(display("A valid table suffix template is required for tablesuffix section"))]
643 RequiredTableSuffixTemplate,
644
645 #[snafu(display("Invalid table suffix template, input: {}", input))]
646 InvalidTableSuffixTemplate {
647 input: String,
648 #[snafu(implicit)]
649 location: Location,
650 },
651
652 #[snafu(display("Failed to compile VRL, {}", msg))]
653 CompileVrl {
654 msg: String,
655 #[snafu(implicit)]
656 location: Location,
657 },
658
659 #[snafu(display("Failed to execute VRL, {}", msg))]
660 ExecuteVrl {
661 msg: String,
662 #[snafu(implicit)]
663 location: Location,
664 },
665 #[snafu(display("Invalid timestamp value: {}", input))]
666 InvalidTimestamp {
667 input: String,
668 #[snafu(implicit)]
669 location: Location,
670 },
671
672 #[snafu(display("Invalid epoch value '{}' for resolution '{}'", value, resolution))]
673 InvalidEpochForResolution {
674 value: i64,
675 resolution: String,
676 #[snafu(implicit)]
677 location: Location,
678 },
679 #[snafu(display("Please don't use regex in Vrl script"))]
680 VrlRegexValue {
681 #[snafu(implicit)]
682 location: Location,
683 },
684
685 #[snafu(display("Vrl script should return `.` in the end"))]
686 VrlReturnValue {
687 #[snafu(implicit)]
688 location: Location,
689 },
690
691 #[snafu(display("Failed to cast type, msg: {}", msg))]
692 CastType {
693 msg: String,
694 #[snafu(implicit)]
695 location: Location,
696 },
697
698 #[snafu(display("Top level value must be map"))]
699 ValueMustBeMap {
700 #[snafu(implicit)]
701 location: Location,
702 },
703
704 #[snafu(display("Failed to build DataFusion logical plan"))]
705 BuildDfLogicalPlan {
706 #[snafu(source)]
707 error: datafusion_common::DataFusionError,
708 #[snafu(implicit)]
709 location: Location,
710 },
711
712 #[snafu(display("Failed to execute internal statement"))]
713 ExecuteInternalStatement {
714 #[snafu(source)]
715 source: query::error::Error,
716 #[snafu(implicit)]
717 location: Location,
718 },
719
720 #[snafu(display("Failed to create dataframe"))]
721 DataFrame {
722 #[snafu(source)]
723 source: query::error::Error,
724 #[snafu(implicit)]
725 location: Location,
726 },
727
728 #[snafu(display("General catalog error"))]
729 Catalog {
730 #[snafu(source)]
731 source: catalog::error::Error,
732 #[snafu(implicit)]
733 location: Location,
734 },
735
736 #[snafu(display("Failed to create table"))]
737 CreateTable {
738 #[snafu(source)]
739 source: operator::error::Error,
740 #[snafu(implicit)]
741 location: Location,
742 },
743
744 #[snafu(display("Invalid pipeline version format: {}", version))]
745 InvalidPipelineVersion {
746 version: String,
747 #[snafu(implicit)]
748 location: Location,
749 },
750
751 #[snafu(display("Invalid custom time index config: {}, reason: {}", config, reason))]
752 InvalidCustomTimeIndex {
753 config: String,
754 reason: String,
755 #[snafu(implicit)]
756 location: Location,
757 },
758
759 #[snafu(display("Pipeline is required for this API."))]
760 PipelineMissing {
761 #[snafu(implicit)]
762 location: Location,
763 },
764
765 #[snafu(display("Time index must be non null."))]
766 TimeIndexMustBeNonNull {
767 #[snafu(implicit)]
768 location: Location,
769 },
770
771 #[snafu(display("Float is NaN"))]
772 FloatIsNan {
773 #[snafu(source)]
774 error: ordered_float::FloatIsNan,
775 #[snafu(implicit)]
776 location: Location,
777 },
778
779 #[snafu(display("Unsupported type in pipeline: {}", ty))]
780 UnsupportedTypeInPipeline {
781 ty: String,
782 #[snafu(implicit)]
783 location: Location,
784 },
785}
786
787pub type Result<T> = std::result::Result<T, Error>;
788
789impl ErrorExt for Error {
790 fn status_code(&self) -> StatusCode {
791 use Error::*;
792 match self {
793 CastType { .. } => StatusCode::Unexpected,
794 PipelineTableNotFound { .. } => StatusCode::TableNotFound,
795 InsertPipeline { source, .. } => source.status_code(),
796 CollectRecords { source, .. } => source.status_code(),
797 PipelineNotFound { .. }
798 | InvalidPipelineVersion { .. }
799 | InvalidCustomTimeIndex { .. }
800 | TimeIndexMustBeNonNull { .. } => StatusCode::InvalidArguments,
801 MultiPipelineWithDiffSchema { .. } | ValueMustBeMap { .. } => StatusCode::IllegalState,
802 BuildDfLogicalPlan { .. } | RecordBatchLenNotMatch { .. } => StatusCode::Internal,
803 ExecuteInternalStatement { source, .. } => source.status_code(),
804 DataFrame { source, .. } => source.status_code(),
805 Catalog { source, .. } => source.status_code(),
806 CreateTable { source, .. } => source.status_code(),
807
808 EmptyInputField { .. }
809 | MissingInputField { .. }
810 | InvalidFieldRename { .. }
811 | ProcessorMustBeMap { .. }
812 | ProcessorMissingField { .. }
813 | ProcessorExpectString { .. }
814 | ProcessorUnsupportedValue { .. }
815 | ProcessorKeyMustBeString { .. }
816 | ProcessorFailedToParseString { .. }
817 | ProcessorMustHaveStringKey { .. }
818 | UnsupportedProcessor { .. }
819 | FieldMustBeType { .. }
820 | FailedParseFieldFromString { .. }
821 | FailedToParseIntKey { .. }
822 | FailedToParseInt { .. }
823 | FailedToParseFloatKey { .. }
824 | IntermediateKeyIndex { .. }
825 | CmcdMissingValue { .. }
826 | CmcdMissingKey { .. }
827 | KeyMustBeString { .. }
828 | CsvRead { .. }
829 | CsvNoRecord { .. }
830 | CsvSeparatorName { .. }
831 | CsvQuoteName { .. }
832 | DateParseTimezone { .. }
833 | DateParse { .. }
834 | DateFailedToGetLocalTimezone { .. }
835 | DissectInvalidPattern { .. }
836 | DissectEmptyPattern { .. }
837 | DissectSplitExceedsInput { .. }
838 | DissectSplitNotMatchInput { .. }
839 | DissectConsecutiveNames { .. }
840 | DissectNoMatchingPattern { .. }
841 | DissectModifierAlreadySet { .. }
842 | DissectAppendOrderAlreadySet { .. }
843 | DissectOrderOnlyAppend { .. }
844 | DissectOrderOnlyAppendModifier { .. }
845 | DissectEndModifierAlreadySet { .. }
846 | EpochInvalidResolution { .. }
847 | GsubPatternRequired { .. }
848 | GsubReplacementRequired { .. }
849 | Regex { .. }
850 | JoinSeparatorRequired { .. }
851 | LetterInvalidMethod { .. }
852 | RegexNamedGroupNotFound { .. }
853 | RegexNoValidField { .. }
854 | RegexNoValidPattern { .. }
855 | UrlEncodingInvalidMethod { .. }
856 | DigestPatternInvalid { .. }
857 | TransformOnFailureInvalidValue { .. }
858 | TransformElementMustBeMap { .. }
859 | TransformFieldMustBeSet { .. }
860 | TransformTypeMustBeSet { .. }
861 | TransformColumnNameMustBeUnique { .. }
862 | TransformMultipleTimestampIndex { .. }
863 | TransformTimestampIndexCount { .. }
864 | AutoTransformOneTimestamp { .. }
865 | InvalidVersionNumber { .. }
866 | CoerceUnsupportedEpochType { .. }
867 | CoerceStringToType { .. }
868 | CoerceJsonTypeTo { .. }
869 | CoerceTypeToJson { .. }
870 | CoerceIncompatibleTypes { .. }
871 | ValueInvalidResolution { .. }
872 | ValueParseType { .. }
873 | ValueParseInt { .. }
874 | ValueParseFloat { .. }
875 | ValueParseBoolean { .. }
876 | ValueDefaultValueUnsupported { .. }
877 | ValueUnsupportedYamlType { .. }
878 | ValueYamlKeyMustBeString { .. }
879 | YamlLoad { .. }
880 | YamlParse { .. }
881 | ColumnOptions { .. }
882 | UnsupportedIndexType { .. }
883 | IdentifyPipelineColumnTypeMismatch { .. }
884 | JsonParse { .. }
885 | JsonPathParse { .. }
886 | JsonPathParseResultIndex { .. }
887 | FieldRequiredForDispatcher
888 | TableSuffixRequiredForDispatcherRule
889 | ValueRequiredForDispatcherRule
890 | ReachedMaxNestedLevels { .. }
891 | RequiredTableSuffixTemplate
892 | InvalidTableSuffixTemplate { .. }
893 | CompileVrl { .. }
894 | ExecuteVrl { .. }
895 | InvalidTimestamp { .. }
896 | VrlRegexValue { .. }
897 | VrlReturnValue { .. }
898 | PipelineMissing { .. } => StatusCode::InvalidArguments,
899
900 FloatIsNan { .. }
901 | InvalidEpochForResolution { .. }
902 | UnsupportedTypeInPipeline { .. } => StatusCode::InvalidArguments,
903 }
904 }
905
906 fn as_any(&self) -> &dyn Any {
907 self
908 }
909}