go-sql-server-driver tests (Doltgres port)
These tests are ported from Dolt's
integration-tests/go-sql-server-driver. They exercise a real doltgres
server process over the Postgres wire protocol, driven either by the YAML test
definition format (tests/*.yaml, run via testdef.go) or by standalone Go
tests that use the driver package directly.
Running
The tests locate the doltgres binary via the DOLTGRES_BIN_PATH environment
variable, falling back to doltgres on the PATH.
DOLTGRES_BIN_PATH=/path/to/doltgres go test ./...
Differences from the Dolt suite
The port preserves the structure and intent of the Dolt tests, translating only what the Postgres dialect and wire protocol, and the doltgres binary, require:
-
Server CLI.
doltgreshas a minimal CLI (--config,--data-dir) and no-P/-l/--max-connectionsflags. The listener port can only be set via the config file, so the test framework (MakeServerintestdef.go) generates/merges a config file that injects the dynamic port, host, and a unique unix socket. Ported YAML expresses server settings via a config file (referenced with--config) rather than via Dolt CLI flags. -
Data-dir model. Doltgres serves databases out of a data-dir; each "repo" is a database subdirectory. The server runs from the store (data-dir) with
--data-dir=., andwith_filesare written relative to the store directory. Databases are initialized by briefly running a server (there is nodolt initequivalent). -
Wire protocol. Connections use the pgx stdlib driver. Default user is
postgres, passwordpassword. -
SQL dialect. MySQL syntax is translated to Postgres (e.g.
AUTO_INCREMENT->SERIAL/GENERATED, backtick identifiers -> unquoted or double-quoted,int/varchar(n)are fine,select ... from dual->select ...). -
DOLT procedures. Dolt's
CALL DOLT_*(...)/SELECT DOLT_*()becomeSELECT dolt_*(...)in Doltgres. Result columns default to the function name (e.g.dolt_add), and the value is rendered as a Postgres array, e.g.{0}. -
Result columns. Postgres lowercases unquoted identifiers and uses the expression text / alias for computed columns; expected
columns:androws:are adjusted accordingly. Prefer explicitASaliases. -
Cluster / remotesapi replication. Doltgres does not yet implement Dolt's cluster replication or the remotes API. Config structs for these are mirrored into doltgres so the config files parse, but the tests that depend on the feature are marked
skip:with a reason until the feature lands.
When a ported test does not pass yet (missing feature or behavioral
difference), it is marked with skip: (YAML) or t.Skip(...) (Go) with a short
reason, per the porting instructions.