diff --git a/docs-main/sdks-tools/development-tools/pqs.mdx b/docs-main/sdks-tools/development-tools/pqs.mdx index 40c26d10b..6bf01145d 100644 --- a/docs-main/sdks-tools/development-tools/pqs.mdx +++ b/docs-main/sdks-tools/development-tools/pqs.mdx @@ -7,7 +7,6 @@ import DamlDocsSdksToolsDevelopmentToolsPqsL62 from "/snippets/daml-docs/sdks-to import DamlDocsSdksToolsDevelopmentToolsPqsL73 from "/snippets/daml-docs/sdks-tools_development-tools_pqs_L73.mdx"; import DamlDocsSdksToolsDevelopmentToolsPqsL85 from "/snippets/daml-docs/sdks-tools_development-tools_pqs_L85.mdx"; import DamlDocsSdksToolsDevelopmentToolsPqsL96 from "/snippets/daml-docs/sdks-tools_development-tools_pqs_L96.mdx"; -import DamlDocsSdksToolsDevelopmentToolsPqsL108 from "/snippets/daml-docs/sdks-tools_development-tools_pqs_L108.mdx"; PQS (Participant Query Store) subscribes to a validator's transaction stream and projects contract data into a PostgreSQL database. Your backend queries this database with standard SQL, enabling: filtered queries, aggregations, joins, and full-text search that would be impractical through the Ledger API alone. @@ -294,15 +293,17 @@ PQS is tested for compatibility with multiple versions of dependencies, as follo ## SQL Query Examples +These examples use the PQS SQL API — a set of provisioned functions that are the only database artifacts applications should query. See the [PQS SQL API reference](/appdev/reference/pqs-sql-reference) for the full function list and returned columns. + ### Active Contracts Query all active contracts for a specific template: -### Transaction History +### Recent Create Events -View recent transactions for a party: +View recent create events for a party: @@ -314,17 +315,14 @@ Count active contracts by template: ### Party Filtering -Find all contracts visible to a specific party: +Find contracts where a specific party is a signatory: ## Performance Optimization -### Indexes - -Add indexes on columns you query frequently. PQS creates basic indexes on startup, but your application may benefit from additional ones: - - +To speed up payload filters, create JSONB indexes with the supported `create_index_for_contract` procedure ([JSONB indexing](/appdev/reference/pqs-sql-reference#jsonb-indexing)); +for host and PostgreSQL tuning, see [Optimize](/sdks-tools/development-tools/pqs/optimize). ### Connection Pooling @@ -332,9 +330,8 @@ Use a connection pool (like HikariCP for Java or `pg-pool` for Node.js) between ### Query Patterns -- Avoid `SELECT *` on large tables; specify the columns you need -- Use `template_id` filters to narrow the dataset before applying payload filters -- For time-range queries, add indexes on `effective_at` or `created_at` columns +- Avoid `SELECT *` on large result sets; specify the columns you need +- Use the `name` argument of the table functions (for example `active('Licensing:License')`) to narrow the dataset before applying payload filters ## High Availability and Database Sharing diff --git a/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L62.mdx b/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L62.mdx index 359e04220..8c4f5f864 100644 --- a/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L62.mdx +++ b/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L62.mdx @@ -1,6 +1,5 @@ ```sql -SELECT * -FROM active_contracts -WHERE template_id = 'Licensing:License' - AND payload->>'owner' = 'Alice::1234...'; +SELECT contract_id, payload +FROM active('Licensing:License') +WHERE payload->>'owner' = 'Alice::1234...'; ``` diff --git a/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L73.mdx b/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L73.mdx index e16696aad..e41241c9c 100644 --- a/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L73.mdx +++ b/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L73.mdx @@ -1,7 +1,7 @@ ```sql -SELECT event_id, template_id, event_type, effective_at -FROM events -WHERE witness_parties @> ARRAY['Alice::1234...'] -ORDER BY effective_at DESC +SELECT contract_id, template_fqn, created_effective_at +FROM creates() +WHERE witnesses @> ARRAY['Alice::1234...'] +ORDER BY created_effective_at DESC LIMIT 50; ``` diff --git a/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L85.mdx b/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L85.mdx index 6018a1e94..a704a4fde 100644 --- a/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L85.mdx +++ b/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L85.mdx @@ -1,6 +1,5 @@ ```sql -SELECT template_id, COUNT(*) as contract_count -FROM active_contracts -GROUP BY template_id -ORDER BY contract_count DESC; +SELECT template_fqn, count +FROM summary_active() +ORDER BY count DESC; ``` diff --git a/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L96.mdx b/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L96.mdx index b4021b4d6..8106b7775 100644 --- a/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L96.mdx +++ b/docs-main/snippets/daml-docs/sdks-tools_development-tools_pqs_L96.mdx @@ -1,5 +1,5 @@ ```sql -SELECT contract_id, template_id, payload -FROM active_contracts -WHERE stakeholders @> ARRAY['Alice::1234...']; +SELECT contract_id, template_fqn, payload +FROM active() +WHERE signatories @> ARRAY['Alice::1234...']; ```