SQL::Abstract::Util - Small collection of utilities for SQL::Abstract::Classic
Determines if the supplied argument is a plain value as understood by this module:
The value is undef
undef
The value is a non-reference
The value is an object with stringification overloading
The value is of the form { -value => $anything }
{ -value => $anything }
On failure returns undef, on success returns a scalar reference to the original supplied argument.
Note
The stringification overloading detection is rather advanced: it takes into consideration not only the presence of a "" overload, but if that fails also checks for enabled autogenerated versions of "", based on either 0+ or bool.
""
0+
bool
Unfortunately testing in the field indicates that this detection may tickle a latent bug in perl versions before 5.018, but only when very large numbers of stringifying objects are involved. At the time of writing ( Sep 2014 ) there is no clear explanation of the direct cause, nor is there a manageably small test case that reliably reproduces the problem.
If you encounter any of the following exceptions in random places within your application stack - this module may be to blame:
Operation "ne": no method found, left argument in overloaded package <something>, right argument in overloaded package <something>
or perhaps even
Stub found while resolving method "???" overloading """" in package <something>
If you fall victim to the above - please attempt to reduce the problem to something that could be sent to the SQL::Abstract::Classic developers (either publicly or privately). As a workaround in the meantime you can set $ENV{SQLA_ISVALUE_IGNORE_AUTOGENERATED_STRINGIFICATION} to a true value, which will most likely eliminate your problem (at the expense of not being able to properly detect exotic forms of stringification).
$ENV{SQLA_ISVALUE_IGNORE_AUTOGENERATED_STRINGIFICATION}
This notice and environment variable will be removed in a future version, as soon as the underlying problem is found and a reliable workaround is devised.
Determines if the supplied argument is a literal value as understood by this module:
\$sql_string
\[ $sql_string, @bind_values ]
On failure returns undef, on success returns an array reference containing the unpacked version of the supplied literal SQL and bind values.
To install SQL::Abstract::Classic, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SQL::Abstract::Classic
CPAN shell
perl -MCPAN -e shell install SQL::Abstract::Classic
For more information on module installation, please visit the detailed CPAN module installation guide.