-
HOCON configuration files (
--configargument) - command-line arguments
-
Java system properties (
-Darguments tojavacommand) - environment variables
Consult the command
./scribe.jar pipeline --help-verbose for further information on individual configuration
items, and the conventions used to specify them in the above forms.Deploying new Daml packages (DARs) to the Participant Node does not require restarting PQS. When PQS encounters an unknown package while processing events, it fetches the missing packages from the Participant Node. This could pause ingestion for up to tens of seconds. See Dynamic Daml package reload for details.
Transactions data source
To understand how PQS stores data, you need to understand the Ledger Model. In simple terms, the Daml ledger is composed of a sequence of transactions, which contain events. Events can be:- Create: creation of contracts / interface views / divulgences
- Exercise: of a choice of contracts / interface views
- Archive: end of the lifetime of contracts / interface views
--pipeline-datasource configuration. The following table shows the
differences between the two modes, in terms of data availability via the respective SQL functions:
Contract filtering
--pipeline-filter-contracts specifies a filter expression to determine which the Daml templates, interface views
and choices to include. A filter expression is a simple wildcard inclusion (*) with basic boolean logic (&
! | ( )), where whitespace is ignored. For example:
-
*: everything (default) -
pkg:*: everything in this package -
pkg@=1: everything in this package that has major version1.x.x -
pkg@>=1.2.3: everything in this package starting with version1.2.3inclusively -
foo@1.2.3|bar@3.2.1: everything in pinpointed packagesfooat version1.2.3and packagebarat version3.2.1 -
pkg:a.b.c.Bar: just this one fully qualified name for templateBar -
a.b.c.*: all members of thea.b.cnamespace -
* & !pkg:a.b.c.Bar: everything except this one fully qualified name -
(a.b.c.Foo | a.b.c.Bar): these two fully qualified names -
(a.b.c.* & !(a.b.c.Foo | a.b.c.Bar) | g.e.f.Baz): everything ina.b.cexcept forFooandBar, and also includeg.e.f.Baz -
a.b.c.Foo & a.b.c.Bar: error (the identifier can’t be both)
There are further conditions placed upon the filtering of templates and interfaces to avoid potential ambiguity.
It is required to include any filter for:
- All interface views of included templates
- All templates of included interface views
Party filtering
Similarly, the--pipeline-filter-parties option specifies a filter expression to determine which
parties to supply data for. For example:
-
*: everything (default) -
Alice::* | Bob::*: any party with anAliceorBobhint -
Alice::122055fc4b190e3ff438587b699495a4b6388e911e2305f7e013af160f49a76080ab: just this one party -
* & !Alice::*: all parties except those with anAlicehint -
Alice* | Bob* | (Charlie* & !(Charlie3::*)):AliceandBobparties, as well asCharlieexceptCharlie3
--pipeline-filter-parties cannot be used to access data for parties for which the
user is not authorized.
Explicit contract disclosure
--pipeline-filter-metadata specifies an inclusion filter expression to determine the Daml templates and interface
views to capture metadata for. Same syntax as section above applies. Captured data will be available in the
metadata column (bytea PostgreSQL type) in the query functions output. This column stores the contents of
created_event_blob (see How do stakeholders disclose contracts to submitters?) from the respective event.
JSON encoding configuration
By default PQS stores the payloads in JSON format using strings for numeric types. This is the default because numbers in JSON are backed by double-precision floating point numbers, which can lead to loss of precision for large integers. If you want to store numbers as integers and can tolerate loss of precision in numbers, you can use the--target-encoding-numericasstring and --target-encoding-int64asstring options to change the default behavior.
Another option allows to store nullable fields as JSON nulls instead of omitting nullable fields from the records.
PQS stores nullable fields as JSON nulls by default, but you can change this behavior using the
--target-encoding-excludenulls option.