Redshift Research Project

Blog

2023-05-01

Redshift Internal System Table Access Control Mechanism

Yesterday I began upgrading the System Table Tracker to show whether or not an object (table, view, function) is accessible to rdsdb only, or accessible to admin users as well.

It seems to me now from this work that Redshift has an access control mechanism, in addition to the usual Postgres-type privileges based mechanism, which is used to control access to objects owned by rdsdb.

First, let’s have a look at the ACL list for all tables in pg_catalog (1141 rows - just scroll down).

 schema_name |                  table_name                  |               acl               
-------------+----------------------------------------------+---------------------------------
 pg_catalog  | padb_config_harvest                          | 
 pg_catalog  | pg_aggregate                                 | {=r/rdsdb}
 pg_catalog  | pg_am                                        | {=r/rdsdb}
 pg_catalog  | pg_amop                                      | {=r/rdsdb}
 pg_catalog  | pg_amproc                                    | {=r/rdsdb}
 pg_catalog  | pg_attrdef                                   | {=r/rdsdb}
 pg_catalog  | pg_attrdef_journal                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_attribute                                 | {=r/rdsdb}
 pg_catalog  | pg_attribute_acl                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_attribute_journal                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_auto_copy_history                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_auto_copy_job                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_bar_ddllog                                | {=r/rdsdb}
 pg_catalog  | pg_bar_repos                                 | {=r/rdsdb}
 pg_catalog  | pg_bar_state                                 | {=r/rdsdb}
 pg_catalog  | pg_cast                                      | {=r/rdsdb}
 pg_catalog  | pg_catalog_rebuilds                          | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_class                                     | {=r/rdsdb}
 pg_catalog  | pg_class_extended                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_class_extended_journal                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_class_journal                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_class_stage                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_conf                                      | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_constraint                                | {=r/rdsdb}
 pg_catalog  | pg_constraint_journal                        | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_conversion                                | {=r/rdsdb}
 pg_catalog  | pg_database                                  | {=r/rdsdb}
 pg_catalog  | pg_database_extended                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_datashare                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_datashare_consumers                       | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_datashare_objects                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_default_acl                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_default_permission                        | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_depend                                    | {=r/rdsdb}
 pg_catalog  | pg_depend_journal                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_description                               | {=r/rdsdb}
 pg_catalog  | pg_external_database                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_external_object                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_external_schema                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_group                                     | {=r/rdsdb}
 pg_catalog  | pg_group_extended                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_highwatermark                             | {=r/rdsdb}
 pg_catalog  | pg_iam_permission                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_identity                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_identity_provider                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_index                                     | {=r/rdsdb}
 pg_catalog  | pg_inherits                                  | {=r/rdsdb}
 pg_catalog  | pg_integration                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_language                                  | {=r/rdsdb}
 pg_catalog  | pg_largeobject                               | {=r/rdsdb}
 pg_catalog  | pg_library                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_listener                                  | {=r/rdsdb}
 pg_catalog  | pg_ml_model                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_namespace                                 | {=r/rdsdb}
 pg_catalog  | pg_namespace_extended                        | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_opclass                                   | {=r/rdsdb}
 pg_catalog  | pg_operator                                  | {=r/rdsdb}
 pg_catalog  | pg_permission                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_permission_mask                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_permission_policy                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_permission_roles                          | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_permission_users                          | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_policy                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_policy_impl                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_policy_mask                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_proc                                      | {=r/rdsdb}
 pg_catalog  | pg_proc_extended                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_resize                                    | {=r/rdsdb}
 pg_catalog  | pg_rewrite                                   | {=r/rdsdb}
 pg_catalog  | pg_role                                      | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_role_chain                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_role_permission                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_role_users                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_shadow                                    | {rdsdb=arwdRxtD/rdsdb}
 pg_catalog  | pg_shadow_extended                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_shdepend                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_statistic                                 | {rdsdb=arwdRxtD/rdsdb}
 pg_catalog  | pg_statistic_indicator                       | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_statistic_journal                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_statistic_multicol                        | {=r/rdsdb}
 pg_catalog  | pg_tablespace                                | {=r/rdsdb}
 pg_catalog  | pg_test                                      | {=r/rdsdb}
 pg_catalog  | pg_transaction                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_trigger                                   | {=r/rdsdb}
 pg_catalog  | pg_type                                      | {=r/rdsdb}
 pg_catalog  | pg_udf                                       | {=r/rdsdb}
 pg_catalog  | pg_unique_identity                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_user_permission                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | pg_user_roles                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_abort_idle                              | 
 pg_catalog  | stcs_aggr                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_aggr_distinct                           | 
 pg_catalog  | stcs_alert_event_log                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_alert_messages                          | 
 pg_catalog  | stcs_alter_column_encode_events              | 
 pg_catalog  | stcs_alter_column_events                     | 
 pg_catalog  | stcs_alter_dist_catalog_change_events        | 
 pg_catalog  | stcs_alter_dist_sort                         | 
 pg_catalog  | stcs_alter_sortkey_events                    | 
 pg_catalog  | stcs_analyze                                 | 
 pg_catalog  | stcs_analyze_compression                     | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_aqua_pushdown                           | 
 pg_catalog  | stcs_aqua_requests                           | 
 pg_catalog  | stcs_arcadia_billing_log                     | 
 pg_catalog  | stcs_arcadia_billing_ris_reports             | 
 pg_catalog  | stcs_arcadia_billing_xact_log                | 
 pg_catalog  | stcs_arcadia_concurrency_scaling_usage       | 
 pg_catalog  | stcs_arcadia_concurrency_scaling_usage_error | 
 pg_catalog  | stcs_arcadia_main_usage                      | 
 pg_catalog  | stcs_arcadia_main_usage_error                | 
 pg_catalog  | stcs_auto_alter_worker_event                 | 
 pg_catalog  | stcs_auto_dispatcher_wlm_occupancy           | 
 pg_catalog  | stcs_auto_maintenance                        | 
 pg_catalog  | stcs_auto_maintenance_worker                 | 
 pg_catalog  | stcs_auto_task_events                        | 
 pg_catalog  | stcs_auto_worker_levels                      | 
 pg_catalog  | stcs_autovacuum_detail                       | 
 pg_catalog  | stcs_autovacuum_skip_reason                  | 
 pg_catalog  | stcs_awsclient_error                         | 
 pg_catalog  | stcs_background_monitor                      | 
 pg_catalog  | stcs_background_tasks                        | 
 pg_catalog  | stcs_backtrace                               | 
 pg_catalog  | stcs_backup_compute                          | 
 pg_catalog  | stcs_backup_leader                           | 
 pg_catalog  | stcs_bcast                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_bkg_compile_info                        | 
 pg_catalog  | stcs_blf_efficiency                          | 
 pg_catalog  | stcs_block_access_errors                     | 
 pg_catalog  | stcs_block_integrity_error                   | 
 pg_catalog  | stcs_block_io_metrics                        | 
 pg_catalog  | stcs_block_needs_recovery                    | 
 pg_catalog  | stcs_block_pins                              | 
 pg_catalog  | stcs_block_priority_based_rereplication      | 
 pg_catalog  | stcs_blocklist                               | 
 pg_catalog  | stcs_bootstrap                               | 
 pg_catalog  | stcs_burst_async_mark                        | 
 pg_catalog  | stcs_burst_billing_ris_reports               | 
 pg_catalog  | stcs_burst_connection                        | 
 pg_catalog  | stcs_burst_id_col_highwatermark              | 
 pg_catalog  | stcs_burst_manager_personalization           | 
 pg_catalog  | stcs_burst_manager_refresh                   | 
 pg_catalog  | stcs_burst_prepare                           | 
 pg_catalog  | stcs_burst_query_execution                   | 
 pg_catalog  | stcs_burst_refresh                           | 
 pg_catalog  | stcs_burst_service_client                    | 
 pg_catalog  | stcs_burst_write_block_header_trace          | 
 pg_catalog  | stcs_burst_write_exec                        | 
 pg_catalog  | stcs_burst_write_query_event                 | 
 pg_catalog  | stcs_bytedict_stats                          | 
 pg_catalog  | stcs_cache_policy_stats                      | 
 pg_catalog  | stcs_catalog_bloat                           | 
 pg_catalog  | stcs_catalog_bufmgr_stats                    | 
 pg_catalog  | stcs_catalog_rebuild_info                    | 
 pg_catalog  | stcs_catalog_rebuild_worker                  | 
 pg_catalog  | stcs_catalog_scan_metrics                    | 
 pg_catalog  | stcs_cdc_checkpoints                         | 
 pg_catalog  | stcs_cdc_connection                          | 
 pg_catalog  | stcs_clear_reps                              | 
 pg_catalog  | stcs_client_write_timings                    | 
 pg_catalog  | stcs_cluster_blocks_stats                    | 
 pg_catalog  | stcs_cmd_requires_top_xact                   | 
 pg_catalog  | stcs_codegen                                 | 
 pg_catalog  | stcs_column_access_metrics                   | 
 pg_catalog  | stcs_column_errors                           | 
 pg_catalog  | stcs_column_stats                            | 
 pg_catalog  | stcs_comm_capture                            | 
 pg_catalog  | stcs_comm_diag                               | 
 pg_catalog  | stcs_comm_diag_errors                        | 
 pg_catalog  | stcs_comm_excess                             | 
 pg_catalog  | stcs_comm_integrity_error                    | 
 pg_catalog  | stcs_comm_pkt_latency                        | 
 pg_catalog  | stcs_comm_pkt_oob_count                      | 
 pg_catalog  | stcs_comm_pkt_sent_count                     | 
 pg_catalog  | stcs_comm_rexmit                             | 
 pg_catalog  | stcs_comm_rexmit_histogram                   | 
 pg_catalog  | stcs_command_result                          | 
 pg_catalog  | stcs_command_start                           | 
 pg_catalog  | stcs_commit_checkpoint                       | 
 pg_catalog  | stcs_commit_internal_stats                   | 
 pg_catalog  | stcs_commit_regions                          | 
 pg_catalog  | stcs_commit_stats                            | 
 pg_catalog  | stcs_committed_txn                           | 
 pg_catalog  | stcs_compile_info                            | 
 pg_catalog  | stcs_compile_print                           | 
 pg_catalog  | stcs_compile_service                         | 
 pg_catalog  | stcs_complyze                                | 
 pg_catalog  | stcs_concurrency_scaling_query_mapping       | 
 pg_catalog  | stcs_concurrency_scaling_usage               | 
 pg_catalog  | stcs_concurrency_scaling_usage_error         | 
 pg_catalog  | stcs_config                                  | 
 pg_catalog  | stcs_config_chooser                          | 
 pg_catalog  | stcs_config_history                          | 
 pg_catalog  | stcs_connection_error_log                    | 
 pg_catalog  | stcs_connection_log                          | 
 pg_catalog  | stcs_connection_queue_error_log              | 
 pg_catalog  | stcs_consistency                             | 
 pg_catalog  | stcs_core_stat                               | 
 pg_catalog  | stcs_cost_control_updates                    | 
 pg_catalog  | stcs_cqi_metrics                             | 
 pg_catalog  | stcs_cqilog                                  | 
 pg_catalog  | stcs_create_replication                      | 
 pg_catalog  | stcs_dag_cleanup                             | 
 pg_catalog  | stcs_datashare_changes_consumer              | 
 pg_catalog  | stcs_datashare_changes_producer              | 
 pg_catalog  | stcs_datashare_dsms                          | 
 pg_catalog  | stcs_datashare_query_info                    | 
 pg_catalog  | stcs_datashare_request_consumer              | 
 pg_catalog  | stcs_datashare_request_producer              | 
 pg_catalog  | stcs_datasharing_log                         | 
 pg_catalog  | stcs_db_isolation_level                      | 
 pg_catalog  | stcs_ddltext                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_dead_tuples_stats                       | 
 pg_catalog  | stcs_default_iam_usage                       | 
 pg_catalog  | stcs_delete                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_delete_tag_throttle                     | 
 pg_catalog  | stcs_dirty_table_metadata                    | 
 pg_catalog  | stcs_disk_cache_megablock_stats              | 
 pg_catalog  | stcs_disk_cache_stats                        | 
 pg_catalog  | stcs_disk_cache_write                        | 
 pg_catalog  | stcs_disk_extent_splits                      | 
 pg_catalog  | stcs_disk_failures                           | 
 pg_catalog  | stcs_disk_full_diag                          | 
 pg_catalog  | stcs_disk_speeds                             | 
 pg_catalog  | stcs_disk_topology                           | 
 pg_catalog  | stcs_diskman_query_block_read_stats          | 
 pg_catalog  | stcs_disks_blocks_stats                      | 
 pg_catalog  | stcs_dist                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_doryc_log                               | 
 pg_catalog  | stcs_dropped_replication                     | 
 pg_catalog  | stcs_dynamodb_error                          | 
 pg_catalog  | stcs_dynamodb_restore                        | 
 pg_catalog  | stcs_epsilon_metadata_events                 | 
 pg_catalog  | stcs_error                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_event_trace                             | 
 pg_catalog  | stcs_exec_state                              | 
 pg_catalog  | stcs_executor_steps                          | 
 pg_catalog  | stcs_explain                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_external_catalog_calls                  | 
 pg_catalog  | stcs_external_query_detail_base              | 
 pg_catalog  | stcs_fabric_stats                            | 
 pg_catalog  | stcs_federated_calls                         | 
 pg_catalog  | stcs_federated_query                         | 
 pg_catalog  | stcs_federated_trace                         | 
 pg_catalog  | stcs_fetchers                                | 
 pg_catalog  | stcs_file_scan                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_freed_disk_addrs                        | 
 pg_catalog  | stcs_function_column_linker                  | 
 pg_catalog  | stcs_ghost_buffer_stats                      | 
 pg_catalog  | stcs_ght_hash_flatten                        | 
 pg_catalog  | stcs_ght_hash_partitions                     | 
 pg_catalog  | stcs_grouping_sets                           | 
 pg_catalog  | stcs_guc                                     | 
 pg_catalog  | stcs_guid_based_cache_policy_stats           | 
 pg_catalog  | stcs_guid_cache_metrics                      | 
 pg_catalog  | stcs_hash                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_hash_partitions                         | 
 pg_catalog  | stcs_hashjoin                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_hashjoin_partitions                     | 
 pg_catalog  | stcs_hdr_integrity_error                     | 
 pg_catalog  | stcs_hllsketch_column_linker                 | 
 pg_catalog  | stcs_hllsketch_function                      | 
 pg_catalog  | stcs_hllsketch_query                         | 
 pg_catalog  | stcs_hot_tables_qpd_stats                    | 
 pg_catalog  | stcs_inc_commit_stats_instrumentation        | 
 pg_catalog  | stcs_incremental_resize_state                | 
 pg_catalog  | stcs_inflight                                | 
 pg_catalog  | stcs_insert                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_integration_log                         | 
 pg_catalog  | stcs_internal_query_details                  | 
 pg_catalog  | stcs_invalid_replication                     | 
 pg_catalog  | stcs_invariant                               | 
 pg_catalog  | stcs_io_error                                | 
 pg_catalog  | stcs_io_iscsi_monitor                        | 
 pg_catalog  | stcs_io_perf                                 | 
 pg_catalog  | stcs_io_stat                                 | 
 pg_catalog  | stcs_kafka_scan_errors                       | 
 pg_catalog  | stcs_kafka_scan_states                       | 
 pg_catalog  | stcs_kinesis_outbound_requests               | 
 pg_catalog  | stcs_kinesis_scan_errors                     | 
 pg_catalog  | stcs_kinesis_scan_states                     | 
 pg_catalog  | stcs_lambda_client                           | 
 pg_catalog  | stcs_lambda_execution_logs                   | 
 pg_catalog  | stcs_lambda_invocation_error                 | 
 pg_catalog  | stcs_lbc_events                              | 
 pg_catalog  | stcs_lbc_replay_stats                        | 
 pg_catalog  | stcs_leader_control                          | 
 pg_catalog  | stcs_leader_snapshot                         | 
 pg_catalog  | stcs_limit                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_load_commits                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_load_error_info                         | 
 pg_catalog  | stcs_load_errors                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_load_history_base                       | 
 pg_catalog  | stcs_load_options                            | 
 pg_catalog  | stcs_load_trace                              | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_loaderror_detail                        | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_lwlock                                  | 
 pg_catalog  | stcs_mark_partitions                         | 
 pg_catalog  | stcs_mem_alloc_history                       | 
 pg_catalog  | stcs_mem_block_details                       | 
 pg_catalog  | stcs_mem_freelist                            | 
 pg_catalog  | stcs_mem_heavy_hitters                       | 
 pg_catalog  | stcs_mem_leaks                               | 
 pg_catalog  | stcs_mem_ops_counts                          | 
 pg_catalog  | stcs_memefficiency                           | 
 pg_catalog  | stcs_memhisto                                | 
 pg_catalog  | stcs_memory_pressure_actions                 | 
 pg_catalog  | stcs_memory_pressure_state                   | 
 pg_catalog  | stcs_memory_pressure_suspects                | 
 pg_catalog  | stcs_merge                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_mergejoin                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_metadata_step                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_minmax_errors                           | 
 pg_catalog  | stcs_misc_sys_stat                           | 
 pg_catalog  | stcs_ml_create_model_log                     | 
 pg_catalog  | stcs_ml_dlr_usage                            | 
 pg_catalog  | stcs_ml_log                                  | 
 pg_catalog  | stcs_ml_manager_log                          | 
 pg_catalog  | stcs_ml_model_stats                          | 
 pg_catalog  | stcs_ml_processing_log                       | 
 pg_catalog  | stcs_ml_sagemaker_error                      | 
 pg_catalog  | stcs_ml_sagemaker_request                    | 
 pg_catalog  | stcs_mmf_details                             | 
 pg_catalog  | stcs_monitoring_logs_internal                | 
 pg_catalog  | stcs_multi_statement_violations              | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_mutex_contention                        | 
 pg_catalog  | stcs_mv_aqmv                                 | 
 pg_catalog  | stcs_mv_refresh                              | 
 pg_catalog  | stcs_mv_state                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_nestloop                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_net_stat                                | 
 pg_catalog  | stcs_netmon_ip                               | 
 pg_catalog  | stcs_netmon_mac                              | 
 pg_catalog  | stcs_network_throttle                        | 
 pg_catalog  | stcs_nft_query_reissue                       | 
 pg_catalog  | stcs_nft_session_persistence                 | 
 pg_catalog  | stcs_nft_statement_replay_status             | 
 pg_catalog  | stcs_node_failovers                          | 
 pg_catalog  | stcs_nullyze                                 | 
 pg_catalog  | stcs_omnisql_error                           | 
 pg_catalog  | stcs_omnisql_rewrite_rules                   | 
 pg_catalog  | stcs_omnisql_rewrite_stats                   | 
 pg_catalog  | stcs_parse                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_perf_channel_sink                       | 
 pg_catalog  | stcs_perf_channel_source                     | 
 pg_catalog  | stcs_perf_histograms                         | 
 pg_catalog  | stcs_persisted_sessions_on_disk              | 
 pg_catalog  | stcs_pg_wal_stats                            | 
 pg_catalog  | stcs_pinned_blocks                           | 
 pg_catalog  | stcs_plan_explain                            | 
 pg_catalog  | stcs_plan_explain_props                      | 
 pg_catalog  | stcs_plan_explain_tree                       | 
 pg_catalog  | stcs_plan_info                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_plan_perf                               | 
 pg_catalog  | stcs_plan_qid_map                            | 
 pg_catalog  | stcs_plan_querytext                          | 
 pg_catalog  | stcs_plan_rule_stats                         | 
 pg_catalog  | stcs_plan_state                              | 
 pg_catalog  | stcs_prefetch_stats                          | 
 pg_catalog  | stcs_print                                   | 
 pg_catalog  | stcs_proc_stat                               | 
 pg_catalog  | stcs_process_state                           | 
 pg_catalog  | stcs_project                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_query                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_query_abort_reason                      | 
 pg_catalog  | stcs_query_block_stats                       | 
 pg_catalog  | stcs_query_concurrency_scaling_decision      | 
 pg_catalog  | stcs_query_concurrency_scaling_fail_reasons  | 
 pg_catalog  | stcs_query_detail                            | 
 pg_catalog  | stcs_query_execution_time_prediction         | 
 pg_catalog  | stcs_query_heap_memory_stats_by_component    | 
 pg_catalog  | stcs_query_heap_memory_usage                 | 
 pg_catalog  | stcs_query_internal                          | 
 pg_catalog  | stcs_query_mem_leaks                         | 
 pg_catalog  | stcs_query_mem_stats                         | 
 pg_catalog  | stcs_query_mem_stats_by_type                 | 
 pg_catalog  | stcs_query_memory                            | 
 pg_catalog  | stcs_query_memory_cheating                   | 
 pg_catalog  | stcs_query_metrics                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_query_prediction                        | 
 pg_catalog  | stcs_query_step_times                        | 
 pg_catalog  | stcs_query_transmit_metrics                  | 
 pg_catalog  | stcs_query_tx_metrics                        | 
 pg_catalog  | stcs_querytext                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_querytext_internal                      | 
 pg_catalog  | stcs_range_insert                            | 
 pg_catalog  | stcs_redcat_journal_gc_info                  | 
 pg_catalog  | stcs_redshift_proxy_log                      | 
 pg_catalog  | stcs_rehydration_metrics                     | 
 pg_catalog  | stcs_remote_access_blocklist                 | 
 pg_catalog  | stcs_replacements                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_rereplication                           | 
 pg_catalog  | stcs_res_leaks                               | 
 pg_catalog  | stcs_restarted_sessions                      | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_restarted_sessions_internal             | 
 pg_catalog  | stcs_result_cache_history                    | 
 pg_catalog  | stcs_result_cache_stats                      | 
 pg_catalog  | stcs_return                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_right_sizing                            | 
 pg_catalog  | stcs_rlf_scan                                | 
 pg_catalog  | stcs_rls_applied_policy                      | 
 pg_catalog  | stcs_rms_calls                               | 
 pg_catalog  | stcs_rowblock_manager_stats                  | 
 pg_catalog  | stcs_rpc                                     | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_rtf_save                                | 
 pg_catalog  | stcs_rtf_stats                               | 
 pg_catalog  | stcs_rtree                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_s3_commit_leak                          | 
 pg_catalog  | stcs_s3_write_block_debug                    | 
 pg_catalog  | stcs_s3client                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_s3client_error                          | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_s3client_trace                          | 
 pg_catalog  | stcs_s3commit_ddb_entry                      | 
 pg_catalog  | stcs_s3commit_dm_guids                       | 
 pg_catalog  | stcs_s3commit_stats                          | 
 pg_catalog  | stcs_s3list                                  | 
 pg_catalog  | stcs_s3log                                   | 
 pg_catalog  | stcs_s3partition_elimination                 | 
 pg_catalog  | stcs_s3partition_predicate                   | 
 pg_catalog  | stcs_s3pushdown                              | 
 pg_catalog  | stcs_s3query                                 | 
 pg_catalog  | stcs_s3query_billing_trace                   | 
 pg_catalog  | stcs_s3query_metering                        | 
 pg_catalog  | stcs_s3requests                              | 
 pg_catalog  | stcs_s3retries                               | 
 pg_catalog  | stcs_sample                                  | 
 pg_catalog  | stcs_save                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_sb_recovery                             | 
 pg_catalog  | stcs_scan                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_scan_range_stats                        | 
 pg_catalog  | stcs_schema_quota_ddl                        | 
 pg_catalog  | stcs_schema_quota_violations                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_seg_completed_notify                    | 
 pg_catalog  | stcs_segment_ends_cleanly                    | 
 pg_catalog  | stcs_segment_starts                          | 
 pg_catalog  | stcs_sem_pool                                | 
 pg_catalog  | stcs_sem_stat                                | 
 pg_catalog  | stcs_sem_usage                               | 
 pg_catalog  | stcs_serial_safety_net                       | 
 pg_catalog  | stcs_server_write_timings                    | 
 pg_catalog  | stcs_services_control_metrics                | 
 pg_catalog  | stcs_session_signal                          | 
 pg_catalog  | stcs_session_state                           | 
 pg_catalog  | stcs_sessions                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_shadow_table_commit                     | 
 pg_catalog  | stcs_skr_scan_metrics                        | 
 pg_catalog  | stcs_small_table_convert_event               | 
 pg_catalog  | stcs_snapshotbackup                          | 
 pg_catalog  | stcs_sort                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_sorted_checker                          | 
 pg_catalog  | stcs_sorted_checker_leader                   | 
 pg_catalog  | stcs_spatial_column_linker                   | 
 pg_catalog  | stcs_spatial_function                        | 
 pg_catalog  | stcs_spatial_index                           | 
 pg_catalog  | stcs_spatial_join                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_spatial_query                           | 
 pg_catalog  | stcs_spatial_simplify                        | 
 pg_catalog  | stcs_spectrum_cache_error                    | 
 pg_catalog  | stcs_spectrum_scan_error                     | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_sshclient_error                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_ssn_violation                           | 
 pg_catalog  | stcs_stack_trace                             | 
 pg_catalog  | stcs_stack_traces                            | 
 pg_catalog  | stcs_startup_metrics                         | 
 pg_catalog  | stcs_step_parse                              | 
 pg_catalog  | stcs_steps                                   | 
 pg_catalog  | stcs_stored_proc_call                        | 
 pg_catalog  | stcs_stored_proc_call_map                    | 
 pg_catalog  | stcs_stored_proc_messages                    | 
 pg_catalog  | stcs_stream_segs                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_sub_transaction_commit_info             | 
 pg_catalog  | stcs_super_column_linker                     | 
 pg_catalog  | stcs_super_function                          | 
 pg_catalog  | stcs_super_query                             | 
 pg_catalog  | stcs_superblock                              | 
 pg_catalog  | stcs_superblock_integrity_error              | 
 pg_catalog  | stcs_superblock_tree_events                  | 
 pg_catalog  | stcs_superblock_trickle_validation_stats     | 
 pg_catalog  | stcs_superblock_trickle_validation_summary   | 
 pg_catalog  | stcs_superblock_vacuum                       | 
 pg_catalog  | stcs_swap                                    | 
 pg_catalog  | stcs_system_abort_txn                        | 
 pg_catalog  | stcs_system_state                            | 
 pg_catalog  | stcs_table_mutex                             | 
 pg_catalog  | stcs_table_partition_qpd_stats               | 
 pg_catalog  | stcs_table_partition_scan                    | 
 pg_catalog  | stcs_table_partitions_hotness_stats          | 
 pg_catalog  | stcs_tbl_perm_at_drop                        | 
 pg_catalog  | stcs_terminate                               | 
 pg_catalog  | stcs_tiered_storage_controller               | 
 pg_catalog  | stcs_tiered_storage_s3_blocks                | 
 pg_catalog  | stcs_tombstone                               | 
 pg_catalog  | stcs_tr_conflict                             | 
 pg_catalog  | stcs_transaction_read_write_set              | 
 pg_catalog  | stcs_truncate_history                        | 
 pg_catalog  | stcs_udf                                     | 
 pg_catalog  | stcs_udf_compile_error                       | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_udf_log                                 | 
 pg_catalog  | stcs_udf_trace                               | 
 pg_catalog  | stcs_undo_transactions                       | 
 pg_catalog  | stcs_undone                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_unique                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_unload_history_base                     | 
 pg_catalog  | stcs_unload_log                              | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_unload_options                          | 
 pg_catalog  | stcs_unnest                                  | 
 pg_catalog  | stcs_usage_control                           | 
 pg_catalog  | stcs_user_load_error_detail                  | 
 pg_catalog  | stcs_user_query_history                      | 
 pg_catalog  | stcs_user_query_map                          | 
 pg_catalog  | stcs_user_query_rewrite                      | 
 pg_catalog  | stcs_userlog                                 | 
 pg_catalog  | stcs_utilitytext                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_vacuum                                  | 
 pg_catalog  | stcs_vacuum_detail                           | 
 pg_catalog  | stcs_vacuum_history                          | 
 pg_catalog  | stcs_vacuum_scan_query_usage                 | 
 pg_catalog  | stcs_varbyte_column_linker                   | 
 pg_catalog  | stcs_varbyte_function                        | 
 pg_catalog  | stcs_varbyte_query                           | 
 pg_catalog  | stcs_vec_scan_stats                          | 
 pg_catalog  | stcs_version                                 | 
 pg_catalog  | stcs_volt_tt_sizes                           | 
 pg_catalog  | stcs_vpid                                    | 
 pg_catalog  | stcs_vpid_error                              | 
 pg_catalog  | stcs_wam_lifecycle                           | 
 pg_catalog  | stcs_warning                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_window                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_wlm_auto_concurrency                    | 
 pg_catalog  | stcs_wlm_error                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_wlm_multi_az_routing                    | 
 pg_catalog  | stcs_wlm_query                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_wlm_query_preemption                    | 
 pg_catalog  | stcs_wlm_rule_action                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stcs_wlm_service_class_config                | 
 pg_catalog  | stcs_wlm_trace                               | 
 pg_catalog  | stcs_wlm_trace_query_state                   | 
 pg_catalog  | stcs_xid_consumption_rate                    | 
 pg_catalog  | stcs_xregion_billing_error                   | 
 pg_catalog  | stcs_xregion_metering                        | 
 pg_catalog  | stcs_xrestore                                | 
 pg_catalog  | stcs_xrestore_alter_distkey                  | 
 pg_catalog  | stcs_xrestore_cluster_level_distkey_tables   | 
 pg_catalog  | stll_abort_idle                              | 
 pg_catalog  | stll_aggr                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_aggr_distinct                           | 
 pg_catalog  | stll_alert_event_log                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_alert_messages                          | 
 pg_catalog  | stll_alter_column_encode_events              | 
 pg_catalog  | stll_alter_column_events                     | 
 pg_catalog  | stll_alter_dist_catalog_change_events        | 
 pg_catalog  | stll_alter_dist_sort                         | 
 pg_catalog  | stll_alter_sortkey_events                    | 
 pg_catalog  | stll_analyze                                 | 
 pg_catalog  | stll_analyze_compression                     | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_aqua_pushdown                           | 
 pg_catalog  | stll_aqua_requests                           | 
 pg_catalog  | stll_arcadia_billing_log                     | 
 pg_catalog  | stll_arcadia_billing_ris_reports             | 
 pg_catalog  | stll_arcadia_billing_xact_log                | 
 pg_catalog  | stll_arcadia_concurrency_scaling_usage       | 
 pg_catalog  | stll_arcadia_concurrency_scaling_usage_error | 
 pg_catalog  | stll_arcadia_main_usage                      | 
 pg_catalog  | stll_arcadia_main_usage_error                | 
 pg_catalog  | stll_auto_alter_worker_event                 | 
 pg_catalog  | stll_auto_dispatcher_wlm_occupancy           | 
 pg_catalog  | stll_auto_maintenance                        | 
 pg_catalog  | stll_auto_maintenance_worker                 | 
 pg_catalog  | stll_auto_task_events                        | 
 pg_catalog  | stll_auto_worker_levels                      | 
 pg_catalog  | stll_autovacuum_detail                       | 
 pg_catalog  | stll_autovacuum_skip_reason                  | 
 pg_catalog  | stll_awsclient_error                         | 
 pg_catalog  | stll_background_monitor                      | 
 pg_catalog  | stll_background_tasks                        | 
 pg_catalog  | stll_backtrace                               | 
 pg_catalog  | stll_backup_compute                          | 
 pg_catalog  | stll_backup_leader                           | 
 pg_catalog  | stll_bcast                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_bkg_compile_info                        | 
 pg_catalog  | stll_blf_efficiency                          | 
 pg_catalog  | stll_block_access_errors                     | 
 pg_catalog  | stll_block_integrity_error                   | 
 pg_catalog  | stll_block_io_metrics                        | 
 pg_catalog  | stll_block_needs_recovery                    | 
 pg_catalog  | stll_block_pins                              | 
 pg_catalog  | stll_block_priority_based_rereplication      | 
 pg_catalog  | stll_blocklist                               | 
 pg_catalog  | stll_bootstrap                               | 
 pg_catalog  | stll_burst_async_mark                        | 
 pg_catalog  | stll_burst_billing_ris_reports               | 
 pg_catalog  | stll_burst_connection                        | 
 pg_catalog  | stll_burst_id_col_highwatermark              | 
 pg_catalog  | stll_burst_manager_personalization           | 
 pg_catalog  | stll_burst_manager_refresh                   | 
 pg_catalog  | stll_burst_prepare                           | 
 pg_catalog  | stll_burst_query_execution                   | 
 pg_catalog  | stll_burst_refresh                           | 
 pg_catalog  | stll_burst_service_client                    | 
 pg_catalog  | stll_burst_write_block_header_trace          | 
 pg_catalog  | stll_burst_write_exec                        | 
 pg_catalog  | stll_burst_write_query_event                 | 
 pg_catalog  | stll_bytedict_stats                          | 
 pg_catalog  | stll_cache_policy_stats                      | 
 pg_catalog  | stll_catalog_bloat                           | 
 pg_catalog  | stll_catalog_bufmgr_stats                    | 
 pg_catalog  | stll_catalog_rebuild_info                    | 
 pg_catalog  | stll_catalog_rebuild_worker                  | 
 pg_catalog  | stll_catalog_scan_metrics                    | 
 pg_catalog  | stll_cdc_checkpoints                         | 
 pg_catalog  | stll_cdc_connection                          | 
 pg_catalog  | stll_clear_reps                              | 
 pg_catalog  | stll_client_write_timings                    | 
 pg_catalog  | stll_cluster_blocks_stats                    | 
 pg_catalog  | stll_cmd_requires_top_xact                   | 
 pg_catalog  | stll_codegen                                 | 
 pg_catalog  | stll_column_access_metrics                   | 
 pg_catalog  | stll_column_errors                           | 
 pg_catalog  | stll_column_stats                            | 
 pg_catalog  | stll_comm_capture                            | 
 pg_catalog  | stll_comm_diag                               | 
 pg_catalog  | stll_comm_diag_errors                        | 
 pg_catalog  | stll_comm_excess                             | 
 pg_catalog  | stll_comm_integrity_error                    | 
 pg_catalog  | stll_comm_pkt_latency                        | 
 pg_catalog  | stll_comm_pkt_oob_count                      | 
 pg_catalog  | stll_comm_pkt_sent_count                     | 
 pg_catalog  | stll_comm_rexmit                             | 
 pg_catalog  | stll_comm_rexmit_histogram                   | 
 pg_catalog  | stll_command_result                          | 
 pg_catalog  | stll_command_start                           | 
 pg_catalog  | stll_commit_checkpoint                       | 
 pg_catalog  | stll_commit_internal_stats                   | 
 pg_catalog  | stll_commit_regions                          | 
 pg_catalog  | stll_commit_stats                            | 
 pg_catalog  | stll_committed_txn                           | 
 pg_catalog  | stll_compile_info                            | 
 pg_catalog  | stll_compile_print                           | 
 pg_catalog  | stll_compile_service                         | 
 pg_catalog  | stll_complyze                                | 
 pg_catalog  | stll_concurrency_scaling_query_mapping       | 
 pg_catalog  | stll_concurrency_scaling_usage               | 
 pg_catalog  | stll_concurrency_scaling_usage_error         | 
 pg_catalog  | stll_config                                  | 
 pg_catalog  | stll_config_chooser                          | 
 pg_catalog  | stll_config_history                          | 
 pg_catalog  | stll_connection_error_log                    | 
 pg_catalog  | stll_connection_log                          | 
 pg_catalog  | stll_connection_queue_error_log              | 
 pg_catalog  | stll_consistency                             | 
 pg_catalog  | stll_core_stat                               | 
 pg_catalog  | stll_cost_control_updates                    | 
 pg_catalog  | stll_cqi_metrics                             | 
 pg_catalog  | stll_cqilog                                  | 
 pg_catalog  | stll_create_replication                      | 
 pg_catalog  | stll_dag_cleanup                             | 
 pg_catalog  | stll_datashare_changes_consumer              | 
 pg_catalog  | stll_datashare_changes_producer              | 
 pg_catalog  | stll_datashare_dsms                          | 
 pg_catalog  | stll_datashare_query_info                    | 
 pg_catalog  | stll_datashare_request_consumer              | 
 pg_catalog  | stll_datashare_request_producer              | 
 pg_catalog  | stll_datasharing_log                         | 
 pg_catalog  | stll_db_isolation_level                      | 
 pg_catalog  | stll_ddltext                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_dead_tuples_stats                       | 
 pg_catalog  | stll_default_iam_usage                       | 
 pg_catalog  | stll_delete                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_delete_tag_throttle                     | 
 pg_catalog  | stll_dirty_table_metadata                    | 
 pg_catalog  | stll_disk_cache_megablock_stats              | 
 pg_catalog  | stll_disk_cache_stats                        | 
 pg_catalog  | stll_disk_cache_write                        | 
 pg_catalog  | stll_disk_extent_splits                      | 
 pg_catalog  | stll_disk_failures                           | 
 pg_catalog  | stll_disk_full_diag                          | 
 pg_catalog  | stll_disk_speeds                             | 
 pg_catalog  | stll_disk_topology                           | 
 pg_catalog  | stll_diskman_query_block_read_stats          | 
 pg_catalog  | stll_disks_blocks_stats                      | 
 pg_catalog  | stll_dist                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_doryc_log                               | 
 pg_catalog  | stll_dropped_replication                     | 
 pg_catalog  | stll_dynamodb_error                          | 
 pg_catalog  | stll_dynamodb_restore                        | 
 pg_catalog  | stll_epsilon_metadata_events                 | 
 pg_catalog  | stll_error                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_event_trace                             | 
 pg_catalog  | stll_exec_state                              | 
 pg_catalog  | stll_executor_steps                          | 
 pg_catalog  | stll_explain                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_external_catalog_calls                  | 
 pg_catalog  | stll_external_query_detail_base              | 
 pg_catalog  | stll_fabric_stats                            | 
 pg_catalog  | stll_federated_calls                         | 
 pg_catalog  | stll_federated_query                         | 
 pg_catalog  | stll_federated_trace                         | 
 pg_catalog  | stll_fetchers                                | 
 pg_catalog  | stll_file_scan                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_freed_disk_addrs                        | 
 pg_catalog  | stll_function_column_linker                  | 
 pg_catalog  | stll_ghost_buffer_stats                      | 
 pg_catalog  | stll_ght_hash_flatten                        | 
 pg_catalog  | stll_ght_hash_partitions                     | 
 pg_catalog  | stll_grouping_sets                           | 
 pg_catalog  | stll_guc                                     | 
 pg_catalog  | stll_guid_based_cache_policy_stats           | 
 pg_catalog  | stll_guid_cache_metrics                      | 
 pg_catalog  | stll_hash                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_hash_partitions                         | 
 pg_catalog  | stll_hashjoin                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_hashjoin_partitions                     | 
 pg_catalog  | stll_hdr_integrity_error                     | 
 pg_catalog  | stll_hllsketch_column_linker                 | 
 pg_catalog  | stll_hllsketch_function                      | 
 pg_catalog  | stll_hllsketch_query                         | 
 pg_catalog  | stll_hot_tables_qpd_stats                    | 
 pg_catalog  | stll_inc_commit_stats_instrumentation        | 
 pg_catalog  | stll_incremental_resize_state                | 
 pg_catalog  | stll_inflight                                | 
 pg_catalog  | stll_insert                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_integration_log                         | 
 pg_catalog  | stll_internal_query_details                  | 
 pg_catalog  | stll_invalid_replication                     | 
 pg_catalog  | stll_invariant                               | 
 pg_catalog  | stll_io_error                                | 
 pg_catalog  | stll_io_iscsi_monitor                        | 
 pg_catalog  | stll_io_perf                                 | 
 pg_catalog  | stll_io_stat                                 | 
 pg_catalog  | stll_kafka_scan_errors                       | 
 pg_catalog  | stll_kafka_scan_states                       | 
 pg_catalog  | stll_kinesis_outbound_requests               | 
 pg_catalog  | stll_kinesis_scan_errors                     | 
 pg_catalog  | stll_kinesis_scan_states                     | 
 pg_catalog  | stll_lambda_client                           | 
 pg_catalog  | stll_lambda_execution_logs                   | 
 pg_catalog  | stll_lambda_invocation_error                 | 
 pg_catalog  | stll_lbc_events                              | 
 pg_catalog  | stll_lbc_replay_stats                        | 
 pg_catalog  | stll_leader_control                          | 
 pg_catalog  | stll_leader_snapshot                         | 
 pg_catalog  | stll_limit                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_load_commits                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_load_error_info                         | 
 pg_catalog  | stll_load_errors                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_load_history_base                       | 
 pg_catalog  | stll_load_options                            | 
 pg_catalog  | stll_load_trace                              | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_loaderror_detail                        | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_lwlock                                  | 
 pg_catalog  | stll_mark_partitions                         | 
 pg_catalog  | stll_mem_alloc_history                       | 
 pg_catalog  | stll_mem_block_details                       | 
 pg_catalog  | stll_mem_freelist                            | 
 pg_catalog  | stll_mem_heavy_hitters                       | 
 pg_catalog  | stll_mem_leaks                               | 
 pg_catalog  | stll_mem_ops_counts                          | 
 pg_catalog  | stll_memefficiency                           | 
 pg_catalog  | stll_memhisto                                | 
 pg_catalog  | stll_memory_pressure_actions                 | 
 pg_catalog  | stll_memory_pressure_state                   | 
 pg_catalog  | stll_memory_pressure_suspects                | 
 pg_catalog  | stll_merge                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_mergejoin                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_metadata_step                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_minmax_errors                           | 
 pg_catalog  | stll_misc_sys_stat                           | 
 pg_catalog  | stll_ml_create_model_log                     | 
 pg_catalog  | stll_ml_dlr_usage                            | 
 pg_catalog  | stll_ml_log                                  | 
 pg_catalog  | stll_ml_manager_log                          | 
 pg_catalog  | stll_ml_model_stats                          | 
 pg_catalog  | stll_ml_processing_log                       | 
 pg_catalog  | stll_ml_sagemaker_error                      | 
 pg_catalog  | stll_ml_sagemaker_request                    | 
 pg_catalog  | stll_mmf_details                             | 
 pg_catalog  | stll_monitoring_logs_internal                | 
 pg_catalog  | stll_multi_statement_violations              | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_mutex_contention                        | 
 pg_catalog  | stll_mv_aqmv                                 | 
 pg_catalog  | stll_mv_refresh                              | 
 pg_catalog  | stll_mv_state                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_nestloop                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_net_stat                                | 
 pg_catalog  | stll_netmon_ip                               | 
 pg_catalog  | stll_netmon_mac                              | 
 pg_catalog  | stll_network_throttle                        | 
 pg_catalog  | stll_nft_query_reissue                       | 
 pg_catalog  | stll_nft_session_persistence                 | 
 pg_catalog  | stll_nft_statement_replay_status             | 
 pg_catalog  | stll_node_failovers                          | 
 pg_catalog  | stll_nullyze                                 | 
 pg_catalog  | stll_omnisql_error                           | 
 pg_catalog  | stll_omnisql_rewrite_rules                   | 
 pg_catalog  | stll_omnisql_rewrite_stats                   | 
 pg_catalog  | stll_parse                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_perf_channel_sink                       | 
 pg_catalog  | stll_perf_channel_source                     | 
 pg_catalog  | stll_perf_histograms                         | 
 pg_catalog  | stll_persisted_sessions_on_disk              | 
 pg_catalog  | stll_pg_wal_stats                            | 
 pg_catalog  | stll_pinned_blocks                           | 
 pg_catalog  | stll_plan_explain                            | 
 pg_catalog  | stll_plan_explain_props                      | 
 pg_catalog  | stll_plan_explain_tree                       | 
 pg_catalog  | stll_plan_info                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_plan_perf                               | 
 pg_catalog  | stll_plan_qid_map                            | 
 pg_catalog  | stll_plan_querytext                          | 
 pg_catalog  | stll_plan_rule_stats                         | 
 pg_catalog  | stll_plan_state                              | 
 pg_catalog  | stll_prefetch_stats                          | 
 pg_catalog  | stll_print                                   | 
 pg_catalog  | stll_proc_stat                               | 
 pg_catalog  | stll_process_state                           | 
 pg_catalog  | stll_project                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_query                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_query_abort_reason                      | 
 pg_catalog  | stll_query_block_stats                       | 
 pg_catalog  | stll_query_concurrency_scaling_decision      | 
 pg_catalog  | stll_query_concurrency_scaling_fail_reasons  | 
 pg_catalog  | stll_query_detail                            | 
 pg_catalog  | stll_query_execution_time_prediction         | 
 pg_catalog  | stll_query_heap_memory_stats_by_component    | 
 pg_catalog  | stll_query_heap_memory_usage                 | 
 pg_catalog  | stll_query_internal                          | 
 pg_catalog  | stll_query_mem_leaks                         | 
 pg_catalog  | stll_query_mem_stats                         | 
 pg_catalog  | stll_query_mem_stats_by_type                 | 
 pg_catalog  | stll_query_memory                            | 
 pg_catalog  | stll_query_memory_cheating                   | 
 pg_catalog  | stll_query_metrics                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_query_prediction                        | 
 pg_catalog  | stll_query_step_times                        | 
 pg_catalog  | stll_query_transmit_metrics                  | 
 pg_catalog  | stll_query_tx_metrics                        | 
 pg_catalog  | stll_querytext                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_querytext_internal                      | 
 pg_catalog  | stll_range_insert                            | 
 pg_catalog  | stll_redcat_journal_gc_info                  | 
 pg_catalog  | stll_redshift_proxy_log                      | 
 pg_catalog  | stll_rehydration_metrics                     | 
 pg_catalog  | stll_remote_access_blocklist                 | 
 pg_catalog  | stll_replacements                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_rereplication                           | 
 pg_catalog  | stll_res_leaks                               | 
 pg_catalog  | stll_restarted_sessions                      | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_restarted_sessions_internal             | 
 pg_catalog  | stll_result_cache_history                    | 
 pg_catalog  | stll_result_cache_stats                      | 
 pg_catalog  | stll_return                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_right_sizing                            | 
 pg_catalog  | stll_rlf_scan                                | 
 pg_catalog  | stll_rls_applied_policy                      | 
 pg_catalog  | stll_rms_calls                               | 
 pg_catalog  | stll_rowblock_manager_stats                  | 
 pg_catalog  | stll_rpc                                     | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_rtf_save                                | 
 pg_catalog  | stll_rtf_stats                               | 
 pg_catalog  | stll_rtree                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_s3_commit_leak                          | 
 pg_catalog  | stll_s3_write_block_debug                    | 
 pg_catalog  | stll_s3client                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_s3client_error                          | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_s3client_trace                          | 
 pg_catalog  | stll_s3commit_ddb_entry                      | 
 pg_catalog  | stll_s3commit_dm_guids                       | 
 pg_catalog  | stll_s3commit_stats                          | 
 pg_catalog  | stll_s3list                                  | 
 pg_catalog  | stll_s3log                                   | 
 pg_catalog  | stll_s3partition_elimination                 | 
 pg_catalog  | stll_s3partition_predicate                   | 
 pg_catalog  | stll_s3pushdown                              | 
 pg_catalog  | stll_s3query                                 | 
 pg_catalog  | stll_s3query_billing_trace                   | 
 pg_catalog  | stll_s3query_metering                        | 
 pg_catalog  | stll_s3requests                              | 
 pg_catalog  | stll_s3retries                               | 
 pg_catalog  | stll_sample                                  | 
 pg_catalog  | stll_save                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_sb_recovery                             | 
 pg_catalog  | stll_scan                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_scan_range_stats                        | 
 pg_catalog  | stll_schema_quota_ddl                        | 
 pg_catalog  | stll_schema_quota_violations                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_seg_completed_notify                    | 
 pg_catalog  | stll_segment_ends_cleanly                    | 
 pg_catalog  | stll_segment_starts                          | 
 pg_catalog  | stll_sem_pool                                | 
 pg_catalog  | stll_sem_stat                                | 
 pg_catalog  | stll_sem_usage                               | 
 pg_catalog  | stll_serial_safety_net                       | 
 pg_catalog  | stll_server_write_timings                    | 
 pg_catalog  | stll_services_control_metrics                | 
 pg_catalog  | stll_session_signal                          | 
 pg_catalog  | stll_session_state                           | 
 pg_catalog  | stll_sessions                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_shadow_table_commit                     | 
 pg_catalog  | stll_skr_scan_metrics                        | 
 pg_catalog  | stll_small_table_convert_event               | 
 pg_catalog  | stll_snapshotbackup                          | 
 pg_catalog  | stll_sort                                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_sorted_checker                          | 
 pg_catalog  | stll_sorted_checker_leader                   | 
 pg_catalog  | stll_spatial_column_linker                   | 
 pg_catalog  | stll_spatial_function                        | 
 pg_catalog  | stll_spatial_index                           | 
 pg_catalog  | stll_spatial_join                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_spatial_query                           | 
 pg_catalog  | stll_spatial_simplify                        | 
 pg_catalog  | stll_spectrum_cache_error                    | 
 pg_catalog  | stll_spectrum_scan_error                     | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_sshclient_error                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_ssn_violation                           | 
 pg_catalog  | stll_stack_trace                             | 
 pg_catalog  | stll_stack_traces                            | 
 pg_catalog  | stll_startup_metrics                         | 
 pg_catalog  | stll_step_parse                              | 
 pg_catalog  | stll_steps                                   | 
 pg_catalog  | stll_stored_proc_call                        | 
 pg_catalog  | stll_stored_proc_call_map                    | 
 pg_catalog  | stll_stored_proc_messages                    | 
 pg_catalog  | stll_stream_segs                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_sub_transaction_commit_info             | 
 pg_catalog  | stll_super_column_linker                     | 
 pg_catalog  | stll_super_function                          | 
 pg_catalog  | stll_super_query                             | 
 pg_catalog  | stll_superblock                              | 
 pg_catalog  | stll_superblock_integrity_error              | 
 pg_catalog  | stll_superblock_tree_events                  | 
 pg_catalog  | stll_superblock_trickle_validation_stats     | 
 pg_catalog  | stll_superblock_trickle_validation_summary   | 
 pg_catalog  | stll_superblock_vacuum                       | 
 pg_catalog  | stll_swap                                    | 
 pg_catalog  | stll_system_abort_txn                        | 
 pg_catalog  | stll_system_state                            | 
 pg_catalog  | stll_table_mutex                             | 
 pg_catalog  | stll_table_partition_qpd_stats               | 
 pg_catalog  | stll_table_partition_scan                    | 
 pg_catalog  | stll_table_partitions_hotness_stats          | 
 pg_catalog  | stll_tbl_perm_at_drop                        | 
 pg_catalog  | stll_terminate                               | 
 pg_catalog  | stll_tiered_storage_controller               | 
 pg_catalog  | stll_tiered_storage_s3_blocks                | 
 pg_catalog  | stll_tombstone                               | 
 pg_catalog  | stll_tr_conflict                             | 
 pg_catalog  | stll_transaction_read_write_set              | 
 pg_catalog  | stll_truncate_history                        | 
 pg_catalog  | stll_udf                                     | 
 pg_catalog  | stll_udf_compile_error                       | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_udf_log                                 | 
 pg_catalog  | stll_udf_trace                               | 
 pg_catalog  | stll_undo_transactions                       | 
 pg_catalog  | stll_undone                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_unique                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_unload_history_base                     | 
 pg_catalog  | stll_unload_log                              | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_unload_options                          | 
 pg_catalog  | stll_unnest                                  | 
 pg_catalog  | stll_usage_control                           | 
 pg_catalog  | stll_user_load_error_detail                  | 
 pg_catalog  | stll_user_query_history                      | 
 pg_catalog  | stll_user_query_map                          | 
 pg_catalog  | stll_user_query_rewrite                      | 
 pg_catalog  | stll_userlog                                 | 
 pg_catalog  | stll_utilitytext                             | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_vacuum                                  | 
 pg_catalog  | stll_vacuum_detail                           | 
 pg_catalog  | stll_vacuum_history                          | 
 pg_catalog  | stll_vacuum_scan_query_usage                 | 
 pg_catalog  | stll_varbyte_column_linker                   | 
 pg_catalog  | stll_varbyte_function                        | 
 pg_catalog  | stll_varbyte_query                           | 
 pg_catalog  | stll_vec_scan_stats                          | 
 pg_catalog  | stll_version                                 | 
 pg_catalog  | stll_volt_tt_sizes                           | 
 pg_catalog  | stll_vpid                                    | 
 pg_catalog  | stll_vpid_error                              | 
 pg_catalog  | stll_wam_lifecycle                           | 
 pg_catalog  | stll_warning                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_window                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_wlm_auto_concurrency                    | 
 pg_catalog  | stll_wlm_error                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_wlm_multi_az_routing                    | 
 pg_catalog  | stll_wlm_query                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_wlm_query_preemption                    | 
 pg_catalog  | stll_wlm_rule_action                         | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stll_wlm_service_class_config                | 
 pg_catalog  | stll_wlm_trace                               | 
 pg_catalog  | stll_wlm_trace_query_state                   | 
 pg_catalog  | stll_xid_consumption_rate                    | 
 pg_catalog  | stll_xregion_billing_error                   | 
 pg_catalog  | stll_xregion_metering                        | 
 pg_catalog  | stll_xrestore                                | 
 pg_catalog  | stll_xrestore_alter_distkey                  | 
 pg_catalog  | stll_xrestore_cluster_level_distkey_tables   | 
 pg_catalog  | stv_active_cursors                           | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_aio_reads                                | 
 pg_catalog  | stv_aio_writes                               | 
 pg_catalog  | stv_allocator                                | 
 pg_catalog  | stv_alter_checkpoint_state                   | 
 pg_catalog  | stv_alter_dist_sort                          | 
 pg_catalog  | stv_alter_table_recommendations              | 
 pg_catalog  | stv_auto_task_queue_state                    | 
 pg_catalog  | stv_block_access_times                       | 
 pg_catalog  | stv_block_lru                                | 
 pg_catalog  | stv_block_reps                               | 
 pg_catalog  | stv_block_tag_state                          | 
 pg_catalog  | stv_blocklist                                | 
 pg_catalog  | stv_burst_manager_async_queries              | 
 pg_catalog  | stv_burst_manager_cluster_info               | 
 pg_catalog  | stv_burst_tbl_ownership                      | 
 pg_catalog  | stv_burst_tbl_sb_version                     | 
 pg_catalog  | stv_burst_write_blocklist                    | 
 pg_catalog  | stv_cache_policy_stats                       | 
 pg_catalog  | stv_catalog_metrics                          | 
 pg_catalog  | stv_cdc_connection                           | 
 pg_catalog  | stv_channel_reservation                      | 
 pg_catalog  | stv_channel_sink                             | 
 pg_catalog  | stv_channel_source                           | 
 pg_catalog  | stv_channel_usage                            | 
 pg_catalog  | stv_code_pool                                | 
 pg_catalog  | stv_comm_diag_ping_stats                     | 
 pg_catalog  | stv_comm_slice                               | 
 pg_catalog  | stv_comm_state_orphans                       | 
 pg_catalog  | stv_commit_context                           | 
 pg_catalog  | stv_compression                              | 
 pg_catalog  | stv_configuration                            | 
 pg_catalog  | stv_core_stat                                | 
 pg_catalog  | stv_cost_control                             | 
 pg_catalog  | stv_cursor_configuration                     | 
 pg_catalog  | stv_db_isolation_level                       | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_disk_addresses                           | 
 pg_catalog  | stv_disk_cache_state                         | 
 pg_catalog  | stv_disk_map                                 | 
 pg_catalog  | stv_diskman_query_block_alloc_stats          | 
 pg_catalog  | stv_exec_state                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_external_databases                       | 
 pg_catalog  | stv_external_partitions                      | 
 pg_catalog  | stv_fdisk_stats                              | 
 pg_catalog  | stv_gui_status                               | 
 pg_catalog  | stv_guid_based_cache_policy_stats            | 
 pg_catalog  | stv_guid_based_local_block_cache_state       | 
 pg_catalog  | stv_identity_highwater                       | 
 pg_catalog  | stv_inflight                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_integration                              | 
 pg_catalog  | stv_interleaved_counts                       | 
 pg_catalog  | stv_invalid_replication                      | 
 pg_catalog  | stv_invisible_xact                           | 
 pg_catalog  | stv_io_local_pending                         | 
 pg_catalog  | stv_io_local_pending_time                    | 
 pg_catalog  | stv_io_local_times                           | 
 pg_catalog  | stv_io_raidp_client_pending                  | 
 pg_catalog  | stv_io_raidp_server_pending                  | 
 pg_catalog  | stv_io_readahead                             | 
 pg_catalog  | stv_io_stat                                  | 
 pg_catalog  | stv_ip                                       | 
 pg_catalog  | stv_last_grafted_ctxt_table_versions         | 
 pg_catalog  | stv_load_state                               | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_local_block_cache_state                  | 
 pg_catalog  | stv_local_superblock_manager                 | 
 pg_catalog  | stv_locks                                    | 
 pg_catalog  | stv_logical_data_slices                      | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_mem_alloc_history                        | 
 pg_catalog  | stv_mem_fragmentation                        | 
 pg_catalog  | stv_mem_freelist                             | 
 pg_catalog  | stv_mem_freelist_len                         | 
 pg_catalog  | stv_mem_leaks                                | 
 pg_catalog  | stv_ml_manager_status                        | 
 pg_catalog  | stv_ml_model_info                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_mv_deps                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_mv_info                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_net_stat                                 | 
 pg_catalog  | stv_networks                                 | 
 pg_catalog  | stv_node_storage_capacity                    | 
 pg_catalog  | stv_nodes                                    | 
 pg_catalog  | stv_partitions                               | 
 pg_catalog  | stv_pg_wal_length                            | 
 pg_catalog  | stv_preferred_ctxt_table_versions            | 
 pg_catalog  | stv_proc_stat                                | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_process_state                            | 
 pg_catalog  | stv_profiler                                 | 
 pg_catalog  | stv_query_mem_leaks                          | 
 pg_catalog  | stv_query_mem_stats                          | 
 pg_catalog  | stv_query_mem_stats_by_type                  | 
 pg_catalog  | stv_query_metrics                            | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_query_stats                              | 
 pg_catalog  | stv_recent_io                                | 
 pg_catalog  | stv_recents                                  | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_resize_library_import                    | 
 pg_catalog  | stv_resize_ml_model_import                   | 
 pg_catalog  | stv_resize_state                             | 
 pg_catalog  | stv_resize_table_import                      | 
 pg_catalog  | stv_restore_table_state                      | 
 pg_catalog  | stv_result_cache                             | 
 pg_catalog  | stv_resume_query_heartbeat                   | 
 pg_catalog  | stv_rowblock_manager_state                   | 
 pg_catalog  | stv_s3_commit_mid                            | 
 pg_catalog  | stv_schema_quota_state                       | 
 pg_catalog  | stv_sem_usage                                | 
 pg_catalog  | stv_session_state                            | 
 pg_catalog  | stv_sessions                                 | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_shmmem_stats                             | 
 pg_catalog  | stv_slices                                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_spectrum_cache_state                     | 
 pg_catalog  | stv_spx_mem_stats                            | 
 pg_catalog  | stv_startup_recovery_state                   | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_storage_oid_map                          | 
 pg_catalog  | stv_superblock                               | 
 pg_catalog  | stv_superblock_locations                     | 
 pg_catalog  | stv_superblock_tree_entries                  | 
 pg_catalog  | stv_table_interval_map                       | 
 pg_catalog  | stv_table_partition_summary                  | 
 pg_catalog  | stv_table_partitions                         | 
 pg_catalog  | stv_table_row_id_state                       | 
 pg_catalog  | stv_table_vacuum_advisor_info                | 
 pg_catalog  | stv_tbl_column_slice_state                   | 
 pg_catalog  | stv_tbl_column_state                         | 
 pg_catalog  | stv_tbl_fragmentation                        | 
 pg_catalog  | stv_tbl_perm                                 | 
 pg_catalog  | stv_tbl_perm_property                        | 
 pg_catalog  | stv_tbl_perm_with_megavalues                 | 
 pg_catalog  | stv_tbl_trans                                | 
 pg_catalog  | stv_transactions                             | 
 pg_catalog  | stv_underrepped_blocks                       | 
 pg_catalog  | stv_user_query_state                         | 
 pg_catalog  | stv_vacuum_state                             | 
 pg_catalog  | stv_vpid                                     | 
 pg_catalog  | stv_wlm_classification_config                | 
 pg_catalog  | stv_wlm_config                               | 
 pg_catalog  | stv_wlm_config_internal                      | 
 pg_catalog  | stv_wlm_qmr_config                           | 
 pg_catalog  | stv_wlm_query_queue_state                    | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_wlm_query_state                          | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_wlm_query_task_state                     | {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
 pg_catalog  | stv_wlm_service_class_config                 | 
 pg_catalog  | stv_wlm_service_class_state                  | 
 pg_catalog  | stv_xact                                     | 
 pg_catalog  | stv_xrestore_alter_queue_state               | 
 pg_catalog  | systable_globaldict                          | 
 pg_catalog  | systable_schema                              | 
 pg_catalog  | systable_topology                            | 
(1141 rows)

Now, first, all objects in pg_catalog are owned by rdsdb.

Next, what we see is that there are three distinct ACLs;

  1. NULL

    Now, for the normal priv-based access control system, NULL really means defaults, but for a table this actually means no grants (it’s different for procedures and other types of object).

    So an object with NULL has no grants, so only the owner or an admin user can access the object. For Redshift, which also has the rdsdb user (God), that user also can access (and anyway is the owner).

  2. {=r/rdsdb}

    This means the group-like object public (no name on the left of the =) has select access (the r after the equals sign), which has been granted by rdsdb.

  3. {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}

    This means the user rdsdb has all grants (some of which do not exist in Redshift), and the group-like object public has select, granted by rdsdb.

Now, I’m logged in as admin, and admin users in Postgres bypass the privileges based access control mechanism, so that on the face of it means I should be able to access everything.

I can say is that if I were a normal user, and so was constrained by grants, I expect not to be able to access NULL, I expect I will be able to access the other two (as they both grant to public).

In any event, let’s see what we find, taking particular examples which I’ve tried already to demonstrate the issues;

explain select * from pg_aggregate;            -- {=r/rdsdb}
explain select * from pg_attrdef_journal;      -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
explain select * from pg_cast;                 -- {=r/rdsdb}
explain select * from pg_conf;                 -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
explain select * from stcs_abort_idle;         -- NULL
explain select * from stcs_bcast;              -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
explain select * from stll_abort_idle;         -- NULL
explain select * from stll_aggr;               -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
explain select * from stll_db_isolation_level; -- NULL
explain select * from stv_active_cursors;      -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
explain select * from stv_aio_reads;           -- NULL
explain select * from stv_block_tag_state;     -- NULL
explain select * from stv_blocklist;           -- NULL
explain select * from stv_db_isolation_level;  -- NULL
explain select * from systable_globaldict;     -- NULL

Here are the results;

dev=# explain select * from pg_aggregate;            -- {=r/rdsdb}
                            QUERY PLAN                            
------------------------------------------------------------------
 LD Seq Scan on pg_aggregate  (cost=0.00..8.00 rows=800 width=48)
(1 row)

dev=# explain select * from pg_attrdef_journal;      -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
ERROR:  permission denied for relation pg_attrdef_journal
dev=# explain select * from pg_cast;                 -- {=r/rdsdb}
                          QUERY PLAN                           
---------------------------------------------------------------
 LD Seq Scan on pg_cast  (cost=0.00..11.50 rows=1150 width=17)
(1 row)

dev=# explain select * from pg_conf;                 -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
                          QUERY PLAN                          
--------------------------------------------------------------
 LD Seq Scan on pg_conf  (cost=0.00..3.80 rows=380 width=160)
(1 row)

dev=# explain select * from stcs_abort_idle;         -- NULL
ERROR:  permission denied for relation stcs_abort_idle
dev=# explain select * from stcs_bcast;              -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
ERROR:  permission denied for relation stcs_bcast
dev=# explain select * from stll_abort_idle;         -- NULL
ERROR:  permission denied for relation stll_abort_idle
dev=# explain select * from stll_aggr;               -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
ERROR:  permission denied for relation stll_aggr
dev=# explain select * from stll_db_isolation_level; -- NULL
ERROR:  permission denied for relation stll_db_isolation_level
dev=# explain select * from stv_active_cursors;      -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb}
                               QUERY PLAN                               
------------------------------------------------------------------------
 XN Seq Scan on stv_active_cursors  (cost=0.00..0.90 rows=90 width=820)
(1 row)

dev=# explain select * from stv_aio_reads;           -- NULL
ERROR:  permission denied for relation stv_aio_reads

dev=# explain select * from stv_block_tag_state;     -- NULL
                                QUERY PLAN                                
--------------------------------------------------------------------------
 XN Seq Scan on stv_block_tag_state  (cost=0.00..2.30 rows=230 width=300)
(1 row)

dev=# explain select * from stv_blocklist;           -- NULL
                             QUERY PLAN                             
--------------------------------------------------------------------
 XN Seq Scan on stv_blocklist  (cost=0.00..2.30 rows=230 width=288)
(1 row)

dev=# explain select * from stv_db_isolation_level;  -- NULL
                                 QUERY PLAN                                  
-----------------------------------------------------------------------------
 XN Seq Scan on stv_db_isolation_level  (cost=0.00..1.60 rows=160 width=452)
(1 row)

dev=# explain select * from systable_globaldict;     -- NULL
                                QUERY PLAN                                 
---------------------------------------------------------------------------
 XN Seq Scan on systable_globaldict  (cost=0.00..12.30 rows=1230 width=12)
(1 row)

dev=# 

So what do we see;

explain select * from pg_aggregate;            -- {=r/rdsdb}                      -- works
explain select * from pg_attrdef_journal;      -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} -- denied
explain select * from pg_cast;                 -- {=r/rdsdb}                      -- works
explain select * from pg_conf;                 -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} -- works
explain select * from stcs_abort_idle;         -- NULL                            -- denied
explain select * from stcs_bcast;              -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} -- denied
explain select * from stll_abort_idle;         -- NULL                            -- denied
explain select * from stll_aggr;               -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} -- denied
explain select * from stll_db_isolation_level; -- NULL                            -- denied
explain select * from stv_active_cursors;      -- {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} -- works
explain select * from stv_aio_reads;           -- NULL                            -- denied
explain select * from stv_block_tag_state;     -- NULL                            -- works
explain select * from stv_blocklist;           -- NULL                            -- works
explain select * from stv_db_isolation_level;  -- NULL                            -- works
explain select * from systable_globaldict;     -- NULL                            -- works

So looking at the grants, we have;

  1. {=r/rdsdb} always works.
  2. {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} is both denied and works.
  3. NULL is both denied and works.

Now, as an admin user, I should in fact be bypassing the ACL mechanism completely - that’s how it works for admin - and so I should be able to access everything.

When AWS added in the God user, rdsdb, they necessarily had to add in another access control mechanism, so that rdsdb could hide his objects from admin users.

What I broadly see (remembering this is for admin) is;

  1. Tables beginning with pg_ and with {=r/rdsdb} are mainly Postgres system tables and all are accessible.

  2. Tables beginning with pg_ and with {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} are mainly new Redshift system tables and some are accessible.

  3. Tables which are stcs_ or stll_ and NULL cannot be accessed.

  4. Tables which are stcs_ or stll_ and {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} are accessible.

  5. Tables which are stv_ may or may not be accessed, regardless of grants.

Example inconsistencies;

  1. pg_attrdef_journal is {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} and is denied.
  2. pg_conf is {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} and works.
  3. stv_aio_reads is NULL and is denied.
  4. stv_blocklist is NULL and works.

What I think is that under it all, there is a white-list and/or a black-list, and that for admin to access a system table, it must be on the white-list, and not on the black-list.

As far as I can tell, it is not possible to tell for the admin user which system tables can or cannot be read, because that user should be able to see everything, and the white-list and/or black-list to my eye present no information in the system tables; the only way you can find out if admin can access a system table is to try to do so - which buggers up the System Table Tracker because it simply takes copies of a set of system tables.

This leaves the question of what’s going on with the normal privileges mechanism. What we’d expect is that normal users of course would be affected by the white-list and/or black-list, but also have to pass the normal Postgres privileges mechanism.

What we find looking in our examples is that pg_attrdef_journal and stcs_bcast, both of which admin and normal users cannot access, have {rdsdb=arwdRxtD/rdsdb,=r/rdsdb} (which includes a select grant to public, so normal users should be able to access it) - so these tables must be being blocked by white-list and/or black-list, and so there’s no point in them having normal grants. That looks like sloppiness.

However, it looks like when normal grants are present, they do behave as expected and control normal users in the way they should.

However, there’s also the consideration some system tables are supposed to show all rows to admin, but to normal users should show rows only owned by that user - now, you can manage that in a view, by putting that behaviour into the view code, but how do you manage it for an stv_ system table, which is really a table-like representation of actual in-memory Redshift state (and which as such does not for example participate in MVCC)?

Again, this looks like more access information not present in the system tables. You can only find out by trying it yourself (and it may change between Redshift versions).

As far as I can tell, I’ve not yet checked them all, the stv_ tables which allow normal users to access their own rows all have normal grants given to public, but then magically control which rows are seem.

All in all, this looks to me to be an unprofessional mess.

So what I now must do is write code which tries to access every single system table, to see if it can be accessed as an admin user and/or as a normal user.

2023-05-02

Cluster Bring Up Behaviour

I regularly run clusters in every AWS region.

I have scripting for this, Python with boto3, so the process is automated - clusters come up, do stuff, shut down.

The most common multi-cluster work I run is checking Redshift version numbers in every region.

I’ve been doing this for over a year, no problems - until about a week ago.

What’s been happening now is that in a few regions (tending to be consistent, but not fully consistent), clusters are failing to be deleted.

Now, using boto3 is always very hit and miss. Status information returned by boto3 is often unreliable and you need to see the same status at least a couple of times (in a polling loop) before you can rely on it.

However, what’s always been the case up till now is that once a cluster became available, I could issue a delete.

That’s stopped working - it’s now taking significantly longer, sometimes it seems to me as long as a minute or so, in a few regions, for a cluster (despite boto saying available) to accept the delete command - what’s happening now is I get the “operation already in progress” error.

This is for two node dc2.large.

So, something has changed, I have no idea why.

In my scripting, I’m going to add in a retry loop, when issuing delete.

2023-05-03

System Table Tracker

I’ve added code to check whether or not admin, or a normal user, can access the tables and views in pg_catalog and information_schema.

You can’t figure this out from the system tables - the necessary information is not stored (there’s more to access that the Postgres ACL) - so I have to actually try to query every single table and every single view, to find out.

This means this information will be available on an ongoing basis, and not available for historical versions of Redshift.

I need to do the same for functions, but that will come later, it’s a lot more coding work (you have to handle every possible data type, because you have to produce valid fake arguments, to call a function).

I now need to wait for a new Redshift version, as my table design ties information together based on the cluster ID.

2023-05-05

Weather Report

  1. ap-northeast-2 dc2.large read benchmark is 0.72s, the norm is about 0.06s.

  2. ap-northeast-3 has been upgraded for both dc2.large and ra3.xlplus. Read benchmark for dc2.large is showing its first ever fast read benchmark (at 0.08s rather than 0.14s) but the disk-read-write has improved immensely, going from the usual 13s to 4.3s. For ra3.xlplus, disk read is unchanged (it was already fast) but disk-read-write has moved from 10.5s to 3.5s. I do not test other node types in this region, but I could imagine they also have been upgraded.

  3. ap-southeast-1 dc2.large read benchmark is 0.82s, the norm is about 0.05s.

  4. ap-southeast-3 now supports ra3.xlplus (and probably the other ra3 types as well, but I only test for this one of the ra3 types in this region).

  5. eu-central-1 disk-read-write has returned to normal, from two weeks ago at 6.3s, back to today 4.2s.

  6. us-east-1 dc2.large having a bad hair day for disk-read-write, at 6.2s, rather than 3.3s, and network, at 6s, rather than 2.2s.

https://www.redshiftresearchproject.org/cross_region_benchmarks/index.html

2023-05-06

Redshift Serverless

I am now investigating Redshift Serverless.

2023-05-08

Serverless

Well, that’s it. I now understand Serverless. PDF later. Swimming now :-)

Serverless Update

I’ve spent today working on the test code for the Serverless PDF.

This means getting Serverless working via boto3 in Python.

In my experience, getting boto3 to work is torture, and this has not been an exception.

The problems are that iteration cycle is long and the status values boto3 returns are wrong, and cannot be used.

I’m creating a namespace, workgroup, snapshot, resizing, deleting snapshot, deleting workgroup, deleting namespace.

Creating a namespace is immediate, but deleting a workgroup, namespace or snapshot takes several minutes - and boto3 is 100% incorrect when it returns AVAILABLE statuses. You have to do another loop, either after or on your next command, until whatever comes next (but depends on the AVAILABLE) actually starts working. It doubles the work, and this is work with a several minute iteration cycle.

I’ve never understood this. Why return available if I cannot yet perform further operations?

That reminds me, Serverless has been out for about a year, the UI doesn’t work properly; if you delete workgroup and also when doing so opt to delete the namespace it uses, the namespace always fails to delete.

Ah, and more about the UI - every time it throws up a notification of any kind, it’s retained at the top of the screen until you take the time to click on its close icon. So the more you do, the less and less screen space you have, vertically.

Then you discover that the close icons are unreliable. Some work, some do not.

So, what I’ve wanted to do is spin up Serverless systems with 8 RPU, and resize them, and time the resizes.

Also, to spin up some clusters and issue a copy of simple commands which produce important proofs.

I’ve got to bail on the work tonight, as it’s now too late - about six hours so far trying to get Serverless clusters started and resizing using boto3, and I’m not there yet.

In fact, on reflection, I think I’m going to bail on the resizing proofs. I was curious to see how long Serverless takes to resize to larger systems, but it’s just not worth the cost.

2023-05-09

New Redshift Version

New Redshift version out, 1.0.50300. Write up tomorrow, for now, links to the system table dump and diffs to previous version. The dump page now shows if admin and/or normal user can access a table or view.

https://www.redshiftresearchproject.org/system_table_tracker/1.0.50300/index.html

https://www.redshiftresearchproject.org/system_table_tracker/1.0.49780_to_1.0.50300/index.html

A fair bit of change in this release.

2023-05-13

Update

So, this weekend I’ll finish and publish the Serverless PDF.

There’s extra testing I wanted to add into the test/investigation code, and that takes time, and I’ve been busy with higher priority tasks, and also in the time I had available I wasn’t going to finish the test/investigation code anyway until the weekend.

I’ve been adding a “contact me” form to the Consultancy page (it’ll also go on the Combobulator page).

I wrote it, made it work, and then rewrote it to be a proper state machine. I’ve just finished coding, need to test it.

Then I need to fix the system table tracker (STT) - I need to get the old/new links working for functions, in the diffs, but I’ve also found some normal function links, in the list of all functions, are not working.

I need to start running a spider on the site, to check for 404s.

So, yah, need to finish the contact form, fix STT, and complete and publish the PDF for Serverless.

Update

Okay - the “Contact Me” form now added to Combobulator and Consultancy.

It’s a nice bit of code behind the scenes - state machine.

Now investigating/fixing a bug in the System Table Tracker where some pages for functions are 404.

System Table Tracker Bug Fix

There was a bug in the STT. I was using generate_series() in one place, to produce multiple rows, each with a different index into an array.

Now I thought (and the docs for Postgres 11 say) that arrays in Postgres are one based, not zero based.

All I can say is right now that’s not the case.

That’s a bit disturbing and implies really I have another bug, such that using a 0-based index seems to be fixing what I’m doing.

In any event, it’s fixed (and apparently correctly) the 404s for function pages in STT (not on the diffs page - those old/new function links do not work because I need to change how functions are handled, where I cannot use their OID any more in HTML filenames, as the OID varies between versions).

Number of pages now on RRP site is 159.680! fixing the bug added about 30k files, so it was an impactful bug.

2023-05-14

Update

There’s about 160k files on the site - almost all auto-generated, the system table dumps.

I yesterday found out about sitemaps, and today I had my first go at making my first sitemap(s) (50k max per map, so three sitemap files - there’s about 10k files not going into the sitemap, like CSS files, anything in __pycache__, all the bugzilla stuff and so on).

The robots.txt has a lined added to point at the sitemaps, and I can also (and have) directly inform search engines about the sitemap.

Be interesting to see if it makes a detectable difference.

2023-05-19

Weather Report

A new Redshift version, 1.50708, is out. There are no new or modified system tables.

I’ve improved the index page for the System Table Tracker to show for each release the number of tables, views, and functions.

https://www.redshiftresearchproject.org/system_table_tracker/index.html

Looking at the numbers, what happens is that a couple of consecutive releases occur with no changes to the system tables, and then a release occurs which has new and modified system tables.

The number of system table entities always rises over time, as would be expected, except for a few occasions where functionality was released but then revoked, or when something blundered and normal system tables were inadvertently dropped and then rapidly brought back - this happened with 1.0.48714, which dropped a number of normal system tables, and 1.0.48805, which came out the same day, and brought them back.

The bi-weekly benchmark was run this morning, a few days late.

  1. ap-northeast-2 dc2.large read benchmark performance has returned to normal (from being 10x slower than normal).

  2. ap-northeast-3 dc2.large in the benchmark previous to this showed dramatic improvement in the disk-read-write benchmark (4s vs the usual ~13s), but now has returned to its normal performance (at 12.15s).

  3. ap-southeast-1 ra3.xlplus disk-read-write ran slow, at ~3.5s, vs the normal ~2.5s. This is unusual, asra3 nodes are normally very consistent over time, unlike dc2.large nodes, which I suspect are shared tenancy.

  4. eu-south-1 dc2.large had its slowest ever disk-read-write benchmark since the region was upgraded from the ~14s set of regions, at 6.6s, vs the usual ~4.5s.

  5. us-east-1 dc2.large disk-read-write still taking twice as long as normal, and the network benchmark was slow, at 7.16s, but this region has always been one of the slower regions for network for dc2.large.

  6. us-east-2 dc2.large also having a bad hair day for networking, at 8.16s vs the normal 4.6s.

2023-05-21

Update

I’ve been working on the Redshift Serverless PDF for the last two or three weeks.

The reason it’s taking so long is firstly I’m with a client, but secondly, boto3, which is normally difficult to work with, is particularly difficult to work with, for Redshift Serverless.

For example, if you delete a workgroup, and then you poll until the workgroup is not listed any more, you still cannot delete namespace the workgroup was using.

So you discover all these issues, one after the other, and it takes forever, because workgroup spin up/down times are lengthy.

I’m currently running what I hope will be the final development run of the test code.

I’m missing one potential test, which is to try to provoke a CSC-serviced query.

On a manual WLM cluster, I found yesterday (as part of experimenting for the Serverless PDF - I otherwise have almost no knowledge of experience of CSC can easily and directly induce CSC use - configure WLM to be one queue with one slot, issue a long-running query, and then issue a select. The select will go to CSC.

Workgroups I think are using AutoWLM, and I’ve no personal experience of AutoWLM, but given the latest rumours about how it works, provoking CSC could be more work than I have time for today - I have some other to get done this afternoon, and it’s 1pm now and I need three hours today for gym and errands, too.

Actually, I think, it’s more that on an emotional level, getting boto3 working with Redshift Serverless has been so enervating that I can’t face another substantial Redshift task right now.

I’d like to do it, but also I don’t feel it’s necessary. There’s a ton of other evidence to support the conclusion of the PDF.

AHHHHHHHH

So, the final test run-through worked.

Everything was ready to go.

I hit go.

I then realized I had forgotten to change the number of iterations on workgroup up/down timing to 3. I’d set it to 1, for testing.

I interrupted the script, and now - and I write this so you can begin to grasp the slowness of working with Redshift Serverless - now I have to wait ten full minutes for the workgroups to come up and be deleted, before I can perform another iteration of the test.

It takes a lot of time to debug a script when every run takes ten minutes.

Mmmm

So, I kicked off the Redshift Serverless test, and went to the gym.

It’d now about four hours later.

The first test is to create a set of workgroups, differ sizes, three times each, to time how long creation and deletion take.

Looks to me like on one of the iterations, two of the workgroups have become stuck. They’ve both had “modifying” status for the two hours since I returned from gym.

(Each workgroup is created, and then deleted. They’re not connected to.)

2023-05-28

Serverless PDF Update

I’m back to working on the Serverless PDF.

Current problem is that the test script, to begin with, fires up seven workgroups, of varying sizes, then shuts them down.

I am finding now that this script consistently runs forever, because two of the workgroups always get stuck in the “modifying” state.

This is a slow process - it takes about two hours to get to this point - which is making development slow.

Next experiment to work around this issue is to serialize workgroup bring up / take down.

I do not keep a support contract with AWS, I think they’re not worth having, I’ve let billing know, that was six days ago, nothing’s happened yet. I’m accumulating stuck workgroups =-)

2023-05-29

Redshift Servrerless First Numbers

So, serialization of workgroup startup/shutdown has finally allowed the test script to run through and I have my first numbers.

I time 1, 2, 4, 8, 16, 32 and 64 NRPU sized workgroups (RPU, the AWS provisioning measurement for Serverless, is from 8 to 512 in units of 8 - I’m using Normalized RPU, which is 1 to 64, because I’m not in marketing). Three runs for each size. No data removed.

{1: {'create_durations': {0: {'namespace': 0.8912234306335449,
                              'workgroup': 153.6752643585205},
                          1: {'namespace': 0.2632710933685303,
                              'workgroup': 126.75984692573547},
                          2: {'namespace': 0.30719685554504395,
                              'workgroup': 122.00758242607117}},
     'delete_durations': {0: {'namespace': 273.9122018814087,
                              'workgroup': 429.01427817344666},
                          1: {'namespace': 171.95322132110596,
                              'workgroup': 201.95583033561707},
                          2: {'namespace': 139.098858833313,
                              'workgroup': 285.5187757015228}}},
 2: {'create_durations': {0: {'namespace': 0.5897674560546875,
                              'workgroup': 121.55530858039856},
                          1: {'namespace': 0.30312204360961914,
                              'workgroup': 120.97409987449646},
                          2: {'namespace': 0.27922677993774414,
                              'workgroup': 122.50093817710876}},
     'delete_durations': {0: {'namespace': 139.09372663497925,
                              'workgroup': 292.04112100601196},
                          1: {'namespace': 145.1036217212677,
                              'workgroup': 290.98438692092896},
                          2: {'namespace': 266.5069706439972,
                              'workgroup': 332.7032895088196}}},
 4: {'create_durations': {0: {'namespace': 0.5522394180297852,
                              'workgroup': 120.89478826522827},
                          1: {'namespace': 0.31633853912353516,
                              'workgroup': 121.28102254867554},
                          2: {'namespace': 0.296018123626709,
                              'workgroup': 121.66532397270203}},
     'delete_durations': {0: {'namespace': 185.84460949897766,
                              'workgroup': 444.9275915622711},
                          1: {'namespace': 210.47343182563782,
                              'workgroup': 569.497918844223},
                          2: {'namespace': 308.6132912635803,
                              'workgroup': 230.29608488082886}}},
 8: {'create_durations': {0: {'namespace': 0.6241271495819092,
                              'workgroup': 173.4158012866974},
                          1: {'namespace': 0.276500940322876,
                              'workgroup': 121.71212148666382},
                          2: {'namespace': 0.26824140548706055,
                              'workgroup': 157.25942254066467}},
     'delete_durations': {0: {'namespace': 139.00387334823608,
                              'workgroup': 358.66292548179626},
                          1: {'namespace': 256.9313349723816,
                              'workgroup': 307.93403720855713},
                          2: {'namespace': 215.98176908493042,
                              'workgroup': 306.64670276641846}}},
 16: {'create_durations': {0: {'namespace': 0.5469801425933838,
                               'workgroup': 125.77691531181335},
                           1: {'namespace': 0.31586313247680664,
                               'workgroup': 126.83414816856384},
                           2: {'namespace': 0.31030869483947754,
                               'workgroup': 126.95151257514954}},
      'delete_durations': {0: {'namespace': 282.44001626968384,
                               'workgroup': 123.29836297035217},
                           1: {'namespace': 160.32873916625977,
                               'workgroup': 264.13918256759644},
                           2: {'namespace': 221.00441813468933,
                               'workgroup': 413.4299247264862}}},
 32: {'create_durations': {0: {'namespace': 0.6428768634796143,
                               'workgroup': 169.25946879386902},
                           1: {'namespace': 0.26938652992248535,
                               'workgroup': 127.42372465133667},
                           2: {'namespace': 0.2550821304321289,
                               'workgroup': 160.83280849456787}},
      'delete_durations': {0: {'namespace': 349.39478373527527,
                               'workgroup': 443.2784161567688},
                           1: {'namespace': 201.93695878982544,
                               'workgroup': 468.7941060066223},
                           2: {'namespace': 364.174423456192,
                               'workgroup': 468.4965844154358}}},
 64: {'create_durations': {0: {'namespace': 1.75421142578125,
                               'workgroup': 153.50090217590332},
                           1: {'namespace': 0.2918214797973633,
                               'workgroup': 174.3497714996338},
                           2: {'namespace': 0.40948033332824707,
                               'workgroup': 174.84722900390625}},
      'delete_durations': {0: {'namespace': 144.52987933158875,
                               'workgroup': 192.82117128372192},
                           1: {'namespace': 254.82790207862854,
                               'workgroup': 273.6115198135376},
                           2: {'namespace': 435.5224561691284,
                               'workgroup': 301.84624791145325}}}}

What we see is;

  1. Namespace creation is instant.
  2. Namespace deletion is slow, and the timing is very curious. 1 to 16 NRPU (inclusive both ends) takes about 170 seconds. 32 and 64 NRPU take about 275 seconds. Generally, more NRPU means slower, but there’s a lot of variation between each deletion.
  3. Workgroup creation for 1, 2 and 4 is highly uniform and with low variance - 120 seconds. When we go to 8, we start to see longer times, and again, plenty of variation. At 16 we’re back to looking like 1 to 4, then 32 and 64 both look like the largest value we saw for 8. I have a theory which may explain all this, but no hints for now.
  4. Workgroup deletion is variable, and usually takes about 5 to 10 minutes.

Final note, I had one workgroup which after being brought up, I couldn’t connect to in 600 seconds and the connect timed out. Serverless is hard to work with. I’ve never seen problems like this with normal Redshift. I can’t trust boto at all. In my boto commands now, I have infinite retry loops, because after the previous command has finished (moved to available, or a workgroup is no longer listed in the list of workgroups, etc), the next command will still not work for a long time (much longer than with normal Redshift). Where the test suite takes so long to run, because it has to be serialized or I get stuck workgroups, I can’t afford to give up prematurely on a slow workgroup or namespace, or I lose many hours of test time.

This took one hell of a long time to run, where it’s serialized. Every single bring-up and shut-down you see above, every single timing, occurred serially.

AutoWLM Admin Queue?

So, I never, never use AutoWLM.

As such, I’ve never much thought about it.

I’m now working with it, to figure out how to provoke CSC when AutoWLM is active.

Something however unrelated to this has just occurred to me.

With normal WLM, there’s an admin queue - a one slot queue with just a bit of memory, so admin users can always issue commands.

Does that queue exist with AutoWLM?

Or do admin queries get routed into the AutoWLM black box? where if the current queue/slot config is full, that would mean admin queries not running.

AutoWLM Slots

In theory, I think you cannot know the queue and slot configuration AutoWLM currently has chosen.

However, I’ve just found a bit of a way - set wlm_query_slot_count to some silly value, like 55 (Redshift system wide max is 50).

Then issue a query.

Then look in the system tables to see how many slots that query is using.

You might be see that it’s using, say, 3 slots.

If you cancel the query, then set wlm_query_slot_count to 2, and try this again, you’ll see it uses 2 slots.

You can’t control which queue the query goes to, but it looks like you can figure out the number of slots for the queue you are issuing to, by issuing a query which will use up all unused slots, and then summing the number of slots in use.

More Fun With AutoWLM

Well, I say fun… =-)

I’m trying to provoke a CSC, when AutoWLM is in use.

I can provoke CSC, when manual WLM is in use, easy as pie. Completely consistent and reproducible and in a way which makes sense. All good.

With AutoWLM, I’ve not been able to provoke CSC and I’m not sure I can.

So, I begin by turning on AutoWLM and setting max CSC clusters to 1. I then kick off a two node dc2.large cluster.

Checking the system tables, I see AutoWLM is in use. This also means SQA is in use, as AutoWLM turns it on and you can then not turn it off, and it also means CSC is in use.

I see now why CSC “on” is called “auto”, rather than “on”, because it means the setting for CSC now looks like the other two settings into WLM queue config, both of which AutoWLM sets to “auto”.

So my plan was to set up a table with something like 5k rows in, and then issue an insert which performs a self-join. It’ll take forever.

To issue this insert, I make a new thread (Python script), a new connection. and issue.

So now I can issue as many basically never-ending queries as I like, each using up a slot.

The idea then is to issue one insert, then a select which pulls a single row from the table being inserted to, then check to see if the select ran on a CSC; and to iterate over this loop until a select does run on a CSC.

Foolproof, right? work of genius, right? :-)

Also, during writing the code, I discovered that the set parameter wlm_query_slot_count IS honoured with AutoWLM, and I can check to see how many slots a query is using.

So if I set wlm_query_slot_count to say 55 (the docs say the maximum is 50 - docs making it up again) and the issue the insert query, I can see it’s using 3 slots, which is going to be the number of slots AutoWLM currently has configured for that queue.

So I set wlm_query_slot_count to 55 before the insert query and before the select query, for good measure.

Well, it all doesn’t work.

So, the first insert is issued. It uses up 3 slots. Great!

I issue the select, which runs and completes, and does not use a CSC. It also does not use SQA.

I then issue the next insert (the first is still running) - and the second insert is queued!

I then issue the next select, which runs and completes, and again, not using a CSC and not using SQA.

This behaviour continues for as long as I let the loop run.

I then examined cumulative slot counts in use over time.

Turns out when the select comes in, four slots are then in use in the default queue.

Now, I think AutoWLM actually makes new queues when it wants to, and so it really is using only the one queue, and what’s happening is it’s simply adding an extra slot, on the fly, to that queue (which leads to the question of what’s happening with memory allocation per slot).

So I can’t fill up the slots in the queue, because AutoWLM just queues those queries.

I can’t provoke a CSC with a select, because I just get another slot in the existing queue.

I suspect the inserts are being queued because writes are serialized so AutoWLM knows not to bother running them concurrently.

Ah ha - so, what I need to do is make a new table for every insert query, so they all can run in parallel.

Let’s see how that goes…

More AutoWLM

I’ve spent the last six and a half hours trying to provoke CSC when using AutoWLM.

Have failed.

Taking a break - in fact, I will probably leave it for now, and get the PDF for Serverless finished, apart from this, and then decide whether or not to come to it.

The final efforts to provoke CSC have however and interestingly provided a initial insight or two into AutoWLM, and raised already a significant question or two about what AutoWLM is doing and whether or not it’s sacrificing a lot of query parallelism.

Where I’m at now with my test is this; every second, I spawn a thread, and in that thread, make a new connection to the database, and in that connection make a new table, insert four initial rows, and then begin to issue inserts using self-joins.

Those inserts, once the first thread has got down to its third or so self-join (which it does before the second thread begins), are all queued, like so;

dev=# select * from stv_wlm_query_state;
  xid  |  task  | query  | service_class | slot_count |       wlm_start_time       |      state       | queue_time | exec_time |    query_priority    
-------+--------+--------+---------------+------------+----------------------------+------------------+------------+-----------+----------------------
 16122 | 600287 | 601150 |           100 |          3 | 2023-05-29 12:31:20.639253 | QueuedWaiting    |   68859749 |         0 | High                
 16145 | 600291 | 601180 |           100 |          3 | 2023-05-29 12:31:25.34471  | QueuedWaiting    |   64154303 |         0 | High                
 16169 | 600295 | 601210 |           100 |          3 | 2023-05-29 12:31:31.297203 | QueuedWaiting    |   58201735 |         0 | High                
 16195 | 600299 | 601240 |           100 |          3 | 2023-05-29 12:31:36.164369 | QueuedWaiting    |   53334654 |         0 | High                
 16224 | 600303 | 601270 |           100 |          3 | 2023-05-29 12:31:39.692616 | QueuedWaiting    |   49806400 |         0 | High                
 16253 | 600307 | 601300 |           100 |          3 | 2023-05-29 12:31:44.737511 | QueuedWaiting    |   44761503 |         0 | High                
 16280 | 600312 | 601331 |           100 |          3 | 2023-05-29 12:31:49.807809 | QueuedWaiting    |   39691087 |         0 | High                
 16300 | 600316 | 601340 |           100 |          1 | 2023-05-29 12:32:29.496731 | Running          |          0 |      1990 | Normal              
 16112 | 600285 | 601137 |           100 |          3 | 2023-05-29 12:31:18.329078 | Running          |          0 |  71169857 | Normal              
(9 rows)

BTW, I had nothing to do with the query_priority values. I didn’t set them, and I don’t know how they are what they are.

You can also see where I set wlm_query_slot_count to 55, because each insert is using 3 slots, which I think is the number of slots currently configured in the main queue.

However, and here’s the kicker, after I spawn each thread, I issue a select on a dummy table (entirely independent table with four rows in), which I made at the beginning of the test code. Query result cache is off, of course.

That query always runs.

In the system tables, what I see is this;

          event_ts          | tsc 
----------------------------+-----
 2023-05-29 13:19:08.366717 |   1
 2023-05-29 13:19:09.095557 |   0
 2023-05-29 13:19:09.133869 |   1
 2023-05-29 13:19:09.360735 |   0
 2023-05-29 13:19:09.798422 |   1
 2023-05-29 13:19:09.958103 |   0
 2023-05-29 13:19:48.315023 |   1
 2023-05-29 13:19:48.471904 |   0
 2023-05-29 13:19:55.791994 |   1
 2023-05-29 13:19:55.854427 |   0
 2023-05-29 13:19:58.091691 |   1
 2023-05-29 13:19:58.102345 |   0
 2023-05-29 13:19:58.370454 |   3
 2023-05-29 13:19:58.500976 |   0
 2023-05-29 13:19:58.754763 |   3
 2023-05-29 13:19:58.772187 |   0
 2023-05-29 13:19:59.043939 |   3
 2023-05-29 13:19:59.782303 |   4
 2023-05-29 13:19:59.851293 |   3
 2023-05-29 13:19:59.972588 |   4
 2023-05-29 13:20:00.585337 |   3
 2023-05-29 13:20:01.128958 |   0
 2023-05-29 13:20:02.76454  |   1
 2023-05-29 13:20:02.793358 |   0

This is the number of slots worth of queries running in service class 100. Whenever the number of slots worth of queries changes, there’s a new row in the output.

When I issue an insert on its own, with wlm_query_slot_count to 55, I get 3 slots.

However, when I issue the select query, I see 4 slots worth of queries running (look toward the last eight or so rows of the output to see this).

So - in summary - my inserts are queued, but my selects are not, so I can’t induce a CSC, at least, not like this.

But here’s the kicker.

I can see no reason at all why those insert queries are not all running in parallel - at the very least, in part.

There’s no need for them to be serialized, they’re inserting to different tables.

AutoWLM on the face of it, with this ad hoc initial accidental investigation (I was really looking to provoke CSC) appears to be giving up a lot of performance.

Of course, how AutoWLM behaves on a busy cluster, I had no idea. Nor do I know how often the AutoWLM implementation changes. Nor do I know what odd or unusual behaviours it might have with different types of query - select, update, insert, delete.

I would say, given the internal implementations I’ve seen for basically all new features over the last some years for Redshift, it would be wilfully ignoring what’s been seen many times now, if we were to assume all will be well with AutoWLM.

One more odd little thing.

When I call reboot_cluster(), the backlog of queued queries is wiped, but it looks like the insert query which was currently executing is resumed after the cluster comes back. Which seems weird to me. Either everything should go, or nothing.

2023-05-30

boto3 / Living Hell

Every day I hope to have a full run through of the Serverless test script, every day I make test runs, with single workgroups/single iterations, and then come to do a full run, and the full run fails, and it’s boto which looks to be the problem.

I think boto3, with Serverless, is not thread-safe in Python, even with one client per thread.

I think the most recent test run failure, an hour ago, which ran for six hours and then became stuck, is because a call was made to boto which never returned.

Problems with boto have been my experience for the last three or so weeks.

At every stage, boto is unreliable, and then I need to write a wrapper around boto to cope, and then I find that wrapper needs a wrapper.

For example, you use boto to start up a workgroup.

Then you poll the workgroup until it is in state available.

Problem is, you can’t rely on that.

It may be that if you try to connect to the workgroup, you cannot connect.

So you then try to connect, to check the workgroup is really actually available.

Let’s say it is.

So now you’ve timed bring up, and want to shut the workgroup down.

It’s in the available state, so that should work, right?

Wrong.

You now need a wrapper around the boto command to delete a workgroup, until that command actually issues.

You then poll the list of workgroups until the workgroup is not listed.

Now you need to delete the namespace.

The workgroup doesn’t exist anymore, so that should work, right?

Wrong.

You now need a wrapper around the boto command to delete a namespace, until that command actually issues.

You get the picture.

Then there’s the problems I was having about ten days ago, where workgroups were getting stuck being deleted. This was happening if I tried to start/delete seven workgroups in parallel (a thread per boto session). There’s currently four of these, still in my AWS account - I’ve contacted billing to let them know, nothing has happened yet.

And now I find it looks like a boto command to delete a cluster was called, and never returned.

The one time I had a successful run through in the test script is when I serialized all boto commands, and that’s what I will now do.

This means the test script will take about four or five hours to run.

This is an improvement over the current state of play, where it takes that long not to run.

I am starting to think it might be wise to stop using the Python library boto, and use the AWS CLI instead, issuing system() calls from Python. That binary is I’m sure just a wrapper, but because I’ll be calling it as a sub-process, I’m thinking I may find it considerably more reliable.

2023-05-31

Serverless Update

So; I’ve made a minimal complete test run, one workgroup only, and on the results from that have written the code to emit the results to markdown.

I’ve serialized all boto operations with workgroups, as this looks necessary otherwise the script goes wrong in extremely time consuming and opaque ways, and that serialized script has been running for a few hours now, and will be left to run overnight.

Tomorrow, God willing, I will have the final results, and then can move to producing the write up.



Home 3D Друк Blog Bring-Up Times Consultancy Cross-Region Benchmarks Email Forums IRC Mailing Lists Reddit Redshift Price Tracker Redshift Version Tracker Redshift Workbench System Table Tracker The Known Universe Twitter White Papers