콘텐츠로 이동

진단 및 오류 코드

SQLBraid runtime/compiler 오류는 오류 타입이 정의한 경우 code를 노출합니다. Adapter capability 오류는 안정적인 BRAID_* code를 가진 UnsupportedFeatureError를 사용하고 driver 오류는 원래 identity를 유지합니다.

Placeholder 생성, hint 매핑, typed request 구성, 지원하지 않는 transport 선택 같은 binding 구성 실패는 lease 획득과 driver I/O 전 materialize 단계에서 발생합니다. Driver/server/network 실패는 driver 단계입니다. Materialization 오류의 executionStartedexecutionCompleted는 모두 false입니다.

내보낸 PUBLIC_ERROR_DEFINITIONS registry가 이 reference의 source of truth입니다. Runtime 소유 class에는 DatabaseScopeError, DatabaseResultKindError, DatabaseResultValidationError, ResultExactnessError, RoutineMappingError가 있습니다. Adapter capability 실패는 UnsupportedFeatureError를 사용하며, feature는 capability를, code는 안정적인 오류 코드를 나타냅니다. Driver 오류는 래핑하지 않고, 이미 abort된 AbortSignal은 원래 reason으로 거부합니다. 안정적인 bind code를 노출하는 Adapter 입력/transport 실패는 AdapterError (TypeError) class를 사용합니다.

Code 의미
BRAID_RESULT_EXACTNESS 결과 값을 손실 없이 표현할 수 없습니다.
BRAID_RESULT_KIND 선언한 result kind와 실행 후 adapter 결과가 다릅니다.
BRAID_RESULT_SETS_UNSUPPORTED 일반 query/stream이 추가 statement/result set을 반환했습니다. 순서 있는 routine set에는 db.call()을 사용하세요.
BRAID_RESULT_VALIDATION Query-bound 또는 execution-level Standard Schema 검증에 실패했습니다.
BRAID_BATCH_ABORTED 이미 query:ready를 알린 batch item이 다른 operation 또는 공유 batch phase 실패로 중단되었습니다. executionStartedexecutionCompleted가 해당 item 자체의 실행 여부를 구분합니다.
BRAID_CALL_UNSUPPORTED Adapter가 routine call을 제공하지 않습니다.
BRAID_STREAM_UNSUPPORTED Adapter가 streaming protocol을 제공하지 않습니다.
BRAID_CANCEL_UNSUPPORTED 활성 signal이 전달되었지만 adapter가 물리 statement를 취소할 수 없습니다. I/O 전에 거부합니다.
BRAID_SESSION_UNSUPPORTED Adapter/provider가 session lease를 고정할 수 없습니다.
BRAID_SESSION_SCOPE 활성 session scope에서 root database를 사용했습니다.
BRAID_SESSION_CLOSED Callback 종료 뒤 session callback handle을 사용했습니다.
BRAID_TX_UNSUPPORTED Adapter가 transaction을 시작할 수 없습니다.
BRAID_TX_OPTIONS_INVALID Runtime transaction option이 malformed입니다(TypeError). lease 획득 전에 검증합니다.
BRAID_TX_OPTIONS_NESTED 활성 transaction 내부에서 명시적 transaction option을 전달했습니다.
BRAID_TX_OPTION_UNSUPPORTED 유효한 isolation/read-only option이 advertised되지 않았습니다. feature는 transaction.isolation.<level> 또는 transaction.read-only입니다.
BRAID_TX_SCOPE root/parent/sibling transaction handle이 활성 범위를 벗어났습니다.
BRAID_TX_CLOSED callback 종료 뒤 scoped transaction handle을 사용했습니다.
BRAID_CONNECTION_POISONED 불확실한 transaction control로 물리 resource가 오염되었습니다.
BRAID_STREAM_SCOPE 겹치거나 동일한 resource에서 streaming을 시도했습니다.
BRAID_REENTRY direct physical resource에 동시에 재진입했습니다.
BRAID_CALL_RESULT_SETS tuple routine의 result-set 개수와 driver 반환 개수가 다릅니다.
BRAID_CALL_MAP routine output, return value 또는 result-set row 매핑에 실패했습니다.
BRAID_CALL_CURSOR_TX_REQUIRED PostgreSQL refcursor call에는 기존 transaction-scoped database가 필요합니다.
BRAID_CALL_CURSOR_UNSUPPORTED 요청한 cursor output을 application result set으로 노출할 수 없습니다.
BRAID_CALL_RETURN_UNSUPPORTED return/status schema를 요청했지만 driver channel이 없습니다.
BRAID_CALL_OUT_UNSUPPORTED 요청한 OUT 또는 INOUT parameter carrier를 노출할 수 없습니다.
BRAID_CALL_LOB_UNSUPPORTED Oracle output이 문서화된 LOB carrier를 제공하지 않습니다.
BRAID_RESOURCE_CLEANUP Driver close, drain 또는 cancel이 실패해 lease를 안전하게 재사용할 수 없습니다.
BRAID_PREPARED_NAME Prepared query 이름이 비어 있거나 중복됩니다.
BRAID_PREPARED_SHAPE Prepared query가 다른 logical shape를 렌더링했습니다.
BRAID_BIND_HINT_UNSUPPORTED Adapter가 명시적 bind type/facet을 적용할 수 없습니다. I/O 전에 거부합니다.
BRAID_BIND_VALUE_UNSUPPORTED 선택한 binding transport로 값을 표현할 수 없습니다.
BRAID_BIND_TYPE_REQUIRED Driver inference가 모호합니다(Oracle/SQL Server untyped null 포함).
BRAID_INTEGER_MODE_UNSUPPORTED Adapter가 계약에 필요한 exact integer read mode를 켤 수 없습니다.
BRAID_BULK_UNSUPPORTED Adapter가 필요한 native bulk capability를 제공하지 않습니다.
BRAID_DIALECT_MISMATCH Rendered statement가 선택한 adapter dialect와 다릅니다.
BRAID_RESULT_KIND_AMBIGUOUS Adapter가 빈 row result와 command result를 구분할 수 없습니다.
BRAID_EMPTY_LIST 명시적 empty strategy 없이 sql.list([])를 사용했습니다.
BRAID_EMPTY_SET @braid set에 assignment가 없습니다.
BRAID_DIALECT Fragment가 다른 dialect에 속합니다.
BRAID_ASYNC_CONTEXT Guarded lowering이 top-level await/yield 평가 context를 바꿉니다.
BRAID_DIRECTIVE_UNTERMINATED Directive comment의 닫는 */가 없습니다.
BRAID_DIRECTIVE 비어 있거나 알 수 없는 @braid directive입니다.
BRAID_CONDITION Guard가 추가 text 없이 정확히 하나의 interpolation을 갖지 않습니다.
BRAID_ATTRIBUTES Directive attribute가 지원되지 않거나 잘못되었거나 중복되었습니다.
BRAID_STRUCTURE Directive nesting/branch 구조가 잘못되었습니다.
BRAID_HOLE_CONTEXT SQL literal/comment 내부에 interpolation이 있습니다.
BRAID_SQL_LEX SQL literal/comment가 닫히지 않았습니다.
BRAID_DEPTH Template/rendered fragment nesting이 설정 한도를 초과했습니다.
BRAID_STRUCTURE_LIMIT Rendered structural item이 maxStructuralItems를 초과했습니다.
BRAID_SQL_LIMIT / BRAID_BIND_LIMIT Rendered output이 설정 한도를 초과했습니다.

UnsupportedFeatureError constructor는 (feature, code, message, options?)이고 code는 BRAID_${string} 형태입니다. 이미 abort된 signal은 BRAID_CANCEL_UNSUPPORTED가 아니라 자신의 reason으로 거부됩니다. 지원되지 않는 capability를 buffering, 숨은 transaction, 추측한 routine metadata, 무시한 hint로 바꾸지 마세요.

Compiler diagnostic에는 source range와 severity가 있습니다. CLI JSON은 1-based 위치이고 LSP는 표준 0-based 위치입니다. 누락 metadata는 open-world 증거이지 invalid SQL 오류가 아닙니다.