Skip to content

0.54.8

Choose a tag to compare

@github-actions github-actions released this 10 Jan 01:32

Merged PRs

doltgresql

  • 2172: drop schema support
    Fixes #2159
  • 2158: Added bit and bit varying types
    Fixes #2149
  • 2152: Bug fix: allow bpchar(N) casting
    Fixes: #2145
  • 2151: Correctly support empty messages
    Fixes #2147
  • 2139: #1863: validate database exists before CREATE SCHEMA

    Summary

    Adds a ValidateCreateSchema analyzer rule to ensure CREATE SCHEMA fails that appropriately when executed against a non-existent or invalid database context.
    • Adds analyzer rule that checks if the current database has a valid root before allowing CREATE SCHEMA to proceed
    • Ensures PostgreSQL-compliant behavior where schemas must be created within an existing database
    • Adds integration and bats tests

    Note

    I wasn't 100% sure if adding an analyzer rule was the right approach here, but it seemed like the cleanest way to validate database context before schema creation. The rule follows the same pattern as existing validation rules like ValidateCreateTable.
    The connection-level validation (rejecting connections to non-existent databases) already handles most cases, but this analyzer rule acts as an additional safety net for edge cases where a query might run with an invalid database context (also not sure how realistic this is 😕 ).
    Open to feedback on whether there's a better approach!

    Testing

    • Integrationt: TestCreateSchemaWithNonExistentDatabase
    • Bats: bats --filter "non-existent database|CREATE SCHEMA works" testing/bats/doltgres.bats
    • Existing schema tests pass: go test ./testing/go/... -run TestSchemas -v
      Closes: #1863
  • 2138: #1361: unskip dolt_clean zero-argument tests

    Summary

    • Unskips the SELECT DOLT_CLEAN() zero-argument smoke tests that were added in #1373
    • I believe the underlying issue was resolved in #1763 which added Function0 registration for all Dolt procedures
    • Reorders test assertions so DOLT_CLEAN('t1') runs before DOLT_CLEAN() to properly test both
      Note: #1373 also added skipped tests in prepared_statement_test.go, but those were already unskipped in commit 62569c7.

    Tests to verify

    • Run go test ./testing/go/... -run "TestDoltClean" to verify existing dolt_clean tests pass
    • Run go test ./testing/go/... -run "TestDoltFunctionSmokeTests/smoke_test_select_dolt_clean" to verify unskipped smoke tests pass
      Fixes #1361
  • 2137: #1868: remove outdated skip list entries for OR index tests

    Summary

    Remove outdated skip list entries for tests that were previously panicking due to an OR condition index lookup bug. The underlying issue was fixed in PR #2123.

    What was the problem?

    Issue #1868 reported a panic when executing queries like:
    SELECT * FROM test WHERE pk1 = 1 OR i = 1;
    where the first condition matches an index (primary key) and the second doesn't.

    What fixed it?

    I believe PR #2123 fixed this issue. In the PR it implemented a LogicTreeWalker for DoltgreSQL that properly handles doltgres-specific expression nodes when analyzing filters. This allows the query optimizer to correctly handle OR expressions with mixed indexed/non-indexed columns.

    Changes in this PR

    Removed 3 entries from the engine test skip list:
    • Complex Filter Index Scan #2
    • Complex Filter Index Scan #3
    • complicated range tree
      All three tests now pass.

    Testing

    • Verified all three previously-skipped tests now pass
    • Verified the exact scenario from issue #1868 works without panicking
      Fixes #1868
  • 2136: #1057 allow unquoted STATUS keyword in DESCRIBE statements

    IMPORTANT

    Below is the summary of the cause of the bug in #1057 and the simple fix, but I want to clarify this is the desired fix.

    Summary

    • Fixes DESCRIBE dolt.status failing with "at or near 'status': syntax error"
    • Adds STATUS to the simple_ident grammar rule in sql.y, following the pattern established for PUBLIC in PR #828
    • Enables the previously skipped test for this functionality

    Background

    The simple_ident rule is used for parsing table name components in DESCRIBE statements. It only allowed IDENT tokens and the explicitly added PUBLIC keyword. Since STATUS is an unreserved keyword (not a regular identifier), the parser rejected it unless quoted.
    Before: DESCRIBE dolt.status fails, DESCRIBE dolt."status" works
    After: Both work

    Test Plan

    DESCRIBE dolt.status test now passes (TestUserSpaceDoltTables/dolt_status)
    Fixes #1057
  • 2126: Add tests for SHOW TABLES bug
    Adds a test for a bug in SHOW TABLES behavior that caused sequences to be included in returned results.
    Depends on: dolthub/dolt#10220
    Fixes: #1743

Closed Issues

  • 2149: bit type is not supported
  • 2159: Please complete the implementation for dropping a schema in Doltgres
  • 2099: [RFC] Exploring feasibility of Dolt or Doltgres as backend fo Matrix homeserver
  • 1743: SHOW TABLES should not show sequences
  • 2145: PostgreSQL compat: select '1'::bpchar(1) fails
  • 2147: PostgreSQL compatibility: status field for empty query should be EMPTY
  • 1359: Error adding a column with a check constraint to table with data
  • 1361: dolt_clean procedure does not work if no arguments provided
  • 1863: Handle PostgreSQL CREATE SCHEMA error when no database is selected
  • 1057: describe dolt.status doesn't work
  • 1868: Panic on SELECT ... WHERE ... OR
  • 2127: JSONB SELECT Panic for large objects ~2KB