2025-02-13 14:53:05 +01:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
import typing as t
|
2025-02-13 06:15:54 +01:00
|
|
|
from enum import auto
|
|
|
|
|
|
|
|
from sqlglot.helper import AutoName
|
|
|
|
|
|
|
|
|
|
|
|
class ErrorLevel(AutoName):
|
|
|
|
IGNORE = auto() # Ignore any parser errors
|
|
|
|
WARN = auto() # Log any parser errors with ERROR level
|
|
|
|
RAISE = auto() # Collect all parser errors and raise a single exception
|
|
|
|
IMMEDIATE = auto() # Immediately raise an exception on the first parser error
|
|
|
|
|
|
|
|
|
|
|
|
class SqlglotError(Exception):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class UnsupportedError(SqlglotError):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class ParseError(SqlglotError):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class TokenError(SqlglotError):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class OptimizeError(SqlglotError):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
2025-02-13 14:53:05 +01:00
|
|
|
class SchemaError(SqlglotError):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
2025-02-13 14:54:32 +01:00
|
|
|
class ExecuteError(SqlglotError):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
2025-02-13 14:53:05 +01:00
|
|
|
def concat_errors(errors: t.Sequence[t.Any], maximum: int) -> str:
|
2025-02-13 06:15:54 +01:00
|
|
|
msg = [str(e) for e in errors[:maximum]]
|
|
|
|
remaining = len(errors) - maximum
|
|
|
|
if remaining > 0:
|
|
|
|
msg.append(f"... and {remaining} more")
|
|
|
|
return "\n\n".join(msg)
|