You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
QUERY: select count(*) from tenk1 t
where (exists(select 1 from tenk1 k where k.unique1 = t.unique2) or ten < 0);
RECEIVED ERROR: timeout during Receive
Footnotes
These are tests that we're marking as Successful, however they do not match the expected output in some way. This is due to small differences, such as different wording on the error messages, or the column names being incorrect while the data itself is correct. ↩
Across 8 total test cases, 6 passed and 2 failed, showing generally stable behavior for core SQL execution, malformed statement handling, server bootstrap/default database creation, replication boundary checks, and locale/regex semantics, with sessions remaining healthy after expected compile or syntax errors. The most important findings were two real defects: malformed PostgreSQL bind payloads can trigger a recovered panic (index out of range) instead of a deterministic bind-validation error (high severity), and startup with missing replication slot_name can log a required-field error yet still exit with code 0 (medium severity), creating misleading success signals for automation and operations.
Tests run by Ito
Result
Severity
Type
Description
✅
—
Engine
Plain SELECT returned all 200 fixture rows in order with correct totals.
✅
—
Engine
Malformed SQL returned a syntax error, and the same session immediately handled SELECT 1.
✅
—
Locale
Invalid regex inputs returned compile errors, and the same SQL session remained healthy for follow-up queries.
✅
—
Locale
Locale/collation setup and regex matrix checks preserved expected outputs and error classes for equivalent SQL semantics.
✅
—
Server
First startup created and exposed the default postgres database as expected.
✅
—
Server
Replication boundary behavior matched expectations across nil, partial, and full configs.
⚠️
Engine
The server should return a deterministic bind-validation error for malformed parameter counts, but it instead hits a recovered panic (index out of range [1] with length 1) during bind conversion.
⚠️
Server
The process emits postgres replication slot name must be specified and not empty for replication, but the command still returns exit code 0 instead of failing startup with a non-zero code.
Additional Findings Details
These findings are unrelated to the current changes but were observed during testing.
🟠 Malformed bind payload triggers panic
Severity: High
Description: The server should return a deterministic bind-validation error for malformed parameter counts, but it instead hits a recovered panic (index out of range [1] with length 1) during bind conversion.
Impact: Malformed client bind payloads can trigger panic handling on a core query path, producing unstable error behavior in a high-criticality workflow. While the session may survive, this still creates unsafe request handling and merge risk for production traffic.
Steps to Reproduce:
Connect via PostgreSQL wire protocol and prepare a statement expecting one parameter.
Send a bind payload containing extra parameter values relative to the prepared statement type list.
Observe the server response and run a follow-up SELECT 1 in the same session.
Stub / mock content: No stubs, mocks, or bypasses were applied for this test in the recorded run.
Code Analysis: I reviewed server/doltgres_handler.go and server/connection_handler.go. convertBindParameters iterates over incoming bind values and directly indexes types[i] with no bounds check, so malformed payloads with more values than type descriptors can panic before a deterministic validation error is returned.
🟡 Startup reports replication validation but exits successfully
Severity: Medium
Description: The process emits postgres replication slot name must be specified and not empty for replication, but the command still returns exit code 0 instead of failing startup with a non-zero code.
Impact: Automation and operators can misclassify an invalid replication configuration as a successful startup. This weakens startup safety checks for a core server workflow and can hide misconfiguration until later failures.
Steps to Reproduce:
Provide postgres_replication config with database, user, password, and port but omit slot_name.
Start doltgres with this configuration.
Observe the missing slot_name validation message and then check that the command exits with status 0.
Stub / mock content: No stubs, mocks, or bypasses were applied for this test in the recorded run.
Code Analysis: I inspected server/server.go and confirmed replication validation occurs in startReplication, which returns an error for missing slot_name, and runServer propagates that error after server startup work has already run. This aligns with runtime evidence showing the validation message appears while the command still reports success.
Tip
Reply with @itoqa to send us feedback on this test run.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
☕ An Automated Dependency Version Bump PR 👑
Initial Changes
The changes contained in this PR were produced by `go get`ing the dependency.
```bash
go get github.com/dolthub/[dependency]/go@[commit]
```