5
5
DECLARE
6
6
extension_array text [];
7
7
orioledb_available boolean ;
8
+ pg_version integer ;
8
9
BEGIN
10
+ -- Get PostgreSQL version (as integer, e.g., 15 for PostgreSQL 15.x)
11
+ SELECT current_setting(' server_version_num' )::integer / 10000 INTO pg_version;
12
+
9
13
-- Check if orioledb is available
10
14
SELECT EXISTS (
11
15
SELECT 1 FROM pg_available_extensions WHERE name = ' orioledb'
12
16
) INTO orioledb_available;
13
17
14
- -- If available, create it and add to the expected extensions list
18
+ -- Base extensions list
19
+ extension_array := ARRAY[
20
+ ' plpgsql' ,
21
+ ' pg_stat_statements' ,
22
+ ' pgsodium' ,
23
+ ' pgtap' ,
24
+ ' pg_graphql' ,
25
+ ' pgcrypto' ,
26
+ ' uuid-ossp' ,
27
+ ' supabase_vault'
28
+ ];
29
+
30
+ -- Add pgjwt if PostgreSQL version is 15 or higher
31
+ IF pg_version >= 15 THEN
32
+ extension_array := array_append(extension_array, ' pgjwt' );
33
+ END IF;
34
+
35
+ -- Add orioledb if available
15
36
IF orioledb_available THEN
16
37
CREATE EXTENSION IF NOT EXISTS orioledb;
17
- extension_array := ARRAY[
18
- ' plpgsql' ,
19
- ' pg_stat_statements' ,
20
- ' pgsodium' ,
21
- ' pgtap' ,
22
- ' pg_graphql' ,
23
- ' pgcrypto' ,
24
- ' uuid-ossp' ,
25
- ' supabase_vault' ,
26
- ' orioledb'
27
- ];
28
- ELSE
29
- extension_array := ARRAY[
30
- ' plpgsql' ,
31
- ' pg_stat_statements' ,
32
- ' pgsodium' ,
33
- ' pgtap' ,
34
- ' pg_graphql' ,
35
- ' pgcrypto' ,
36
- ' uuid-ossp' ,
37
- ' supabase_vault'
38
- ];
38
+ extension_array := array_append(extension_array, ' orioledb' );
39
39
END IF;
40
40
41
41
-- Set the array as a temporary variable to use in the test
@@ -48,7 +48,6 @@ SELECT extensions_are(
48
48
string_to_array(current_setting(' myapp.extensions' ), ' ,' )::text []
49
49
);
50
50
51
-
52
51
SELECT has_schema(' pg_toast' );
53
52
SELECT has_schema(' pg_catalog' );
54
53
SELECT has_schema(' information_schema' );
@@ -59,4 +58,4 @@ SELECT function_privs_are('pgsodium', 'crypto_aead_det_encrypt', array['bytea',
59
58
SELECT function_privs_are(' pgsodium' , ' crypto_aead_det_keygen' , array[]::text [], ' service_role' , array[' EXECUTE' ]);
60
59
61
60
SELECT * FROM finish();
62
- ROLLBACK ;
61
+ ROLLBACK ;
0 commit comments