test: move prepared statements config related tests to spec tests

Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com>
This commit is contained in:
Taimoor Zaeem
2026-07-07 23:32:40 +05:00
parent 44edf962d8
commit c03ac09dbb
7 changed files with 47 additions and 42 deletions
+1
View File
@@ -260,6 +260,7 @@ test-suite spec
Feature.Query.Preferences.HandlingSpec Feature.Query.Preferences.HandlingSpec
Feature.Query.Preferences.MaxAffectedSpec Feature.Query.Preferences.MaxAffectedSpec
Feature.Query.Preferences.TimezoneSpec Feature.Query.Preferences.TimezoneSpec
Feature.Query.PreparedStatementsSpec
Feature.Query.QueryLimitedSpec Feature.Query.QueryLimitedSpec
Feature.Query.QuerySpec Feature.Query.QuerySpec
Feature.Query.RangeSpec Feature.Query.RangeSpec
@@ -512,23 +512,6 @@
pdSchema: public pdSchema: public
pdVolatility: Volatile pdVolatility: Volatile
- - qiName: uses_prepared_statements
qiSchema: public
- - pdDescription: null
pdFuncSettings: []
pdHasVariadic: false
pdName: uses_prepared_statements
pdParams: []
pdReturnType:
contents:
contents:
qiName: bool
qiSchema: pg_catalog
tag: Scalar
tag: Single
pdSchema: public
pdVolatility: Volatile
- - qiName: repeatable_read_isolation_level - - qiName: repeatable_read_isolation_level
qiSchema: public qiSchema: public
- - pdDescription: null - - pdDescription: null
-4
View File
@@ -54,10 +54,6 @@ create function v1.get_guc_value(name text) returns text as $$
select nullif(current_setting(name), '')::text; select nullif(current_setting(name), '')::text;
$$ language sql; $$ language sql;
create function uses_prepared_statements() returns bool as $$
select count(name) > 0 from pg_catalog.pg_prepared_statements
$$ language sql;
create function change_max_rows_config(val int, notify bool default false) returns void as $_$ create function change_max_rows_config(val int, notify bool default false) returns void as $_$
begin begin
execute format($$ execute format($$
-21
View File
@@ -420,27 +420,6 @@ def test_notify_do_nothing(defaultenv):
assert output == [] assert output == []
def test_db_prepared_statements_enable(defaultenv):
"Should use prepared statements when the setting is enabled."
with run(env=defaultenv) as postgrest:
response = postgrest.session.post("/rpc/uses_prepared_statements")
assert response.text == "true"
def test_db_prepared_statements_disable(defaultenv):
"Should not use any prepared statements when the setting is disabled."
env = {
**defaultenv,
"PGRST_DB_PREPARED_STATEMENTS": "false",
}
with run(env=env) as postgrest:
response = postgrest.session.post("/rpc/uses_prepared_statements")
assert response.text == "false"
def test_statement_timeout(defaultenv, metapostgrest): def test_statement_timeout(defaultenv, metapostgrest):
"Statement timeout times out slow statements" "Statement timeout times out slow statements"
@@ -0,0 +1,33 @@
module Feature.Query.PreparedStatementsSpec where
import Network.HTTP.Types
import Test.Hspec hiding (pendingWith)
import Test.Hspec.Wai
import Text.Heredoc
import PostgREST.Config (AppConfig (..))
import Protolude hiding (get)
import SpecHelper
spec :: SpecWithConfig
spec withConfig = do
withConfig baseCfg { configDbPreparedStatements = True } $
it "should use prepared statements when the setting is enabled" $
request methodPost "/rpc/uses_prepared_statements"
[] ""
`shouldRespondWith`
[str|true|]
{ matchStatus = 200 }
withConfig baseCfg { configDbPreparedStatements = False } $
it "should not use any prepared statements when the setting is disabled" $ do
request methodGet "/never_prepared"
[] ""
`shouldRespondWith` 200
request methodPost "/rpc/never_uses_prepared_statements"
[] ""
`shouldRespondWith`
[str|true|]
{ matchStatus = 200 }
+2
View File
@@ -58,6 +58,7 @@ import qualified Feature.Query.PostGISSpec
import qualified Feature.Query.Preferences.HandlingSpec import qualified Feature.Query.Preferences.HandlingSpec
import qualified Feature.Query.Preferences.MaxAffectedSpec import qualified Feature.Query.Preferences.MaxAffectedSpec
import qualified Feature.Query.Preferences.TimezoneSpec import qualified Feature.Query.Preferences.TimezoneSpec
import qualified Feature.Query.PreparedStatementsSpec
import qualified Feature.Query.QueryLimitedSpec import qualified Feature.Query.QueryLimitedSpec
import qualified Feature.Query.QuerySpec import qualified Feature.Query.QuerySpec
import qualified Feature.Query.RangeSpec import qualified Feature.Query.RangeSpec
@@ -148,6 +149,7 @@ main = do
, ("Feature.Query.Preferences.HandlingSpec" , Feature.Query.Preferences.HandlingSpec.spec) , ("Feature.Query.Preferences.HandlingSpec" , Feature.Query.Preferences.HandlingSpec.spec)
, ("Feature.Query.Preferences.MaxAffectedSpec" , Feature.Query.Preferences.MaxAffectedSpec.spec) , ("Feature.Query.Preferences.MaxAffectedSpec" , Feature.Query.Preferences.MaxAffectedSpec.spec)
, ("Feature.Query.Preferences.TimezoneSpec.enabledSpec", Feature.Query.Preferences.TimezoneSpec.enabledSpec) , ("Feature.Query.Preferences.TimezoneSpec.enabledSpec", Feature.Query.Preferences.TimezoneSpec.enabledSpec)
, ("Feature.Query.PreparedStatementsSpec.spec" , Feature.Query.PreparedStatementsSpec.spec)
, ("Feature.Query.QueryLimitedSpec" , Feature.Query.QueryLimitedSpec.spec) , ("Feature.Query.QueryLimitedSpec" , Feature.Query.QueryLimitedSpec.spec)
, ("Feature.Query.QuerySpec" , Feature.Query.QuerySpec.spec actualPgVersion) , ("Feature.Query.QuerySpec" , Feature.Query.QuerySpec.spec actualPgVersion)
, ("Feature.Query.RangeSpec" , Feature.Query.RangeSpec.spec) , ("Feature.Query.RangeSpec" , Feature.Query.RangeSpec.spec)
+11
View File
@@ -3881,3 +3881,14 @@ $$ language plpgsql;
create or replace function "true"() returns boolean as $_$ create or replace function "true"() returns boolean as $_$
select true; select true;
$_$ language sql; $_$ language sql;
create function uses_prepared_statements() returns bool as $$
select count(*) > 0 from pg_catalog.pg_prepared_statements;
$$ language sql;
create table never_prepared (id int);
create function never_uses_prepared_statements() returns bool as $$
select count(*) = 0 from pg_catalog.pg_prepared_statements
where statement ilike '%never_prepared%';
$$ language sql;