29.2. Configuring a Connection to an S3 Storage #
To configure this scenario:
Set the
duckdb.unsafe_allow_execution_inside_functionsandduckdb.convert_unsupported_numeric_to_doubleconfiguration parameters totrue.These parameters allow Postgres Pro AXE to work with S3 storages.
Example 29.7.
ALTER SYSTEM SET duckdb.unsafe_allow_execution_inside_functions TO true; SET duckdb.convert_unsupported_numeric_to_double = true;
Reload the Postgres Pro AXE server to apply the updated configuration parameters:
SELECT pg_reload_conf();
The secret stores the credentials for connecting Postgres Pro AXE to the S3 storage.
Example 29.8.
SELECT duckdb.create_simple_secret( type := 'S3', key_id := 'access_key_ID_example', secret := 'simple_secret_example', region := '', url_style := 'path', endpoint := 'hostname:port', validation := '', use_ssl := 'false' );Example 29.9.
SELECT metastore.add_storage('s3_storage_example', 's3://demo/s3_storage_example/','s3://demo/s3_storage_example/tmp/');Ensure that the S3 storage is configured correctly:
Create a heap table and insert the test data into it.
Example 29.10.
CREATE TABLE heap_table_example ( id int4 NULL, "name" text NULL, price numeric(10,2) NULL, created_at timestamp NULL );Insert rows into the heap table using the
INSERTcommand.Example 29.11.
INSERT INTO heap_table_example VALUES (1, 'Item 1', 150.99, '2025-08-09 00:01:01.75'); INSERT INTO heap_table_example VALUES (2, 'Item 2', 300.99, '2025-08-10 00:01:01.75');
Create an analytical table from the heap table.
Example 29.12.
SELECT metastore.add_table('analytical_table_example', 's3_storage_example', 'public.heap_table_example', '');Copy the data from the heap table to the analytical table.
Example 29.13.
SELECT metastore.copy_table('analytical_table_example', 'SELECT * FROM heap_table_example');Postgres Pro AXE places Parquet files into a new subdirectory under the storage directory, named after the snapshot ID. Do not delete such directories.
Create a Postgres Pro view for the analytical table.
Example 29.14.
SELECT metastore.create_view('analytical_table_example');Ensure that the values that you inserted into the heap table can be retrieved from the analytical table.
Example 29.15.
SELECT * FROM analytical_table_example;