1
1
BEGIN ;
2
2
CREATE EXTENSION IF NOT EXISTS pgtap;
3
- do $$
4
- begin
5
- if not exists (select 1 from pg_extension where extname = ' orioledb' ) then
6
- create extension if not exists orioledb;
7
- end if;
8
- end $$;
3
+
4
+ DO $$
5
+ DECLARE
6
+ extension_array text [];
7
+ orioledb_available boolean ;
8
+ BEGIN
9
+ -- Check if orioledb is available
10
+ SELECT EXISTS (
11
+ SELECT 1 FROM pg_available_extensions WHERE name = ' orioledb'
12
+ ) INTO orioledb_available;
13
+
14
+ -- If available, create it and add to the expected extensions list
15
+ IF orioledb_available THEN
16
+ 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
+ ' pgjwt' ,
25
+ ' uuid-ossp' ,
26
+ ' supabase_vault' ,
27
+ ' orioledb'
28
+ ];
29
+ ELSE
30
+ extension_array := ARRAY[
31
+ ' plpgsql' ,
32
+ ' pg_stat_statements' ,
33
+ ' pgsodium' ,
34
+ ' pgtap' ,
35
+ ' pg_graphql' ,
36
+ ' pgcrypto' ,
37
+ ' pgjwt' ,
38
+ ' uuid-ossp' ,
39
+ ' supabase_vault'
40
+ ];
41
+ END IF;
42
+
43
+ -- Set the array as a temporary variable to use in the test
44
+ PERFORM set_config(' myapp.extensions' , array_to_string(extension_array, ' ,' ), false);
45
+ END $$;
9
46
10
47
SELECT plan(8 );
11
48
12
- -- Check installed extensions
13
49
SELECT extensions_are(
14
- ARRAY[
15
- ' plpgsql' ,
16
- ' pg_stat_statements' ,
17
- ' pgsodium' ,
18
- ' pgtap' ,
19
- ' pg_graphql' ,
20
- ' pgcrypto' ,
21
- ' pgjwt' ,
22
- ' uuid-ossp' ,
23
- ' supabase_vault'
24
- ]
50
+ string_to_array(current_setting(' myapp.extensions' ), ' ,' )::text []
25
51
);
26
52
27
53
28
- -- Check schemas exists
29
54
SELECT has_schema(' pg_toast' );
30
55
SELECT has_schema(' pg_catalog' );
31
56
SELECT has_schema(' information_schema' );
32
57
SELECT has_schema(' public' );
33
58
34
- -- Check that service_role can execute certain pgsodium functions
35
59
SELECT function_privs_are(' pgsodium' , ' crypto_aead_det_decrypt' , array[' bytea' , ' bytea' , ' uuid' , ' bytea' ], ' service_role' , array[' EXECUTE' ]);
36
60
SELECT function_privs_are(' pgsodium' , ' crypto_aead_det_encrypt' , array[' bytea' , ' bytea' , ' uuid' , ' bytea' ], ' service_role' , array[' EXECUTE' ]);
37
61
SELECT function_privs_are(' pgsodium' , ' crypto_aead_det_keygen' , array[]::text [], ' service_role' , array[' EXECUTE' ]);
38
62
39
- SELECT * from finish();
40
- ROLLBACK ;
63
+ SELECT * FROM finish();
64
+ ROLLBACK ;
0 commit comments