Class Random

java.lang.Object
dev.frostlake.functions.BuiltInFunction
dev.frostlake.functions.scalar.math.Random

public class Random extends BuiltInFunction
RANDOM([seed]) — a pseudo-random signed 64-bit integer (not a fraction in [0, 1)). Without a seed each call is independent; with a seed the value is deterministic, so a constant seed yields the same value for every row (matching Snowflake). java.util.Random is fully qualified because this class shadows that name.

The seedless path is genuinely random, as Snowflake's is. It once returned a SplitMix64 scramble of a monotonic counter for test reproducibility; that was removed because nothing depended on it — no test asserts a value (they assert type, range and uniqueness, which real randomness satisfies and the counter satisfied only trivially) and the vendor suite never calls the function. The counter also restarted at zero in a fresh JVM, so it never delivered the WAL-replay exactness it appeared to promise: a replayed statement drew new values either way. Reproducing values across replay is a durability question about the log, not something a function can answer for itself.

  • Constructor Details

    • Random

      public Random()
  • Method Details

    • evaluate

      public Object evaluate(List<Object> args)
      Description copied from class: BuiltInFunction
      Computes the function's result over its already-evaluated argument values. A SQL NULL argument arrives as Java null, and returning null makes the SQL result NULL.
      Specified by:
      evaluate in class BuiltInFunction
      Parameters:
      args - the argument values, in call order
      Returns:
      the function's value for these arguments, or null for SQL NULL
    • getMinArgCount

      public int getMinArgCount()
      Description copied from class: BuiltInFunction
      The fewest arguments a call to this function may pass; fewer is an argument-count error.
      Specified by:
      getMinArgCount in class BuiltInFunction
      Returns:
      the minimum accepted argument count
    • getMaxArgCount

      public int getMaxArgCount()
      Description copied from class: BuiltInFunction
      The most arguments a call to this function may pass; Integer.MAX_VALUE marks a variadic function (see BuiltInFunction.isVariadic()).
      Specified by:
      getMaxArgCount in class BuiltInFunction
      Returns:
      the maximum accepted argument count