Note that in version 7 and earlier, the variable $null
was used
as the default for the <SQL>
NULL
option (as
$null
predated the NULL
option itself). However, this
left an important part of the behavior of a <SQL>
statement
unspecified by the statement itself, and potentially dependent upon a
variable assignment (<$null = ...>) forgotten elsewhere - such
ambiguity could cause problems.
Thus, in version 8 and later, the $null
variable has no effect
on <SQL>
statements, and is repurposed as a constant with no
values, for situations where that is useful (e.g. passing a no-values
- as opposed to single-value empty-string - argument to a parameter).
Modifications to it are not permitted, and result in the runtime error
"$null is a constant and may not be modified".
For legacy code, this behavior change can be reverted by setting
compatibilityversion
(here)
to 7 or less to make the NULL
option default to $null
(and the latter be modifiable).
Note that as this is a dynamic behavior change and not a syntax
change, it is controlled at runtime by compatibilityversion
(via <vxcp>
or the like), not at compile time by
syntaxversion
(via pragma
or the like).
The --translate-from-version option
(here) will warn when it detects
$null assignments.