Runtime View#
This chapter describes relevant runtime interactions for the main use cases and extension points.
Terms use the definitions from System Requirements.
User And Role Lifecycle Planning#
Exact Principal Identifier Lifecycle#
dsn~exact-principal-identifier-lifecycle~1
Given an Ansible Operator supplies a user or role name as either a raw exact value or a delimited SQL identifier
When the module validates parameters, probes existing metadata, and plans CREATE, ALTER, or DROP statements
Then the runtime converts the input to one exact identifier value, uses that value for metadata lookups, and renders generated SQL with escaped delimited identifiers without uppercasing the name
Status: draft
Covers:
scn~exact-principal-identifiers-are-preserved~1
Needs: impl, utest, itest
Exasol Info Read-Only Metadata Retrieval#
dsn~exasol-info-read-only-metadata-retrieval~3
Given an Ansible Operator requests information from exasol_info
When the module reads the required server metadata
Then it returns version, database name, and cluster size
And the result always reports changed=false
And it queries cluster events through
EXA_STATISTICS.EXA_SYSTEM_EVENTS, the schema that owns Exasol statistical
system tables
Status: draft
Covers:
scn~ansible-modules.exasol-info-returns-version-and-cluster-size~1
Needs: impl, utest, itest
Exasol Script Execution Via Pyexasol#
dsn~exasol-script-execution-via-pyexasol~1
Given an Ansible Operator supplies a multi-statement SQL script to exasol_script
When the runtime executes it through ExaConnection.execute_sql_script
Then pyexasol splits and executes the statements in order, including script bodies terminated by a standalone / line
And the runtime derives changed and executed_queries from the returned statements without a second, in-collection SQL-script parser
And check mode classifies the whole script as read-only or not, using the same heuristic as exasol_query, instead of executing it
Status: draft
Covers:
scn~ansible-modules.exasol-script-execute-multi-statement-script-against-backend~1
Needs: impl, utest, itest
Physical Schema Lifecycle Planning#
Intrinsic Schema Property Reconciliation#
dsn~intrinsic-schema-property-reconciliation~1
Given an Ansible Operator requests physical schema state
When the schema runtime reads EXA_SCHEMAS and EXA_ALL_OBJECT_SIZES
Then it plans creation or rename before comment and raw-size changes, plans
CHANGE OWNER last, and omits statements for properties that already match
And omitted owner, comment, rename, and raw-size-limit options remain unmanaged
And raw_size_limit=-1 plans SET RAW_SIZE_LIMIT = NULL only when a
limit is currently set
And check mode returns the same plan without executing it
Status: draft
Covers:
scn~ansible-modules.exasol-schema-create-with-owner~1scn~ansible-modules.exasol-schema-comment-check-mode~1scn~ansible-modules.exasol-schema-clear-raw-size-limit~1
Needs: impl, utest, itest
Explicit Schema Drop Cascade#
dsn~explicit-schema-drop-cascade~1
Given an Ansible Operator requests an existing schema to be absent
When the runtime plans the drop
Then it emits DROP SCHEMA by default and appends CASCADE only when the
operator explicitly enables the cascade option
Status: draft
Covers:
scn~ansible-modules.exasol-schema-drop-non-empty-without-cascade~1
Needs: impl, utest, itest
Schema Identifier Comparison Follows The Connected Database#
dsn~schema-identifier-comparison-follows-session~1
Given an Ansible Operator manages a schema with an exact identifier
When the schema runtime reads schema metadata and plans lifecycle SQL
Then it reads SQL_IDENTIFIER_COMPARISON from SYS.EXA_PARAMETERS for
the connected database when the server exposes it, otherwise using the documented
CASE SENSITIVE default
And it compares schema names exactly for CASE SENSITIVE and without case
for IGNORE CASE
And it rejects multiple case-insensitive metadata matches as ambiguous
And owner comparison remains case-insensitive because owners are users or
roles
Status: draft
Covers:
scn~ansible-modules.exasol-schema-identifiers-follow-session-comparison~1
Needs: impl, utest, itest