Pragma directive in EDMquerySchema, EDMruleSchema and EDMmapSchema (EDMschemaMap) to enable "passing aggregates by reference" instead of "passing aggregate by value". In EDMexpressX, the default way of "passing aggregates" is "by value". This means that (almost) each time an aggregate is stored or used as a parameter in a function/procedure call, a copy of the actual aggregate is made, and the aggregateID of the new aggregate is stored or passed to the called function/procedure. This "method" is a performance killer and a large "virtual memory consumer". Hence, this should be avoided whenever possible. When using "pass aggregate by reference", only the aggregateID is stored or passed to the called function/procedure. Until now, the option "PASS_AGGREGATES_BY_REFERENCE" in the relevant EDMinterface operations or in the relevant EDMsupervisor commands, had to be used to enable the "pass aggregates by reference" method. A pragma directive is introduced in all kinds of EDMexpressX schemata to enable (and disable) "PASS_AGGREGATES_BY_REFERENCE". The format of the pragma is :
--$EPP{pragma "VM.pass_aggregates_by_reference"="true"}
note that
- All "elements" in the Pragma directive are case insensitive.
- The actual value must be either true or false.
- The Pragma directive must be within (between) the actual SCHEMA - END_SCHEMA tokens.
It is recommended as good practise to place the Pragma directive as the first after the actual SCHEMA token. No warning/error message is produced when more than one "VM.pass_aggregates_by_reference" pragma is specified in the same schema. In such cases, the last one will be the only giving an effect at run-time. Hence, it is just confusing to have more than one "VM.pass_aggregates_by_reference" pragma in the same schema. The "old way" of specifying "PASS_AGGREGATES_BY_REFERENCE" is still available, but it is recommended to use the Pragma directive instead of the "old way" because the way of "passing aggregates" is an attribute of the actual schema, decided at schema design time, and not an option that can/should be enabled/disabled at run-time.