Skip to content

refactor(server): extract session database metadata into server/sessionmeta#491

Merged
fuziontech merged 1 commit intomainfrom
feature/server-sessionmeta
May 1, 2026
Merged

refactor(server): extract session database metadata into server/sessionmeta#491
fuziontech merged 1 commit intomainfrom
feature/server-sessionmeta

Conversation

@fuziontech
Copy link
Copy Markdown
Member

Summary

Carves the session-local catalog/metadata override helpers out of server/ into a new server/sessionmeta subpackage with zero duckdb-go dependency.

The helpers install per-session DuckDB views/macros that make current_database, pg_database, and the various information_schema_*_compat views reflect the client-visible database name on the PG wire — used by both the standalone server's clientConn and the control plane's session bring-up.

Symbols moved from server/session_database_metadata.go to server/sessionmeta/sessionmeta.go:

  • InitSessionDatabaseMetadata (exported)
  • HasAttachedCatalog (was private hasAttachedCatalog; now exported)
  • All buildSession* / sessionColumn* SQL builder helpers (private)
  • quoteSQLStringLiteral (private)

The QueryExecutor parameter is now sqlcore.QueryExecutor (the interface moved in PR #488) instead of server.QueryExecutor.

Backward compatibility

server/exports.go keeps re-export vars for the externally-used symbols, so existing server.HasAttachedCatalog / server.InitSessionDatabaseMetadata callers (control plane, etc.) compile unchanged. Internal callers in server/conn.go and controlplane/control.go now use sessionmeta.X directly.

Test plan

  • go build ./... clean
  • go build -tags kubernetes ./... clean
  • go test -short ./server/... — green except the pre-existing server/tlscert hang on real ACME calls (unrelated)
  • go list -deps ./server/sessionmeta | grep duckdb-go returns empty

🤖 Generated with Claude Code

…onmeta

Carves the session-local catalog/metadata override helpers out of
server/ into a new server/sessionmeta subpackage with no dependency on
github.com/duckdb/duckdb-go.

The helpers install per-session DuckDB views and macros that make
current_database, pg_database, and information_schema_*_compat reflect
the client-visible database name on the PG wire — used by both the
standalone server's clientConn and the control plane's session bring-up.

Symbols moved (from server/session_database_metadata.go to
server/sessionmeta/sessionmeta.go):
  - InitSessionDatabaseMetadata (exported)
  - HasAttachedCatalog (was private hasAttachedCatalog; now exported)
  - All the buildSession* / sessionColumn* SQL builder helpers (private)
  - quoteSQLStringLiteral (private)

Type signature change: the QueryExecutor parameter is now
sqlcore.QueryExecutor (the interface moved to server/sqlcore in PR #488)
instead of server.QueryExecutor.

Backward compatibility preserved via re-export `var`s in
server/exports.go:

  var (
      HasAttachedCatalog          = sessionmeta.HasAttachedCatalog
      InitSessionDatabaseMetadata = sessionmeta.InitSessionDatabaseMetadata
  )

Internal callers updated:
  - server/conn.go now calls sessionmeta.InitSessionDatabaseMetadata and
    sessionmeta.HasAttachedCatalog directly
  - controlplane/control.go switches from server.X to sessionmeta.X
  - server/session_database_metadata{,_remote}_test.go keep their
    duckdb-go-using mocks but call sessionmeta.X for the moved symbols

  go list -deps ./server/sessionmeta | grep duckdb-go   # empty

Verified:
  - go build ./... clean
  - go build -tags kubernetes ./... clean
  - go test -short ./server/... — green except the pre-existing
    server/tlscert hang on real ACME calls (unrelated)
  - go list -deps ./server/sessionmeta | grep duckdb-go is empty

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@fuziontech fuziontech enabled auto-merge (squash) May 1, 2026 17:03
@fuziontech fuziontech merged commit cd20850 into main May 1, 2026
21 checks passed
@fuziontech fuziontech deleted the feature/server-sessionmeta branch May 1, 2026 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant