Skip to main content
For partitioned tables in Postgres, each individual partition is replicated and processed using Sync Streams (or legacy Sync Rules). To use the same queries and same output table name for each partition, use % for wildcard suffix matching of the table name:
streams:
  user_todos:
    queries:
      # Wildcard matches all user partition tables (e.g. users_2024, users_2025)
      - SELECT * FROM "users_%" WHERE id = auth.user_id()
      # Wildcard matches all todo partition tables (e.g. todos_2024, todos_2025)
      - SELECT * FROM "todos_%" AS todos WHERE user_id = auth.user_id()
The wildcard character can only be used as the last character in the table name. When using wildcard table names, the original table suffix is available in the special _table_suffix column. This works the same way in both Sync Streams and Sync Rules:
streams:
  active_todos:
    query: SELECT * FROM "todos_%" AS todos WHERE _table_suffix != 'archived'
When no table alias is provided, the original table name is preserved. publish_via_partition_root on the publication is not supported — the individual partitions must be published.