4.6. Session Property Managers

    Add an file with the following contents to enable the built-in manager that reads a JSON config file:

    This configuration file consists of a list of match rules, each of which specify a list of conditions that the query must meet, and a list of session properties that should be applied by default. All matching rules contribute to constructing a list of session properties. Rules are applied in the order they are specified. Rules specified later in the file override values for properties that have been previously encountered.

    • user (optional): regex to match against user name.
    • source (optional): regex to match against source string.
      • DATA_DEFINITION: Queries that alter/create/drop the metadata of schemas/tables/views, and that manage prepared statements, privileges, sessions, and transactions.
      • DELETE: DELETE queries.
      • DESCRIBE: DESCRIBE, DESCRIBE INPUT, DESCRIBE OUTPUT, and SHOW queries.
      • EXPLAIN: EXPLAIN queries.
      • INSERT: and CREATE TABLE AS queries.
      • SELECT: SELECT queries.
    • clientTags (optional): list of tags. To match, every tag in this list must be in the list of client-provided tags associated with the query.

    • sessionProperties: map with string keys and values. Each entry is a system or catalog property name and corresponding value. Values must be specified as strings, no matter the actual data type.

    Example

    • All queries running under the global resource group must have an execution time limit of 8 hours.
    • All interactive queries are routed to subgroups under the global.interactive group, and have an execution time limit of 1 hour (tighter than the constraint on global).
    • All ETL queries (tagged with ‘etl’) are routed to subgroups under the global.pipeline group, and must be configured with certain properties to control writer behavior.

    These requirements can be expressed with the following rules:

    1. [
    2. {
    3. "group": "global.*",
    4. "sessionProperties": {
    5. "query_max_execution_time": "8h",
    6. },
    7. {
    8. "sessionProperties": {
    9. "query_max_execution_time": "1h"
    10. }
    11. },
    12. {
    13. "group": "global.pipeline.*",
    14. "clientTags": ["etl"],
    15. "sessionProperties": {
    16. "scale_writers": "true",
    17. "writer_min_size": "1GB"
    18. }
    19. }