SQL::Ab...ct::Util(3)

๐Ÿ’– NAME ๐Ÿ’–

Okay so bestie, welcome to the SQL::Ab...ct::Util(3) page โ€” it's user contributed Perl documentation, and the module is SQL::Abstract::Util. It's literally a small collection of utilities for SQL::Abstract::Classic. Tiny helper era, no cap. โœจ

๐ŸŒŸ EXPORTABLE FUNCTIONS ๐ŸŒŸ

These are the exportable functions, bestie โ€” let's get into it. ๐Ÿ’…

๐Ÿ” is_plain_value ๐Ÿ”

This one determines if the supplied argument is a plain value as understood by this module. The vibe check says it's a plain value if any of these are true:

  • The value is undef
  • The value is a non-reference
  • The value is an object with stringification overloading
  • The value is of the form { -value => $anything }

On failure it returns undef; on success it returns a scalar reference to the original supplied argument. Periodt. ๐ŸŽ€

๐Ÿ“ Note ๐Ÿ“

Okay so the stringification overloading detection is rather advanced โ€” it's not just checking for a "" overload, because if that fails it also checks for enabled autogenerated versions of "", based on either 0+ or bool. Highkey thorough. ๐Ÿ‘‘

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). ๐Ÿซถ

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. ๐Ÿ’€

๐Ÿ”ฎ is_literal_value ๐Ÿ”ฎ

This one determines if the supplied argument is a literal value as understood by this module. It's giving literal SQL energy; the forms are:

  • \$sql_string
  • \[ $sql_string, @bind_values ]

On failure it returns undef; on success it returns an array reference containing the unpacked version of the supplied literal SQL and bind values. Slay. ๐Ÿ’–


๐Ÿ’– Signing off with perl v5.42.0, dated 2020-06-17, from the SQL::Ab...ct::Util(3) page. Stay iconic, bestie. ๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from