콘텐츠로 이동

런타임 및 드라이버 지원

현재 지원 매트릭스는 지원 manifest에서 읽은 revision별 증거와 label을 표시합니다. 각 label과 증거는 매트릭스가 기록한 정확한 database, driver, profile, runtime, capability tuple과 해당 revision의 실행 workflow에만 적용됩니다. 인접한 서버 버전·runtime·profile·로컬 binding 또는 package 설치로 인증을 추론하지 마세요. 정확한 tuple의 revision별 workflow evidence를 확인해야 합니다. 최종 exact-SHA Runtime, Documentation, Release gate와 명시적인 release 승인은 별도 요구사항입니다.

  • Official — 지정한 database, driver, profile, runtime, capability tuple을 정확한 실행 증거가 다룹니다.
  • Conditional — 이름을 지정한 조건에서만 증거가 적용됩니다.
  • Pending — 현재 구현 revision에 대한 새로운 성공 gate가 없습니다.
  • Historical — 과거 exact revision이 조합을 실행했지만 현재 tree를 증명하지 않습니다.
  • Compatible — public API가 동작할 수 있지만 정확한 인증 target을 주장하지 않습니다.
  • Custom — 사용자가 제공한 QueryExecutor 또는 ConnectionProvider입니다.
  • Unsupported — 필요한 SQLBraid capability가 의도적으로 없습니다.
SQLBraid 지원 대상 (정적/인쇄용 요약)
대상데이터베이스드라이버런타임상태정확한 숫자JSON시간트랜잭션스트리밍
better-sqlite3-node-22-18-0sqlite better-sqlite3 bundled SQLitebetter-sqlite3@13.0.3node@22.18.0호환 가능string · lossless · better-sqlite3-exact-string / string · unsupported · better-sqlite3-exact-string트랜잭션: 보장됨; 세이브포인트: 보장됨
bun-sql-mariadbmariadb 11.8.9 communitybun-sql@1.3.14bun@1.3.14공식string · guarded · bun-sql-mariadb-1.3.14 / string · unsupported · bun-sql-mariadb-1.3.14지원하지 않음 / 보장됨값 검사 (네이티브 Date 편의 변환은 소수초 정밀도나 시간대 식별을 보존하지 않음) / 지원하지 않음트랜잭션: 보장됨; 세이브포인트: 보장됨; 읽기 전용 트랜잭션: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Read uncommitted 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Read committed 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Repeatable read 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Serializable 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원)지원하지 않음
bun-sql-mysqlmysql 8.4.2 communitybun-sql@1.3.14bun@1.3.14공식string · guarded · bun-sql-mysql-1.3.14 / string · unsupported · bun-sql-mysql-1.3.14값 검사 (네이티브 JSON 파싱은 숫자 무손실 표현이 아님) / 지원하지 않음값 검사 (네이티브 Date 편의 변환은 소수초 정밀도나 시간대 식별을 보존하지 않음) / 지원하지 않음트랜잭션: 보장됨; 세이브포인트: 보장됨; 읽기 전용 트랜잭션: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Read uncommitted 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Read committed 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Repeatable read 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Serializable 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원)지원하지 않음
bun-sql-postgrespostgres 16.4 alpinebun-sql@1.3.14bun@1.3.14공식string · guarded · bun-sql-postgres-1.3.14 / string · lossless · bun-sql-postgres-1.3.14값 검사 (네이티브 JSON 파싱은 숫자 무손실 표현이 아님) / 지원하지 않음값 검사 (네이티브 Date 편의 변환은 소수초 정밀도나 시간대 식별을 보존하지 않음) / 지원하지 않음트랜잭션: 보장됨; 세이브포인트: 보장됨; 읽기 전용 트랜잭션: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Read uncommitted 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Read committed 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Repeatable read 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원); Serializable 격리: 값 검사 (이 백엔드에서 검증된 네이티브 격리 수준과 읽기 전용 매핑만 지원)지원하지 않음
bun-sql-sqlitesqlite 3.53.0 bun-embeddedbun-sql@1.3.14bun@1.3.14공식string · guarded · bun-sql-sqlite-1.3.14 / string · unsupported · bun-sql-sqlite-1.3.14지원하지 않음 / 보장됨지원하지 않음 / 보장됨트랜잭션: 보장됨; 세이브포인트: 보장됨; 읽기 전용 트랜잭션: 지원하지 않음; Read uncommitted 격리: 지원하지 않음; Read committed 격리: 지원하지 않음; Repeatable read 격리: 지원하지 않음; Serializable 격리: 보장됨지원하지 않음
d1-cloudflare-workerd-2026-07-30sqlite Cloudflare D1 managed SQLite (version unreported)cloudflare-d1@1.20260730.1workerd@1.20260730.1호환 가능string · guarded · d1-guarded-safe-integer / string · unsupported · d1-guarded-safe-integer보장됨보장됨읽기 전용 트랜잭션: 지원하지 않음; Read uncommitted 격리: 지원하지 않음; Read committed 격리: 지원하지 않음; Repeatable read 격리: 지원하지 않음; Serializable 격리: 지원하지 않음; 트랜잭션: 지원하지 않음; 세이브포인트: 지원하지 않음지원하지 않음
libsql-local-node-22-18-0sqlite libSQL local SQLitelibsql@0.18.0node@22.18.0호환 가능string · lossless · libsql-exact-string / string · unsupported · libsql-exact-string트랜잭션: 보장됨; 세이브포인트: 보장됨
mariadb-connector-node-11-8-9mariadb 11.8.9 communitymariadb@3.5.4node@22.18.0공식string · guarded · mariadb-lossless-text / string · guarded · mariadb-lossless-text보장됨보장됨읽기 전용 트랜잭션: 보장됨; Read uncommitted 격리: 보장됨; Read committed 격리: 보장됨; Repeatable read 격리: 보장됨; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
mssql-tedious-developer-node-2022-cu18mssql 2022-CU18 Developertedious@20.0.0node@22.18.0공식string · guarded · mssql-tedious / string · unsupported · mssql-tedious보장됨값 검사 (SQL Server 시간 텍스트 캐스트 경로)읽기 전용 트랜잭션: 지원하지 않음; Read uncommitted 격리: 보장됨; Read committed 격리: 보장됨; Repeatable read 격리: 보장됨; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
mysql-mysql2-deno-2-9-3mysql 8.4.2 communitymysql2@3.24.4deno@2.9.3공식string · guarded · mysql2-lossless-text / string · lossless · mysql2-lossless-text보장됨보장됨읽기 전용 트랜잭션: 보장됨; Read uncommitted 격리: 보장됨; Read committed 격리: 보장됨; Repeatable read 격리: 보장됨; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
mysql-mysql2-node-8-4-2mysql 8.4.2 communitymysql2@3.24.4node@22.18.0공식string · guarded · mysql2-lossless-text / string · lossless · mysql2-lossless-text보장됨보장됨읽기 전용 트랜잭션: 보장됨; Read uncommitted 격리: 보장됨; Read committed 격리: 보장됨; Repeatable read 격리: 보장됨; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
oracle-oracledb-thin-node-23-9oracle 23.9 Freenode-oracledb@7.0.1node@22.18.0공식string · unsupported · oracle-thin / string · lossless · oracle-thin보장됨 / 값 검사 (Oracle JSON_SERIALIZE 텍스트 경로)값 검사 (Oracle Date 밀리초 정밀도) / 값 검사 (Oracle 시간 텍스트 캐스트 경로)읽기 전용 트랜잭션: 보장됨; Read uncommitted 격리: 지원하지 않음; Read committed 격리: 보장됨; Repeatable read 격리: 지원하지 않음; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
postgres-currentpostgres 18.6 alpinepg@8.23.0node@22.18.0공식string · lossless · pg-lossless-text / string · lossless · pg-lossless-text보장됨보장됨
postgres-pg-deno-2-9-3postgres 16.4 alpinepg@8.23.0deno@2.9.3공식string · lossless · pg-lossless-text / string · lossless · pg-lossless-text보장됨보장됨읽기 전용 트랜잭션: 보장됨; Read uncommitted 격리: 값 검사 (PostgreSQL READ UNCOMMITTED는 READ COMMITTED 의미론 사용); Read committed 격리: 보장됨; Repeatable read 격리: 보장됨; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
postgres-pg-node-16-4postgres 16.4 alpinepg@8.23.0node@22.18.0공식string · lossless · pg-lossless-text / string · lossless · pg-lossless-text보장됨보장됨읽기 전용 트랜잭션: 보장됨; Read uncommitted 격리: 값 검사 (PostgreSQL READ UNCOMMITTED는 READ COMMITTED 의미론 사용); Read committed 격리: 보장됨; Repeatable read 격리: 보장됨; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
sqlite-node-sqlite-deno-2-9-3sqlite 3.53.2 Deno bundled SQLitenode-sqlite@2.9.3deno@2.9.3공식string · lossless · sqlite-exact-string / string · unsupported · sqlite-exact-string보장됨보장됨읽기 전용 트랜잭션: 지원하지 않음; Read uncommitted 격리: 지원하지 않음; Read committed 격리: 지원하지 않음; Repeatable read 격리: 지원하지 않음; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
sqlite-wasm-browser-3-53-4sqlite 3.53.4 official SQLite WASM OO1sqlite-wasm@3.53.4-build1browser@153.0.8010.12공식string · lossless · sqlite-wasm-exact-string / string · unsupported · sqlite-wasm-exact-string보장됨보장됨읽기 전용 트랜잭션: 지원하지 않음; Read uncommitted 격리: 지원하지 않음; Read committed 격리: 지원하지 않음; Repeatable read 격리: 지원하지 않음; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨
sqlite-node-sqlite-node-22-18-0sqlite 3.50.2 Node bundled SQLitenode-sqlite@22.18.0node@22.18.0공식string · lossless · sqlite-exact-string / string · unsupported · sqlite-exact-string보장됨보장됨읽기 전용 트랜잭션: 지원하지 않음; Read uncommitted 격리: 지원하지 않음; Read committed 격리: 지원하지 않음; Repeatable read 격리: 지원하지 않음; Serializable 격리: 보장됨; 트랜잭션: 보장됨; 세이브포인트: 보장됨보장됨

매트릭스는 기계 판독 support target과 capability 조건에서 생성됩니다. 모든 adapter가 모든 작업을 제공한다는 약속이 아니라 증거 표시입니다.

Dialect, driver, runtime, host, database version, representation profile, capability는 별도 축입니다. 정식 capability 식별자는 다음과 같습니다.

sql.native-transparency sql.generated-structure
result.rows result.command
result.multiple-sets result.standard-schema
numeric.exact-integer numeric.exact-decimal
numeric.approximate-float numeric.approximate-special
numeric.bind-exact numeric.aggregate
numeric.command-metadata numeric.special-values
numeric.scale-greater-than-precision
numeric.negative-scale
data.json-parsed data.json-lossless-text
data.binary data.uuid
data.temporal-native data.temporal-lossless
data.timezone
metadata.command-safe
dml.insert-returning dml.update-returning
dml.delete-returning dml.merge-returning
dml.upsert-returning
session.pinned
statement.prepare statement.cancel
statement.stream statement.bulk
execution.bulk-fidelity
transaction transaction.savepoint
transaction.read-only
transaction.isolation.read-uncommitted
transaction.isolation.read-committed
transaction.isolation.repeatable-read
transaction.isolation.serializable
routine.call routine.out
routine.inout routine.result-sets
routine.out-cursor routine.return-value
metadata.identity metadata.generated
metadata.routines metadata.types

execution.prepared, execution.stream, routine.resultsets, routine.return-status 같은 폐기된 alias를 추가하지 마세요.

statementBinding.describe()describeBulk()는 lease 획득 전에 논리 RenderedStatement/RenderedBulk를 검증합니다. Provider와 lease는 동일한 불변 binding adapter identity를 노출해야 합니다. Prepared shape는 논리 result kind, canonical segments, dialect, 순서 있는 hint/direction/output metadata이며 물리 placeholder 표기는 shape를 바꾸지 않습니다.

db.session(callback)은 하나의 물리 provider lease를 고정하고 중첩 session은 재사용합니다. db.tx(callback)은 그 lease를 사용하거나 root lease를 얻으며, 중첩 transaction은 advertised savepoint를 사용합니다. 명시적 transaction option은 고정된 read-uncommitted, read-committed, repeatable-read, serializable isolation과 readOnly만 사용합니다. 잘못된 runtime option은 획득 전에 TypeError / BRAID_TX_OPTIONS_INVALID로 실패하고, 유효하지만 지원하지 않는 option은 UnsupportedFeatureError / BRAID_TX_OPTION_UNSUPPORTED를 사용하며, 중첩 명시 option은 BRAID_TX_OPTIONS_NESTED를 사용합니다.

이미 abort된 AbortSignal은 자신의 reason을 보존합니다. 활성 signal에는 실제 adapter cancellation 경로가 필요하며, 없으면 I/O 전에 UnsupportedFeatureError, feature statement.cancel, BRAID_CANCEL_UNSUPPORTED로 실패합니다. 사용할 수 없는 session 또는 transaction primitive는 각각 BRAID_SESSION_UNSUPPORTED 또는 BRAID_TX_UNSUPPORTED를 사용합니다. Oracle의 guarded oracle.connection-break 조건은 즉시 중단이나 timeout을 보장하지 않는 cooperative 동작입니다. 문서화된 DBMS_SESSION.SLEEP raw probe는 sleep이 끝날 때만 ORA-01013으로 거부될 수 있으며, 어댑터는 settlement까지 물리 lease를 유지합니다.

First-party root는 PostgreSQL, MySQL, MariaDB, SQLite, Oracle, SQL Server입니다. Driver subpath가 protocol과 cleanup을 소유합니다: pg, mysql2, MariaDB Connector/Node.js, node:sqlite, SQLite WASM, D1, node-oracledb Thin, Tedious. Bun은 명시적으로 사용자가 선택하는 dialect: "postgres" | "mysql" | "mariadb" | "sqlite" 하나의 SQL adapter family를 사용하며 connection에서 SQL 의미를 추론하지 않습니다. Bun 1.3.14는 active cancellation을 지원하지 않아 BRAID_CANCEL_UNSUPPORTED를 사용하며 stream/routine carrier도 지원하지 않습니다. result.rows/result.command metadata는 bun-sql.result-kind-metadata 조건에서만 guarded됩니다. MySQL/MariaDB에서는 command가 null이고 affectedRows가 0이므로 빈 SELECT와 영향 행이 0인 DML/DDL은 실행 후에만 BRAID_RESULT_KIND_AMBIGUOUS로 실패할 수 있습니다. Deno는 public driver API가 동작하는 기존 first-party adapter를 재사용하며 Deno 전용 dialect를 만들지 않습니다.

stream, routine, output, hint, bulk, transaction, cancellation 지원이 없으면 명시적인 UnsupportedFeatureError로 실패해야 합니다. SQLBraid는 streaming을 흉내 내려고 paginate하거나 routine carrier를 추측하거나 hint를 무시하거나 숨은 transaction을 만들거나 검증되지 않은 tuple을 승격하지 않습니다. D1의 managed SQLite version은 공개되지 않았으므로 local Worker binding 검사는 version 인증이 아닙니다.

정확한 숫자, JSON/temporal, container 동작은 별도 증거 경계입니다. 정확한 DB integer와 decimal은 canonical string이고 근사 IEEE 값은 number입니다. Profile과 codegen descriptor는 일치해야 합니다. Metadata는 positive open-world 증거이므로 누락된 사실이 SQL invalid를 뜻하지 않습니다. Bun 1.3.14는 PostgreSQL/MySQL/MariaDB에 { bigint: true }, SQLite에 { safeIntegers: true }를 사용합니다. Column metadata가 없으므로 integral 및 integral-approximate Number row는 ambiguous로 거부되고, PostgreSQL decimal은 string입니다. MySQL/MariaDB DECIMAL과 binary 출력은 타입 정보 없는 같은 byte carrier라 거부하며 CAST(... AS CHAR) 또는 HEX(...)를 직접 작성해야 합니다. SQLite native decimal은 지원하지 않습니다. MariaDB/SQLite JSON은 text이며 PostgreSQL/MySQL native JSON은 중첩 숫자가 반올림될 수 있습니다. Bun SQLite의 결과 종류는 bun-sql.sqlite-result-parser 조건에서 guarded입니다. Bun이 서로 다른 따옴표가 섞인 SQL literal을 잘못 분류할 수 있으므로 JSON은 bind하세요. SQLBraid가 SQL을 재작성하지 않습니다.

지원 추가에는 정확한 version/profile tuple, 실제 engine 실행 범위, 기계 판독 target 조건, 새 clean revision이 필요합니다. Release 결정에는 translation freshness, package/export 검사와 immutable release dry-run도 필요합니다. 과거 실행 링크나 설명글만으로는 라벨을 승격할 수 없습니다. 이 페이지는 npm/tag/Pages 발행을 의미하지 않습니다.