In (syntax) version 8 and later, various idiosyncrasies in the way
Vortex parses SQL expressions (as used in some assignments,
<if> statements, etc.) have been fixed, and some enhancements
added. Examples include:
- SQL functions can be called with a shorthand of <(someSqlFunc($arg))>, i.e. without needing to explicitly do an
assignment (and with no effect on
- An embedded dollar sign is consistently special - i.e. it
refers to a variable, or must be escaped by doubling it -
regardless of whether the statement is using a complex SQL
expression or a simple $operand$ $op$ $operand$ expression.
Caveat: this may affect the parsing of e.g. $rank or
$$rank in SQL statements.
- Quotes in SQL expressions are less HTML-strict, i.e. they
generally need not balance at the start and end of the HTML
"attribute" they appear in. E.g. <if stringformat("foo" )
= "foo"> (no space between open-parenthesis and first
double-quote, but space between second double-quote and
close-parenthesis) no longer causes an error.
- Quotes within (as opposed to surrounding) HTML "attributes"
sometimes were not translated correctly; e.g. statements like
"<$x=(stringformat("/foo"))>" (no spaces) could cause an
error in earlier (syntax) versions.
- All expressions (e.g. for
<while>) - even
simple $operand$ $op$ $operand$ ones - are evaluated by SQL (not
<sqlcp arrayconvert> always applies (to those
expressions too). Caveat: this may affect the behavior of
simple expressions that use multi-value variables, since in
previous (syntax) versions simple expressions were evaluated by
Vortex directly, and
arrayconvert did not take effect.
- A SQL expression may be given to
arrayconvert applies to both it and
syntaxversion pragma (here)
for more details. Also consider turning <sqlcp
arrayconvertwarnifv8change> to loose
(here) for a time in code that
has been converted from version 7 to 8, to catch an additional
possible behavior change only noticed at run time.
Copyright © Thunderstone Software Last updated: Jun 15 2022