diff --git a/CHANGELOG.md b/CHANGELOG.md index ba25d4502..f976e1e3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). + A `:/ready` endpoint is available for checking a correct internal state(the database connection plus the schema cache). 200 OK = ready, 503 = not ready. - #1988, Add the current user to the request log on stdout - @DavidLindbom, @wolfgangwalther - #1991, Add the ability to run without `db-uri` using libpq's PG environment variables to connect. @wolfgangwalther + - #1769, Add the ability to run without `db-schemas`, defaulting to `db-schemas=public`. @wolfgangwalther ### Fixed diff --git a/nix/tools/loadtest.nix b/nix/tools/loadtest.nix index 4cb6a9708..8b7840c46 100644 --- a/nix/tools/loadtest.nix +++ b/nix/tools/loadtest.nix @@ -47,6 +47,7 @@ let '' # previously required settings to make this work with older branches export PGRST_DB_URI="postgresql://" + export PGRST_DB_SCHEMAS="test" export PGRST_DB_CONFIG="false" export PGRST_DB_POOL="1" diff --git a/src/PostgREST/Config.hs b/src/PostgREST/Config.hs index a9675da64..d89389f76 100644 --- a/src/PostgREST/Config.hs +++ b/src/PostgREST/Config.hs @@ -220,9 +220,8 @@ parser optPath env dbSettings = <*> (fromMaybe True <$> optBool "db-prepared-statements") <*> (fmap toQi <$> optWithAlias (optString "db-root-spec") (optString "root-spec")) - <*> (fromList . splitOnCommas <$> reqWithAlias (optValue "db-schemas") - (optValue "db-schema") - "missing key: either db-schemas or db-schema must be set") + <*> (fromList . maybe ["public"] splitOnCommas <$> optWithAlias (optValue "db-schemas") + (optValue "db-schema")) <*> (fromMaybe True <$> optBool "db-config") <*> parseTxEnd "db-tx-end" snd <*> parseTxEnd "db-tx-end" fst @@ -317,15 +316,6 @@ parser optPath env dbSettings = Nothing -> pure [JSPKey "role"] Just rck -> either (fail . show) pure $ pRoleClaimKey rck - reqWithAlias :: C.Parser C.Config (Maybe a) -> C.Parser C.Config (Maybe a) -> [Char] -> C.Parser C.Config a - reqWithAlias orig alias err = - orig >>= \case - Just v -> pure v - Nothing -> - alias >>= \case - Just v -> pure v - Nothing -> fail err - optWithAlias :: C.Parser C.Config (Maybe a) -> C.Parser C.Config (Maybe a) -> C.Parser C.Config (Maybe a) optWithAlias orig alias = orig >>= \case diff --git a/test/io/configs/boolean-numeric.config b/test/io/configs/boolean-numeric.config index 3761c6c3f..c8d9ea3d7 100644 --- a/test/io/configs/boolean-numeric.config +++ b/test/io/configs/boolean-numeric.config @@ -1,4 +1,3 @@ -db-schemas = "required" db-anon-role = "required" db-channel-enabled = "1" diff --git a/test/io/configs/boolean-string.config b/test/io/configs/boolean-string.config index e911a09fe..dfa222e0c 100644 --- a/test/io/configs/boolean-string.config +++ b/test/io/configs/boolean-string.config @@ -1,4 +1,3 @@ -db-schemas = "required" db-anon-role = "required" db-channel-enabled = "true" diff --git a/test/io/configs/defaults.config b/test/io/configs/defaults.config index fa52bb4c0..fa9a3e474 100644 --- a/test/io/configs/defaults.config +++ b/test/io/configs/defaults.config @@ -1,4 +1,3 @@ -db-schemas = "required" db-anon-role = "required" # Not the default, but only works with PG* variables, which are not set db-config = false diff --git a/test/io/configs/expected/boolean-numeric.config b/test/io/configs/expected/boolean-numeric.config index 318484895..94d378e7b 100644 --- a/test/io/configs/expected/boolean-numeric.config +++ b/test/io/configs/expected/boolean-numeric.config @@ -8,7 +8,7 @@ db-pool-timeout = 10 db-pre-request = "" db-prepared-statements = false db-root-spec = "" -db-schemas = "required" +db-schemas = "public" db-config = true db-tx-end = "commit" db-uri = "postgresql://" diff --git a/test/io/configs/expected/boolean-string.config b/test/io/configs/expected/boolean-string.config index 318484895..94d378e7b 100644 --- a/test/io/configs/expected/boolean-string.config +++ b/test/io/configs/expected/boolean-string.config @@ -8,7 +8,7 @@ db-pool-timeout = 10 db-pre-request = "" db-prepared-statements = false db-root-spec = "" -db-schemas = "required" +db-schemas = "public" db-config = true db-tx-end = "commit" db-uri = "postgresql://" diff --git a/test/io/configs/expected/defaults.config b/test/io/configs/expected/defaults.config index dd69a051a..fa192c3d4 100644 --- a/test/io/configs/expected/defaults.config +++ b/test/io/configs/expected/defaults.config @@ -8,7 +8,7 @@ db-pool-timeout = 10 db-pre-request = "" db-prepared-statements = true db-root-spec = "" -db-schemas = "required" +db-schemas = "public" db-config = false db-tx-end = "commit" db-uri = "postgresql://" diff --git a/test/io/configs/expected/types.config b/test/io/configs/expected/types.config index 8b0b89dd0..b1347acd4 100644 --- a/test/io/configs/expected/types.config +++ b/test/io/configs/expected/types.config @@ -8,7 +8,7 @@ db-pool-timeout = 10 db-pre-request = "" db-prepared-statements = true db-root-spec = "" -db-schemas = "required" +db-schemas = "public" db-config = true db-tx-end = "commit" db-uri = "postgresql://" diff --git a/test/io/configs/sigusr2-settings.config b/test/io/configs/sigusr2-settings.config index 1baab06de..b3f842479 100644 --- a/test/io/configs/sigusr2-settings.config +++ b/test/io/configs/sigusr2-settings.config @@ -1,3 +1,4 @@ +# will be replaced in test db-schemas = "public" app.settings.name_var = "John" diff --git a/test/io/configs/types.config b/test/io/configs/types.config index a458e88f3..1719a51cb 100644 --- a/test/io/configs/types.config +++ b/test/io/configs/types.config @@ -1,6 +1,5 @@ # tests how config options fall back with invalid types db-anon-role = "required" -db-schemas = "required" # expects string app.settings.test = false diff --git a/test/io/fixtures.yaml b/test/io/fixtures.yaml index c78e3d583..8f0dfd489 100644 --- a/test/io/fixtures.yaml +++ b/test/io/fixtures.yaml @@ -27,11 +27,6 @@ cli: - name: missing db-anon-role expect: error env: - PGRST_DB_SCHEMAS: required - - name: missing db-schemas - expect: error - env: - PGRST_DB_ANON_ROLE: required # failures: wrong config values - name: invalid server-unix-socket-mode not octal expect: error diff --git a/test/io/test_io.py b/test/io/test_io.py index 182d32613..589e70a25 100644 --- a/test/io/test_io.py +++ b/test/io/test_io.py @@ -92,7 +92,6 @@ def defaultenv(): "PGDATABASE": os.environ["PGDATABASE"], "PGHOST": os.environ["PGHOST"], "PGUSER": os.environ["PGUSER"], - "PGRST_DB_SCHEMAS": "public", "PGRST_DB_ANON_ROLE": os.environ["PGRST_DB_ANON_ROLE"], "PGRST_DB_CONFIG": "false", "PGRST_LOG_LEVEL": "info", @@ -641,9 +640,7 @@ def test_db_schema_reload(tmp_path, defaultenv): configfile = tmp_path / "test.config" configfile.write_text(config) - env = {key: value for key, value in defaultenv.items() if key != "PGRST_DB_SCHEMAS"} - - with run(configfile, env=env) as postgrest: + with run(configfile, env=defaultenv) as postgrest: response = postgrest.session.get("/rpc/get_guc_value?name=search_path") assert response.text == '"public, public"'