diff --git a/docs/generated/sql/aggregates.md b/docs/generated/sql/aggregates.md index d229612be720..e92621be8077 100644 --- a/docs/generated/sql/aggregates.md +++ b/docs/generated/sql/aggregates.md @@ -1,475 +1,475 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
array_agg(arg1: bool) → bool[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: bytes) → bytes[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: date) → date[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: decimal) → decimal[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: float) → float[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: inet) → inet[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: int) → int[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: interval) → interval[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: string) → string[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: time) → time[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: timestamp) → timestamp[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: timestamptz) → timestamptz[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: uuid) → uuid[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: anyenum) → anyenum[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: box2d) → box2d[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: geography) → geography[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: geometry) → geometry[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: jsonb) → jsonb[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: oid) → oid[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: timetz) → timetz[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: tuple) → tuple[]

Aggregates the selected values into an array.

-
Immutable
array_agg(arg1: varbit) → varbit[]

Aggregates the selected values into an array.

-
Immutable
avg(arg1: decimal) → decimal

Calculates the average of the selected values.

-
Immutable
avg(arg1: float) → float

Calculates the average of the selected values.

-
Immutable
avg(arg1: int) → decimal

Calculates the average of the selected values.

-
Immutable
avg(arg1: interval) → interval

Calculates the average of the selected values.

-
Immutable
bit_and(arg1: int) → int

Calculates the bitwise AND of all non-null input values, or null if none.

-
Immutable
bit_and(arg1: varbit) → varbit

Calculates the bitwise AND of all non-null input values, or null if none.

-
Immutable
bit_or(arg1: int) → int

Calculates the bitwise OR of all non-null input values, or null if none.

-
Immutable
bit_or(arg1: varbit) → varbit

Calculates the bitwise OR of all non-null input values, or null if none.

-
Immutable
bool_and(arg1: bool) → bool

Calculates the boolean value of ANDing all selected values.

-
Immutable
bool_or(arg1: bool) → bool

Calculates the boolean value of ORing all selected values.

-
Immutable
concat_agg(arg1: bytes) → bytes

Concatenates all selected values.

-
Immutable
concat_agg(arg1: string) → string

Concatenates all selected values.

-
Immutable
corr(arg1: decimal, arg2: decimal) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
corr(arg1: decimal, arg2: float) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
corr(arg1: decimal, arg2: int) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
corr(arg1: float, arg2: decimal) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
corr(arg1: float, arg2: float) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
corr(arg1: float, arg2: int) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
corr(arg1: int, arg2: decimal) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
corr(arg1: int, arg2: float) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
corr(arg1: int, arg2: int) → float

Calculates the correlation coefficient of the selected values.

-
Immutable
count(arg1: anyelement) → int

Calculates the number of selected elements.

-
Immutable
count_rows() → int

Calculates the number of rows.

-
Immutable
covar_pop(arg1: decimal, arg2: decimal) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_pop(arg1: decimal, arg2: float) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_pop(arg1: decimal, arg2: int) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_pop(arg1: float, arg2: decimal) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_pop(arg1: float, arg2: float) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_pop(arg1: float, arg2: int) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_pop(arg1: int, arg2: decimal) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_pop(arg1: int, arg2: float) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_pop(arg1: int, arg2: int) → float

Calculates the population covariance of the selected values.

-
Immutable
covar_samp(arg1: decimal, arg2: decimal) → float

Calculates the sample covariance of the selected values.

-
Immutable
covar_samp(arg1: decimal, arg2: float) → float

Calculates the sample covariance of the selected values.

-
Immutable
covar_samp(arg1: decimal, arg2: int) → float

Calculates the sample covariance of the selected values.

-
Immutable
covar_samp(arg1: float, arg2: decimal) → float

Calculates the sample covariance of the selected values.

-
Immutable
covar_samp(arg1: float, arg2: float) → float

Calculates the sample covariance of the selected values.

-
Immutable
covar_samp(arg1: float, arg2: int) → float

Calculates the sample covariance of the selected values.

-
Immutable
covar_samp(arg1: int, arg2: decimal) → float

Calculates the sample covariance of the selected values.

-
Immutable
covar_samp(arg1: int, arg2: float) → float

Calculates the sample covariance of the selected values.

-
Immutable
covar_samp(arg1: int, arg2: int) → float

Calculates the sample covariance of the selected values.

-
Immutable
every(arg1: bool) → bool

Calculates the boolean value of ANDing all selected values.

-
Immutable
json_agg(arg1: anyelement) → jsonb

Aggregates values as a JSON or JSONB array.

-
Stable
json_object_agg(arg1: string, arg2: anyelement) → jsonb

Aggregates values as a JSON or JSONB object.

-
Stable
jsonb_agg(arg1: anyelement) → jsonb

Aggregates values as a JSON or JSONB array.

-
Stable
jsonb_object_agg(arg1: string, arg2: anyelement) → jsonb

Aggregates values as a JSON or JSONB object.

-
Stable
max(arg1: bool) → bool

Identifies the maximum selected value.

-
Immutable
max(arg1: bytes) → bytes

Identifies the maximum selected value.

-
Immutable
max(arg1: date) → date

Identifies the maximum selected value.

-
Immutable
max(arg1: decimal) → decimal

Identifies the maximum selected value.

-
Immutable
max(arg1: float) → float

Identifies the maximum selected value.

-
Immutable
max(arg1: inet) → inet

Identifies the maximum selected value.

-
Immutable
max(arg1: int) → int

Identifies the maximum selected value.

-
Immutable
max(arg1: interval) → interval

Identifies the maximum selected value.

-
Immutable
max(arg1: string) → string

Identifies the maximum selected value.

-
Immutable
max(arg1: time) → time

Identifies the maximum selected value.

-
Immutable
max(arg1: timestamp) → timestamp

Identifies the maximum selected value.

-
Immutable
max(arg1: timestamptz) → timestamptz

Identifies the maximum selected value.

-
Immutable
max(arg1: uuid) → uuid

Identifies the maximum selected value.

-
Immutable
max(arg1: anyenum) → anyenum

Identifies the maximum selected value.

-
Immutable
max(arg1: box2d) → box2d

Identifies the maximum selected value.

-
Immutable
max(arg1: collatedstring{*}) → collatedstring{*}

Identifies the maximum selected value.

-
Immutable
max(arg1: geography) → geography

Identifies the maximum selected value.

-
Immutable
max(arg1: geometry) → geometry

Identifies the maximum selected value.

-
Immutable
max(arg1: jsonb) → jsonb

Identifies the maximum selected value.

-
Immutable
max(arg1: oid) → oid

Identifies the maximum selected value.

-
Immutable
max(arg1: timetz) → timetz

Identifies the maximum selected value.

-
Immutable
max(arg1: varbit) → varbit

Identifies the maximum selected value.

-
Immutable
min(arg1: bool) → bool

Identifies the minimum selected value.

-
Immutable
min(arg1: bytes) → bytes

Identifies the minimum selected value.

-
Immutable
min(arg1: date) → date

Identifies the minimum selected value.

-
Immutable
min(arg1: decimal) → decimal

Identifies the minimum selected value.

-
Immutable
min(arg1: float) → float

Identifies the minimum selected value.

-
Immutable
min(arg1: inet) → inet

Identifies the minimum selected value.

-
Immutable
min(arg1: int) → int

Identifies the minimum selected value.

-
Immutable
min(arg1: interval) → interval

Identifies the minimum selected value.

-
Immutable
min(arg1: string) → string

Identifies the minimum selected value.

-
Immutable
min(arg1: time) → time

Identifies the minimum selected value.

-
Immutable
min(arg1: timestamp) → timestamp

Identifies the minimum selected value.

-
Immutable
min(arg1: timestamptz) → timestamptz

Identifies the minimum selected value.

-
Immutable
min(arg1: uuid) → uuid

Identifies the minimum selected value.

-
Immutable
min(arg1: anyenum) → anyenum

Identifies the minimum selected value.

-
Immutable
min(arg1: box2d) → box2d

Identifies the minimum selected value.

-
Immutable
min(arg1: collatedstring{*}) → collatedstring{*}

Identifies the minimum selected value.

-
Immutable
min(arg1: geography) → geography

Identifies the minimum selected value.

-
Immutable
min(arg1: geometry) → geometry

Identifies the minimum selected value.

-
Immutable
min(arg1: jsonb) → jsonb

Identifies the minimum selected value.

-
Immutable
min(arg1: oid) → oid

Identifies the minimum selected value.

-
Immutable
min(arg1: timetz) → timetz

Identifies the minimum selected value.

-
Immutable
min(arg1: varbit) → varbit

Identifies the minimum selected value.

-
Immutable
percentile_cont(arg1: float) → float

Continuous percentile: returns a float corresponding to the specified fraction in the ordering, interpolating between adjacent input floats if needed.

-
Immutable
percentile_cont(arg1: float) → interval

Continuous percentile: returns an interval corresponding to the specified fraction in the ordering, interpolating between adjacent input intervals if needed.

-
Immutable
percentile_cont(arg1: float[]) → float[]

Continuous percentile: returns floats corresponding to the specified fractions in the ordering, interpolating between adjacent input floats if needed.

-
Immutable
percentile_cont(arg1: float[]) → interval[]

Continuous percentile: returns intervals corresponding to the specified fractions in the ordering, interpolating between adjacent input intervals if needed.

-
Immutable
percentile_disc(arg1: float) → anyelement

Discrete percentile: returns the first input value whose position in the ordering equals or exceeds the specified fraction.

-
Immutable
percentile_disc(arg1: float[]) → anyelement

Discrete percentile: returns input values whose position in the ordering equals or exceeds the specified fractions.

-
Immutable
regr_avgx(arg1: decimal, arg2: decimal) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgx(arg1: decimal, arg2: float) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgx(arg1: decimal, arg2: int) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgx(arg1: float, arg2: decimal) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgx(arg1: float, arg2: float) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgx(arg1: float, arg2: int) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgx(arg1: int, arg2: decimal) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgx(arg1: int, arg2: float) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgx(arg1: int, arg2: int) → float

Calculates the average of the independent variable (sum(X)/N).

-
Immutable
regr_avgy(arg1: decimal, arg2: decimal) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_avgy(arg1: decimal, arg2: float) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_avgy(arg1: decimal, arg2: int) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_avgy(arg1: float, arg2: decimal) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_avgy(arg1: float, arg2: float) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_avgy(arg1: float, arg2: int) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_avgy(arg1: int, arg2: decimal) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_avgy(arg1: int, arg2: float) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_avgy(arg1: int, arg2: int) → float

Calculates the average of the dependent variable (sum(Y)/N).

-
Immutable
regr_count(arg1: decimal, arg2: decimal) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_count(arg1: decimal, arg2: float) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_count(arg1: decimal, arg2: int) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_count(arg1: float, arg2: decimal) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_count(arg1: float, arg2: float) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_count(arg1: float, arg2: int) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_count(arg1: int, arg2: decimal) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_count(arg1: int, arg2: float) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_count(arg1: int, arg2: int) → int

Calculates number of input rows in which both expressions are nonnull.

-
Immutable
regr_intercept(arg1: decimal, arg2: decimal) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_intercept(arg1: decimal, arg2: float) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_intercept(arg1: decimal, arg2: int) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_intercept(arg1: float, arg2: decimal) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_intercept(arg1: float, arg2: float) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_intercept(arg1: float, arg2: int) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_intercept(arg1: int, arg2: decimal) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_intercept(arg1: int, arg2: float) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_intercept(arg1: int, arg2: int) → float

Calculates y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_r2(arg1: decimal, arg2: decimal) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_r2(arg1: decimal, arg2: float) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_r2(arg1: decimal, arg2: int) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_r2(arg1: float, arg2: decimal) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_r2(arg1: float, arg2: float) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_r2(arg1: float, arg2: int) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_r2(arg1: int, arg2: decimal) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_r2(arg1: int, arg2: float) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_r2(arg1: int, arg2: int) → float

Calculates square of the correlation coefficient.

-
Immutable
regr_slope(arg1: decimal, arg2: decimal) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_slope(arg1: decimal, arg2: float) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_slope(arg1: decimal, arg2: int) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_slope(arg1: float, arg2: decimal) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_slope(arg1: float, arg2: float) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_slope(arg1: float, arg2: int) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_slope(arg1: int, arg2: decimal) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_slope(arg1: int, arg2: float) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_slope(arg1: int, arg2: int) → float

Calculates slope of the least-squares-fit linear equation determined by the (X, Y) pairs.

-
Immutable
regr_sxx(arg1: decimal, arg2: decimal) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxx(arg1: decimal, arg2: float) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxx(arg1: decimal, arg2: int) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxx(arg1: float, arg2: decimal) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxx(arg1: float, arg2: float) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxx(arg1: float, arg2: int) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxx(arg1: int, arg2: decimal) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxx(arg1: int, arg2: float) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxx(arg1: int, arg2: int) → float

Calculates sum of squares of the independent variable.

-
Immutable
regr_sxy(arg1: decimal, arg2: decimal) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_sxy(arg1: decimal, arg2: float) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_sxy(arg1: decimal, arg2: int) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_sxy(arg1: float, arg2: decimal) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_sxy(arg1: float, arg2: float) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_sxy(arg1: float, arg2: int) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_sxy(arg1: int, arg2: decimal) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_sxy(arg1: int, arg2: float) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_sxy(arg1: int, arg2: int) → float

Calculates sum of products of independent times dependent variable.

-
Immutable
regr_syy(arg1: decimal, arg2: decimal) → float

Calculates sum of squares of the dependent variable.

-
Immutable
regr_syy(arg1: decimal, arg2: float) → float

Calculates sum of squares of the dependent variable.

-
Immutable
regr_syy(arg1: decimal, arg2: int) → float

Calculates sum of squares of the dependent variable.

-
Immutable
regr_syy(arg1: float, arg2: decimal) → float

Calculates sum of squares of the dependent variable.

-
Immutable
regr_syy(arg1: float, arg2: float) → float

Calculates sum of squares of the dependent variable.

-
Immutable
regr_syy(arg1: float, arg2: int) → float

Calculates sum of squares of the dependent variable.

-
Immutable
regr_syy(arg1: int, arg2: decimal) → float

Calculates sum of squares of the dependent variable.

-
Immutable
regr_syy(arg1: int, arg2: float) → float

Calculates sum of squares of the dependent variable.

-
Immutable
regr_syy(arg1: int, arg2: int) → float

Calculates sum of squares of the dependent variable.

-
Immutable
sqrdiff(arg1: decimal) → decimal

Calculates the sum of squared differences from the mean of the selected values.

-
Immutable
sqrdiff(arg1: float) → float

Calculates the sum of squared differences from the mean of the selected values.

-
Immutable
sqrdiff(arg1: int) → decimal

Calculates the sum of squared differences from the mean of the selected values.

-
Immutable
st_collect(arg1: geometry) → geometry

Collects geometries into a GeometryCollection or multi-type as appropriate.

-
Immutable
st_extent(arg1: geometry) → box2d

Forms a Box2D that encapsulates all provided geometries.

-
Immutable
st_makeline(arg1: geometry) → geometry

Forms a LineString from Point, MultiPoint or LineStrings. Other shapes will be ignored.

-
Immutable
st_memcollect(arg1: geometry) → geometry

Collects geometries into a GeometryCollection or multi-type as appropriate.

-
Immutable
st_memunion(arg1: geometry) → geometry

Applies a spatial union to the geometries provided.

-
Immutable
st_union(arg1: geometry) → geometry

Applies a spatial union to the geometries provided.

-
Immutable
stddev(arg1: decimal) → decimal

Calculates the standard deviation of the selected values.

-
Immutable
stddev(arg1: float) → float

Calculates the standard deviation of the selected values.

-
Immutable
stddev(arg1: int) → decimal

Calculates the standard deviation of the selected values.

-
Immutable
stddev_pop(arg1: decimal) → decimal

Calculates the population standard deviation of the selected values.

-
Immutable
stddev_pop(arg1: float) → float

Calculates the population standard deviation of the selected values.

-
Immutable
stddev_pop(arg1: int) → decimal

Calculates the population standard deviation of the selected values.

-
Immutable
stddev_samp(arg1: decimal) → decimal

Calculates the standard deviation of the selected values.

-
Immutable
stddev_samp(arg1: float) → float

Calculates the standard deviation of the selected values.

-
Immutable
stddev_samp(arg1: int) → decimal

Calculates the standard deviation of the selected values.

-
Immutable
string_agg(arg1: bytes, arg2: bytes) → bytes

Concatenates all selected values using the provided delimiter.

-
Immutable
string_agg(arg1: string, arg2: string) → string

Concatenates all selected values using the provided delimiter.

-
Immutable
sum(arg1: decimal) → decimal

Calculates the sum of the selected values.

-
Immutable
sum(arg1: float) → float

Calculates the sum of the selected values.

-
Immutable
sum(arg1: int) → decimal

Calculates the sum of the selected values.

-
Immutable
sum(arg1: interval) → interval

Calculates the sum of the selected values.

-
Immutable
sum_int(arg1: int) → int

Calculates the sum of the selected values.

-
Immutable
var_pop(arg1: decimal) → decimal

Calculates the population variance of the selected values.

-
Immutable
var_pop(arg1: float) → float

Calculates the population variance of the selected values.

-
Immutable
var_pop(arg1: int) → decimal

Calculates the population variance of the selected values.

-
Immutable
var_samp(arg1: decimal) → decimal

Calculates the variance of the selected values.

-
Immutable
var_samp(arg1: float) → float

Calculates the variance of the selected values.

-
Immutable
var_samp(arg1: int) → decimal

Calculates the variance of the selected values.

-
Immutable
variance(arg1: decimal) → decimal

Calculates the variance of the selected values.

-
Immutable
variance(arg1: float) → float

Calculates the variance of the selected values.

-
Immutable
variance(arg1: int) → decimal

Calculates the variance of the selected values.

-
Immutable
xor_agg(arg1: bytes) → bytes

Calculates the bitwise XOR of the selected values.

-
Immutable
xor_agg(arg1: int) → int

Calculates the bitwise XOR of the selected values.

-
Immutable
diff --git a/docs/generated/sql/functions.md b/docs/generated/sql/functions.md index c98f7a0350c3..02cd2f47865b 100644 --- a/docs/generated/sql/functions.md +++ b/docs/generated/sql/functions.md @@ -1,559 +1,559 @@ ### Array functions - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
array_append(array: bool[], elem: bool) → bool[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: bytes[], elem: bytes) → bytes[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: date[], elem: date) → date[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: decimal[], elem: decimal) → decimal[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: float[], elem: float) → float[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: inet[], elem: inet) → inet[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: int[], elem: int) → int[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: interval[], elem: interval) → interval[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: string[], elem: string) → string[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: time[], elem: time) → time[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: timestamp[], elem: timestamp) → timestamp[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: timestamptz[], elem: timestamptz) → timestamptz[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: uuid[], elem: uuid) → uuid[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: anyenum[], elem: anyenum) → anyenum[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: box2d[], elem: box2d) → box2d[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: geography[], elem: geography) → geography[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: geometry[], elem: geometry) → geometry[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: jsonb[], elem: jsonb) → jsonb[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: oid[], elem: oid) → oid[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: timetz[], elem: timetz) → timetz[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: tuple[], elem: tuple) → tuple[]

Appends elem to array, returning the result.

-
Immutable
array_append(array: varbit[], elem: varbit) → varbit[]

Appends elem to array, returning the result.

-
Immutable
array_cat(left: bool[], right: bool[]) → bool[]

Appends two arrays.

-
Immutable
array_cat(left: bytes[], right: bytes[]) → bytes[]

Appends two arrays.

-
Immutable
array_cat(left: date[], right: date[]) → date[]

Appends two arrays.

-
Immutable
array_cat(left: decimal[], right: decimal[]) → decimal[]

Appends two arrays.

-
Immutable
array_cat(left: float[], right: float[]) → float[]

Appends two arrays.

-
Immutable
array_cat(left: inet[], right: inet[]) → inet[]

Appends two arrays.

-
Immutable
array_cat(left: int[], right: int[]) → int[]

Appends two arrays.

-
Immutable
array_cat(left: interval[], right: interval[]) → interval[]

Appends two arrays.

-
Immutable
array_cat(left: string[], right: string[]) → string[]

Appends two arrays.

-
Immutable
array_cat(left: time[], right: time[]) → time[]

Appends two arrays.

-
Immutable
array_cat(left: timestamp[], right: timestamp[]) → timestamp[]

Appends two arrays.

-
Immutable
array_cat(left: timestamptz[], right: timestamptz[]) → timestamptz[]

Appends two arrays.

-
Immutable
array_cat(left: uuid[], right: uuid[]) → uuid[]

Appends two arrays.

-
Immutable
array_cat(left: anyenum[], right: anyenum[]) → anyenum[]

Appends two arrays.

-
Immutable
array_cat(left: box2d[], right: box2d[]) → box2d[]

Appends two arrays.

-
Immutable
array_cat(left: geography[], right: geography[]) → geography[]

Appends two arrays.

-
Immutable
array_cat(left: geometry[], right: geometry[]) → geometry[]

Appends two arrays.

-
Immutable
array_cat(left: jsonb[], right: jsonb[]) → jsonb[]

Appends two arrays.

-
Immutable
array_cat(left: oid[], right: oid[]) → oid[]

Appends two arrays.

-
Immutable
array_cat(left: timetz[], right: timetz[]) → timetz[]

Appends two arrays.

-
Immutable
array_cat(left: tuple[], right: tuple[]) → tuple[]

Appends two arrays.

-
Immutable
array_cat(left: varbit[], right: varbit[]) → varbit[]

Appends two arrays.

-
Immutable
array_length(input: anyelement[], array_dimension: int) → int

Calculates the length of input on the provided array_dimension. However, because CockroachDB doesn’t yet support multi-dimensional arrays, the only supported array_dimension is 1.

-
Immutable
array_lower(input: anyelement[], array_dimension: int) → int

Calculates the minimum value of input on the provided array_dimension. However, because CockroachDB doesn’t yet support multi-dimensional arrays, the only supported array_dimension is 1.

-
Immutable
array_position(array: bool[], elem: bool) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: bytes[], elem: bytes) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: date[], elem: date) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: decimal[], elem: decimal) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: float[], elem: float) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: inet[], elem: inet) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: int[], elem: int) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: interval[], elem: interval) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: string[], elem: string) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: time[], elem: time) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: timestamp[], elem: timestamp) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: timestamptz[], elem: timestamptz) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: uuid[], elem: uuid) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: anyenum[], elem: anyenum) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: box2d[], elem: box2d) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: geography[], elem: geography) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: geometry[], elem: geometry) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: jsonb[], elem: jsonb) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: oid[], elem: oid) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: timetz[], elem: timetz) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: tuple[], elem: tuple) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_position(array: varbit[], elem: varbit) → int

Return the index of the first occurrence of elem in array.

-
Immutable
array_positions(array: bool[], elem: bool) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: bytes[], elem: bytes) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: date[], elem: date) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: decimal[], elem: decimal) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: float[], elem: float) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: inet[], elem: inet) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: int[], elem: int) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: interval[], elem: interval) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: string[], elem: string) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: time[], elem: time) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: timestamp[], elem: timestamp) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: timestamptz[], elem: timestamptz) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: uuid[], elem: uuid) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: anyenum[], elem: anyenum) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: box2d[], elem: box2d) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: geography[], elem: geography) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: geometry[], elem: geometry) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: jsonb[], elem: jsonb) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: oid[], elem: oid) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: timetz[], elem: timetz) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: tuple[], elem: tuple) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_positions(array: varbit[], elem: varbit) → int[]

Returns and array of indexes of all occurrences of elem in array.

-
Immutable
array_prepend(elem: bool, array: bool[]) → bool[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: bytes, array: bytes[]) → bytes[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: date, array: date[]) → date[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: decimal, array: decimal[]) → decimal[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: float, array: float[]) → float[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: inet, array: inet[]) → inet[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: int, array: int[]) → int[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: interval, array: interval[]) → interval[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: string, array: string[]) → string[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: time, array: time[]) → time[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: timestamp, array: timestamp[]) → timestamp[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: timestamptz, array: timestamptz[]) → timestamptz[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: uuid, array: uuid[]) → uuid[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: anyenum, array: anyenum[]) → anyenum[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: box2d, array: box2d[]) → box2d[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: geography, array: geography[]) → geography[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: geometry, array: geometry[]) → geometry[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: jsonb, array: jsonb[]) → jsonb[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: oid, array: oid[]) → oid[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: timetz, array: timetz[]) → timetz[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: tuple, array: tuple[]) → tuple[]

Prepends elem to array, returning the result.

-
Immutable
array_prepend(elem: varbit, array: varbit[]) → varbit[]

Prepends elem to array, returning the result.

-
Immutable
array_remove(array: bool[], elem: bool) → bool[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: bytes[], elem: bytes) → bytes[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: date[], elem: date) → date[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: decimal[], elem: decimal) → decimal[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: float[], elem: float) → float[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: inet[], elem: inet) → inet[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: int[], elem: int) → int[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: interval[], elem: interval) → interval[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: string[], elem: string) → string[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: time[], elem: time) → time[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: timestamp[], elem: timestamp) → timestamp[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: timestamptz[], elem: timestamptz) → timestamptz[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: uuid[], elem: uuid) → uuid[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: anyenum[], elem: anyenum) → anyenum[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: box2d[], elem: box2d) → box2d[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: geography[], elem: geography) → geography[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: geometry[], elem: geometry) → geometry[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: jsonb[], elem: jsonb) → jsonb[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: oid[], elem: oid) → oid[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: timetz[], elem: timetz) → timetz[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: tuple[], elem: tuple) → tuple[]

Remove from array all elements equal to elem.

-
Immutable
array_remove(array: varbit[], elem: varbit) → varbit[]

Remove from array all elements equal to elem.

-
Immutable
array_replace(array: bool[], toreplace: bool, replacewith: bool) → bool[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: bytes[], toreplace: bytes, replacewith: bytes) → bytes[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: date[], toreplace: date, replacewith: date) → date[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: decimal[], toreplace: decimal, replacewith: decimal) → decimal[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: float[], toreplace: float, replacewith: float) → float[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: inet[], toreplace: inet, replacewith: inet) → inet[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: int[], toreplace: int, replacewith: int) → int[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: interval[], toreplace: interval, replacewith: interval) → interval[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: string[], toreplace: string, replacewith: string) → string[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: time[], toreplace: time, replacewith: time) → time[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: timestamp[], toreplace: timestamp, replacewith: timestamp) → timestamp[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: timestamptz[], toreplace: timestamptz, replacewith: timestamptz) → timestamptz[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: uuid[], toreplace: uuid, replacewith: uuid) → uuid[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: anyenum[], toreplace: anyenum, replacewith: anyenum) → anyenum[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: box2d[], toreplace: box2d, replacewith: box2d) → box2d[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: geography[], toreplace: geography, replacewith: geography) → geography[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: geometry[], toreplace: geometry, replacewith: geometry) → geometry[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: jsonb[], toreplace: jsonb, replacewith: jsonb) → jsonb[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: oid[], toreplace: oid, replacewith: oid) → oid[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: timetz[], toreplace: timetz, replacewith: timetz) → timetz[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: tuple[], toreplace: tuple, replacewith: tuple) → tuple[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_replace(array: varbit[], toreplace: varbit, replacewith: varbit) → varbit[]

Replace all occurrences of toreplace in array with replacewith.

-
Immutable
array_to_string(input: anyelement[], delim: string) → string

Join an array into a string with a delimiter.

-
Stable
array_to_string(input: anyelement[], delimiter: string, null: string) → string

Join an array into a string with a delimiter, replacing NULLs with a null string.

-
Stable
array_upper(input: anyelement[], array_dimension: int) → int

Calculates the maximum value of input on the provided array_dimension. However, because CockroachDB doesn’t yet support multi-dimensional arrays, the only supported array_dimension is 1.

-
Immutable
cardinality(input: anyelement[]) → int

Calculates the number of elements contained in input

-
Immutable
crdb_internal.merge_statement_stats(input: jsonb[]) → jsonb

Merge an array of roachpb.StatementStatistics into a single JSONB object

-
Immutable
crdb_internal.merge_stats_metadata(input: jsonb[]) → jsonb

Merge an array of StmtStatsMetadata into a single JSONB object

-
Immutable
crdb_internal.merge_transaction_stats(input: jsonb[]) → jsonb

Merge an array of roachpb.TransactionStatistics into a single JSONB object

-
Immutable
string_to_array(str: string, delimiter: string) → string[]

Split a string into components on a delimiter.

-
Immutable
string_to_array(str: string, delimiter: string, null: string) → string[]

Split a string into components on a delimiter with a specified string to consider NULL.

-
Immutable
### BOOL functions - + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
ilike_escape(unescaped: string, pattern: string, escape: string) → bool

Matches case insensetively unescaped with pattern using escape as an escape token.

-
Immutable
inet_contained_by_or_equals(val: inet, container: inet) → bool

Test for subnet inclusion or equality, using only the network parts of the addresses. The host part of the addresses is ignored.

-
Immutable
inet_contains_or_equals(container: inet, val: inet) → bool

Test for subnet inclusion or equality, using only the network parts of the addresses. The host part of the addresses is ignored.

-
Immutable
inet_same_family(val: inet, val: inet) → bool

Checks if two IP addresses are of the same IP family.

-
Immutable
like_escape(unescaped: string, pattern: string, escape: string) → bool

Matches unescaped with pattern using escape as an escape token.

-
Immutable
not_ilike_escape(unescaped: string, pattern: string, escape: string) → bool

Checks whether unescaped not matches case insensetively with pattern using escape as an escape token.

-
Immutable
not_like_escape(unescaped: string, pattern: string, escape: string) → bool

Checks whether unescaped not matches with pattern using escape as an escape token.

-
Immutable
not_similar_to_escape(unescaped: string, pattern: string, escape: string) → bool

Checks whether unescaped not matches with pattern using escape as an escape token.

-
Immutable
### Comparison functions - + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
greatest(anyelement...) → anyelement

Returns the element with the greatest value.

-
Immutable
least(anyelement...) → anyelement

Returns the element with the lowest value.

-
Immutable
num_nonnulls(anyelement...) → int

Returns the number of nonnull arguments.

-
Immutable
num_nulls(anyelement...) → int

Returns the number of null arguments.

-
Immutable
### Cryptographic functions - + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
crypt(password: string, salt: string) → string

Generates a hash based on a password and salt. The hash algorithm and number of rounds if applicable are encoded in the salt.

-
Volatile
digest(data: bytes, type: string) → bytes

Computes a binary hash of the given data. type is the algorithm to use (md5, sha1, sha224, sha256, sha384, or sha512).

-
Immutable
digest(data: string, type: string) → bytes

Computes a binary hash of the given data. type is the algorithm to use (md5, sha1, sha224, sha256, sha384, or sha512).

-
Leakproof
gen_salt(type: string) → string

Generates a salt for input into the crypt function using the default number of rounds.

-
Volatile
gen_salt(type: string, iter_count: int) → string

Generates a salt for input into the crypt function using iter_count number of rounds.

-
Volatile
hmac(data: bytes, key: bytes, type: string) → bytes

Calculates hashed MAC for data with key key. type is the same as in digest().

-
Immutable
hmac(data: string, key: string, type: string) → bytes

Calculates hashed MAC for data with key key. type is the same as in digest().

-
Leakproof
### DECIMAL functions - + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
hlc_to_timestamp(hlc: decimal) → timestamptz

Returns a TimestampTZ representation of a CockroachDB HLC in decimal form.

Note that a TimestampTZ has less precision than a CockroachDB HLC. It is intended as a convenience function to display HLCs in a print-friendly form. Use the decimal value if you rely on the HLC for accuracy.

-
Immutable
### Date and time functions - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
age(end: timestamptz, begin: timestamptz) → interval

Calculates the interval between begin and end, normalized into years, months and days.

Note this may not be an accurate time span since years and months are normalized from days, and years and months are out of context. To avoid normalizing days into months and years, use the timestamptz subtraction operator.

-
Immutable
age(val: timestamptz) → interval

Calculates the interval between val and the current time, normalized into years, months and days.

Note this may not be an accurate time span since years and months are normalized from days, and years and months are out of context. To avoid normalizing days into months and years, use now() - timestamptz.

-
Stable
clock_timestamp() → timestamp

Returns the current system time on one of the cluster nodes.

-
Volatile
clock_timestamp() → timestamptz

Returns the current system time on one of the cluster nodes.

-
Volatile
current_date() → date

Returns the date of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
current_timestamp() → date

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
current_timestamp() → timestamp

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
current_timestamp() → timestamptz

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

This function is the preferred overload and will be evaluated by default.

-
Stable
current_timestamp(precision: int) → date

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
current_timestamp(precision: int) → timestamp

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
current_timestamp(precision: int) → timestamptz

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

This function is the preferred overload and will be evaluated by default.

-
Stable
date_part(element: string, input: date) → float

Extracts element from input.

Compatible elements: millennium, century, decade, year, isoyear, quarter, month, week, dayofweek, isodow, dayofyear, julian, hour, minute, second, millisecond, microsecond, epoch

-
Immutable
date_part(element: string, input: interval) → float

Extracts element from input.

Compatible elements: millennium, century, decade, year, month, day, hour, minute, second, millisecond, microsecond, epoch

-
Immutable
date_part(element: string, input: time) → float

Extracts element from input.

Compatible elements: hour, minute, second, millisecond, microsecond, epoch

-
Immutable
date_part(element: string, input: timestamp) → float

Extracts element from input.

Compatible elements: millennium, century, decade, year, isoyear, quarter, month, week, dayofweek, isodow, dayofyear, julian, hour, minute, second, millisecond, microsecond, epoch

-
Immutable
date_part(element: string, input: timestamptz) → float

Extracts element from input.

Compatible elements: millennium, century, decade, year, isoyear, quarter, month, week, dayofweek, isodow, dayofyear, julian, hour, minute, second, millisecond, microsecond, epoch, timezone, timezone_hour, timezone_minute

-
Stable
date_part(element: string, input: timetz) → float

Extracts element from input.

Compatible elements: hour, minute, second, millisecond, microsecond, epoch, timezone, timezone_hour, timezone_minute

-
Immutable
date_trunc(element: string, input: date) → timestamptz

Truncates input to precision element. Sets all fields that are less significant than element to zero (or one, for day and month)

Compatible elements: millennium, century, decade, year, quarter, month, week, day, hour, minute, second, millisecond, microsecond.

-
Stable
date_trunc(element: string, input: interval) → interval

Truncates input to precision element. Sets all fields that are less significant than element to zero (or one, for day and month)

Compatible elements: millennium, century, decade, year, quarter, month, week, day, hour, minute, second, millisecond, microsecond.

-
Stable
date_trunc(element: string, input: time) → interval

Truncates input to precision element. Sets all fields that are less significant than element to zero.

Compatible elements: hour, minute, second, millisecond, microsecond.

-
Immutable
date_trunc(element: string, input: timestamp) → timestamp

Truncates input to precision element. Sets all fields that are less significant than element to zero (or one, for day and month)

Compatible elements: millennium, century, decade, year, quarter, month, week, day, hour, minute, second, millisecond, microsecond.

-
Immutable
date_trunc(element: string, input: timestamptz) → timestamptz

Truncates input to precision element. Sets all fields that are less significant than element to zero (or one, for day and month)

Compatible elements: millennium, century, decade, year, quarter, month, week, day, hour, minute, second, millisecond, microsecond.

-
Stable
experimental_follower_read_timestamp() → timestamptz

Same as follower_read_timestamp. This name is deprecated.

-
Volatile
experimental_strftime(input: date, extract_format: string) → string

From input, extracts and formats the time as identified in extract_format using standard strftime notation (though not all formatting is supported).

-
Immutable
experimental_strftime(input: timestamp, extract_format: string) → string

From input, extracts and formats the time as identified in extract_format using standard strftime notation (though not all formatting is supported).

-
Immutable
experimental_strftime(input: timestamptz, extract_format: string) → string

From input, extracts and formats the time as identified in extract_format using standard strftime notation (though not all formatting is supported).

-
Immutable
experimental_strptime(input: string, format: string) → timestamptz

Returns input as a timestamptz using format (which uses standard strptime formatting).

-
Immutable
extract(element: string, input: date) → float

Extracts element from input.

Compatible elements: millennium, century, decade, year, isoyear, quarter, month, week, dayofweek, isodow, dayofyear, julian, hour, minute, second, millisecond, microsecond, epoch

-
Immutable
extract(element: string, input: interval) → float

Extracts element from input.

Compatible elements: millennium, century, decade, year, month, day, hour, minute, second, millisecond, microsecond, epoch

-
Immutable
extract(element: string, input: time) → float

Extracts element from input.

Compatible elements: hour, minute, second, millisecond, microsecond, epoch

-
Immutable
extract(element: string, input: timestamp) → float

Extracts element from input.

Compatible elements: millennium, century, decade, year, isoyear, quarter, month, week, dayofweek, isodow, dayofyear, julian, hour, minute, second, millisecond, microsecond, epoch

-
Immutable
extract(element: string, input: timestamptz) → float

Extracts element from input.

Compatible elements: millennium, century, decade, year, isoyear, quarter, month, week, dayofweek, isodow, dayofyear, julian, hour, minute, second, millisecond, microsecond, epoch, timezone, timezone_hour, timezone_minute

-
Stable
extract(element: string, input: timetz) → float

Extracts element from input.

Compatible elements: hour, minute, second, millisecond, microsecond, epoch, timezone, timezone_hour, timezone_minute

-
Immutable
extract_duration(element: string, input: interval) → int

Extracts element from input. Compatible elements: hour, minute, second, millisecond, microsecond. This is deprecated in favor of extract which supports duration.

-
Immutable
follower_read_timestamp() → timestamptz

Returns a timestamp which is very likely to be safe to perform against a follower replica.

This function is intended to be used with an AS OF SYSTEM TIME clause to perform @@ -564,556 +564,556 @@ leaseholder for a given range.

return a result that is less likely the closest replica. It is otherwise hardcoded as -4.8s from the statement time, which may not result in reading from the nearest replica.

-
Volatile
localtimestamp() → date

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
localtimestamp() → timestamp

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

This function is the preferred overload and will be evaluated by default.

-
Stable
localtimestamp() → timestamptz

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
localtimestamp(precision: int) → date

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
localtimestamp(precision: int) → timestamp

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

This function is the preferred overload and will be evaluated by default.

-
Stable
localtimestamp(precision: int) → timestamptz

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
now() → date

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
now() → timestamp

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
now() → timestamptz

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

This function is the preferred overload and will be evaluated by default.

-
Stable
overlaps(s1: date, e1: date, s1: date, e2: date) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
overlaps(s1: date, e1: interval, s1: date, e2: interval) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
overlaps(s1: time, e1: interval, s1: time, e2: interval) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
overlaps(s1: time, e1: time, s1: time, e2: time) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
overlaps(s1: timestamp, e1: interval, s1: timestamp, e2: interval) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
overlaps(s1: timestamp, e1: timestamp, s1: timestamp, e2: timestamp) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
overlaps(s1: timestamptz, e1: interval, s1: timestamptz, e2: interval) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Stable
overlaps(s1: timestamptz, e1: timestamptz, s1: timestamptz, e2: timestamptz) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
overlaps(s1: timetz, e1: interval, s1: timetz, e2: interval) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
overlaps(s1: timetz, e1: timetz, s1: timetz, e2: timetz) → bool

Returns if two time periods (defined by their endpoints) overlap.

-
Immutable
statement_timestamp() → timestamp

Returns the start time of the current statement.

-
Stable
statement_timestamp() → timestamptz

Returns the start time of the current statement.

-
Stable
timeofday() → string

Returns the current system time on one of the cluster nodes as a string.

-
Stable
timezone(timezone: string, time: time) → timetz

Treat given time without time zone as located in the specified time zone.

-
Stable
timezone(timezone: string, timestamp: timestamp) → timestamptz

Treat given time stamp without time zone as located in the specified time zone.

-
Immutable
timezone(timezone: string, timestamptz: timestamptz) → timestamp

Convert given time stamp with time zone to the new time zone, with no time zone designation.

-
Immutable
timezone(timezone: string, timestamptz_string: string) → timestamp

Convert given time stamp with time zone to the new time zone, with no time zone designation.

-
Stable
timezone(timezone: string, timetz: timetz) → timetz

Convert given time with time zone to the new time zone.

-
Stable
to_char(date: date) → string

Convert an date to a string assuming the ISO, MDY DateStyle.

-
Immutable
to_char(interval: interval) → string

Convert an interval to a string assuming the Postgres IntervalStyle.

-
Immutable
to_char(timestamp: timestamp) → string

Convert an timestamp to a string assuming the ISO, MDY DateStyle.

-
Immutable
to_timestamp(timestamp: float) → timestamptz

Convert Unix epoch (seconds since 1970-01-01 00:00:00+00) to timestamp with time zone.

-
Immutable
transaction_timestamp() → date

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
transaction_timestamp() → timestamp

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

-
Stable
transaction_timestamp() → timestamptz

Returns the time of the current transaction.

The value is based on a timestamp picked when the transaction starts and which stays constant throughout the transaction. This timestamp has no relationship with the commit order of concurrent transactions.

This function is the preferred overload and will be evaluated by default.

-
Stable
with_max_staleness(max_staleness: interval) → timestamptz

When used in the AS OF SYSTEM TIME clause of an single-statement, read-only transaction, CockroachDB chooses the newest timestamp within the staleness bound that allows execution of the reads at the nearest available replica without blocking.

Note this function requires an enterprise license on a CCL distribution.

-
Volatile
with_max_staleness(max_staleness: interval, nearest_only: bool) → timestamptz

When used in the AS OF SYSTEM TIME clause of an single-statement, read-only transaction, CockroachDB chooses the newest timestamp within the staleness bound that allows execution of the reads at the nearest available replica without blocking.

If nearest_only is set to true, reads that cannot be served using the nearest available replica will error.

Note this function requires an enterprise license on a CCL distribution.

-
Volatile
with_min_timestamp(min_timestamp: timestamptz) → timestamptz

When used in the AS OF SYSTEM TIME clause of an single-statement, read-only transaction, CockroachDB chooses the newest timestamp before the min_timestamp that allows execution of the reads at the nearest available replica without blocking.

Note this function requires an enterprise license on a CCL distribution.

-
Volatile
with_min_timestamp(min_timestamp: timestamptz, nearest_only: bool) → timestamptz

When used in the AS OF SYSTEM TIME clause of an single-statement, read-only transaction, CockroachDB chooses the newest timestamp before the min_timestamp that allows execution of the reads at the nearest available replica without blocking.

If nearest_only is set to true, reads that cannot be served using the nearest available replica will error.

Note this function requires an enterprise license on a CCL distribution.

-
Volatile
### Enum functions - + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
enum_first(val: anyenum) → anyenum

Returns the first value of the input enum type.

-
Stable
enum_last(val: anyenum) → anyenum

Returns the last value of the input enum type.

-
Stable
enum_range(lower: anyenum, upper: anyenum) → anyenum[]

Returns all values of the input enum in an ordered array between the two arguments (inclusive).

-
Stable
enum_range(val: anyenum) → anyenum[]

Returns all values of the input enum in an ordered array.

-
Stable
### FLOAT functions - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
abs(val: decimal) → decimal

Calculates the absolute value of val.

-
Immutable
abs(val: float) → float

Calculates the absolute value of val.

-
Immutable
abs(val: int) → int

Calculates the absolute value of val.

-
Immutable
acos(val: float) → float

Calculates the inverse cosine of val.

-
Immutable
acosd(val: float) → float

Calculates the inverse cosine of val with the result in degrees

-
Immutable
acosh(val: float) → float

Calculates the inverse hyperbolic cosine of val.

-
Immutable
asin(val: float) → float

Calculates the inverse sine of val.

-
Immutable
asind(val: float) → float

Calculates the inverse sine of val with the result in degrees.

-
Immutable
asinh(val: float) → float

Calculates the inverse hyperbolic sine of val.

-
Immutable
atan(val: float) → float

Calculates the inverse tangent of val.

-
Immutable
atan2(x: float, y: float) → float

Calculates the inverse tangent of x/y.

-
Immutable
atan2d(x: float, y: float) → float

Calculates the inverse tangent of x/y with the result in degrees

-
Immutable
atand(val: float) → float

Calculates the inverse tangent of val with the result in degrees.

-
Immutable
atanh(val: float) → float

Calculates the inverse hyperbolic tangent of val.

-
Immutable
cbrt(val: decimal) → decimal

Calculates the cube root (∛) of val.

-
Immutable
cbrt(val: float) → float

Calculates the cube root (∛) of val.

-
Immutable
ceil(val: decimal) → decimal

Calculates the smallest integer not smaller than val.

-
Immutable
ceil(val: float) → float

Calculates the smallest integer not smaller than val.

-
Immutable
ceil(val: int) → float

Calculates the smallest integer not smaller than val.

-
Immutable
ceiling(val: decimal) → decimal

Calculates the smallest integer not smaller than val.

-
Immutable
ceiling(val: float) → float

Calculates the smallest integer not smaller than val.

-
Immutable
ceiling(val: int) → float

Calculates the smallest integer not smaller than val.

-
Immutable
cos(val: float) → float

Calculates the cosine of val.

-
Immutable
cosd(val: float) → float

Calculates the cosine of val where val is in degrees.

-
Immutable
cosh(val: float) → float

Calculates the hyperbolic cosine of val.

-
Immutable
cot(val: float) → float

Calculates the cotangent of val.

-
Immutable
cotd(val: float) → float

Calculates the cotangent of val where val is in degrees.

-
Immutable
degrees(val: float) → float

Converts val as a radian value to a degree value.

-
Immutable
div(x: decimal, y: decimal) → decimal

Calculates the integer quotient of x/y.

-
Immutable
div(x: float, y: float) → float

Calculates the integer quotient of x/y.

-
Immutable
div(x: int, y: int) → int

Calculates the integer quotient of x/y.

-
Immutable
exp(val: decimal) → decimal

Calculates e ^ val.

-
Immutable
exp(val: float) → float

Calculates e ^ val.

-
Immutable
floor(val: decimal) → decimal

Calculates the largest integer not greater than val.

-
Immutable
floor(val: float) → float

Calculates the largest integer not greater than val.

-
Immutable
floor(val: int) → float

Calculates the largest integer not greater than val.

-
Immutable
isnan(val: decimal) → bool

Returns true if val is NaN, false otherwise.

-
Immutable
isnan(val: float) → bool

Returns true if val is NaN, false otherwise.

-
Immutable
ln(val: decimal) → decimal

Calculates the natural log of val.

-
Immutable
ln(val: float) → float

Calculates the natural log of val.

-
Immutable
log(b: decimal, x: decimal) → decimal

Calculates the base b log of val.

-
Immutable
log(b: float, x: float) → float

Calculates the base b log of val.

-
Immutable
log(val: decimal) → decimal

Calculates the base 10 log of val.

-
Immutable
log(val: float) → float

Calculates the base 10 log of val.

-
Immutable
mod(x: decimal, y: decimal) → decimal

Calculates x%y.

-
Immutable
mod(x: float, y: float) → float

Calculates x%y.

-
Immutable
mod(x: int, y: int) → int

Calculates x%y.

-
Immutable
pi() → float

Returns the value for pi (3.141592653589793).

-
Immutable
pow(x: decimal, y: decimal) → decimal

Calculates x^y.

-
Immutable
pow(x: float, y: float) → float

Calculates x^y.

-
Immutable
pow(x: int, y: int) → int

Calculates x^y.

-
Immutable
power(x: decimal, y: decimal) → decimal

Calculates x^y.

-
Immutable
power(x: float, y: float) → float

Calculates x^y.

-
Immutable
power(x: int, y: int) → int

Calculates x^y.

-
Immutable
radians(val: float) → float

Converts val as a degree value to a radians value.

-
Immutable
random() → float

Returns a random floating-point number between 0 (inclusive) and 1 (exclusive). Note that the value contains at most 53 bits of randomness.

-
Volatile
round(input: decimal, decimal_accuracy: int) → decimal

Keeps decimal_accuracy number of figures to the right of the zero position in input using half away from zero rounding. If decimal_accuracy is not in the range -2^31…(2^31-1), the results are undefined.

-
Immutable
round(input: float, decimal_accuracy: int) → float

Keeps decimal_accuracy number of figures to the right of the zero position in input using half to even (banker’s) rounding.

-
Immutable
round(val: decimal) → decimal

Rounds val to the nearest integer, half away from zero: round(+/-2.4) = +/-2, round(+/-2.5) = +/-3.

-
Immutable
round(val: float) → float

Rounds val to the nearest integer using half to even (banker’s) rounding.

-
Immutable
sign(val: decimal) → decimal

Determines the sign of val: 1 for positive; 0 for 0 values; -1 for negative.

-
Immutable
sign(val: float) → float

Determines the sign of val: 1 for positive; 0 for 0 values; -1 for negative.

-
Immutable
sign(val: int) → int

Determines the sign of val: 1 for positive; 0 for 0 values; -1 for negative.

-
Immutable
sin(val: float) → float

Calculates the sine of val.

-
Immutable
sind(val: float) → float

Calculates the sine of val where val is in degrees.

-
Immutable
sinh(val: float) → float

Calculates the hyperbolic sine of val.

-
Immutable
sqrt(val: decimal) → decimal

Calculates the square root of val.

-
Immutable
sqrt(val: float) → float

Calculates the square root of val.

-
Immutable
tan(val: float) → float

Calculates the tangent of val.

-
Immutable
tand(val: float) → float

Calculates the tangent of val where val is in degrees.

-
Immutable
tanh(val: float) → float

Calculates the hyperbolic tangent of val.

-
Immutable
trunc(val: decimal) → decimal

Truncates the decimal values of val.

-
Immutable
trunc(val: float) → float

Truncates the decimal values of val.

-
Immutable
### ID generation functions - + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
experimental_uuid_v4() → bytes

Returns a UUID.

-
Volatile
gen_random_ulid() → uuid

Generates a random ULID and returns it as a value of UUID type.

-
Volatile
gen_random_uuid() → uuid

Generates a random version 4 UUID, and returns it as a value of UUID type.

-
Volatile
unique_rowid() → int

Returns a unique ID used by CockroachDB to generate unique row IDs if a Primary Key isn’t defined for the table. The value is a combination of the insert timestamp and the ID of the node executing the statement, which guarantees this combination is globally unique. However, there can be gaps and the order is not completely guaranteed.

-
Volatile
unordered_unique_rowid() → int

Returns a unique ID. The value is a combination of the insert timestamp and the ID of the node executing the statement, which guarantees this combination is globally unique. The way it is generated there is no ordering

-
Volatile
uuid_generate_v1() → uuid

Generates a version 1 UUID, and returns it as a value of UUID type. To avoid exposing the server’s real MAC address, this uses a random MAC address and a timestamp. Essentially, this is an alias for uuid_generate_v1mc.

-
Volatile
uuid_generate_v1mc() → uuid

Generates a version 1 UUID, and returns it as a value of UUID type. This uses a random MAC address and a timestamp.

-
Volatile
uuid_generate_v3(namespace: uuid, name: string) → uuid

Generates a version 3 UUID in the given namespace using the specified input name, with md5 as the hashing method. The namespace should be one of the special constants produced by the uuid_ns_*() functions.

-
Immutable
uuid_generate_v4() → uuid

Generates a random version 4 UUID, and returns it as a value of UUID type.

-
Volatile
uuid_generate_v5(namespace: uuid, name: string) → uuid

Generates a version 5 UUID in the given namespace using the specified input name. This is similar to a version 3 UUID, except it uses SHA-1 for hashing.

-
Immutable
uuid_nil() → uuid

Returns a nil UUID constant.

-
Immutable
uuid_ns_dns() → uuid

Returns a constant designating the DNS namespace for UUIDs.

-
Immutable
uuid_ns_oid() → uuid

Returns a constant designating the ISO object identifier (OID) namespace for UUIDs. These are unrelated to the OID type used internally in the database.

-
Immutable
uuid_ns_url() → uuid

Returns a constant designating the URL namespace for UUIDs.

-
Immutable
uuid_ns_x500() → uuid

Returns a constant designating the X.500 distinguished name (DN) namespace for UUIDs.

-
Immutable
uuid_v4() → bytes

Returns a UUID.

-
Volatile
### INET functions - + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
abbrev(val: inet) → string

Converts the combined IP address and prefix length to an abbreviated display format as text.For INET types, this will omit the prefix length if it’s not the default (32 or IPv4, 128 for IPv6)

For example, abbrev('192.168.1.2/24') returns '192.168.1.2/24'

-
Immutable
broadcast(val: inet) → inet

Gets the broadcast address for the network address represented by the value.

For example, broadcast('192.168.1.2/24') returns '192.168.1.255/24'

-
Immutable
family(val: inet) → int

Extracts the IP family of the value; 4 for IPv4, 6 for IPv6.

For example, family('::1') returns 6

-
Immutable
host(val: inet) → string

Extracts the address part of the combined address/prefixlen value as text.

For example, host('192.168.1.2/16') returns '192.168.1.2'

-
Immutable
hostmask(val: inet) → inet

Creates an IP host mask corresponding to the prefix length in the value.

For example, hostmask('192.168.1.2/16') returns '0.0.255.255'

-
Immutable
masklen(val: inet) → int

Retrieves the prefix length stored in the value.

For example, masklen('192.168.1.2/16') returns 16

-
Immutable
netmask(val: inet) → inet

Creates an IP network mask corresponding to the prefix length in the value.

For example, netmask('192.168.1.2/16') returns '255.255.0.0'

-
Immutable
set_masklen(val: inet, prefixlen: int) → inet

Sets the prefix length of val to prefixlen.

For example, set_masklen('192.168.1.2', 16) returns '192.168.1.2/16'.

-
Immutable
text(val: inet) → string

Converts the IP address and prefix length to text.

-
Immutable
### INT functions - + + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
crc32c(bytes...) → int

Calculates the CRC-32 hash using the Castagnoli polynomial.

-
Leakproof
crc32c(string...) → int

Calculates the CRC-32 hash using the Castagnoli polynomial.

-
Leakproof
crc32ieee(bytes...) → int

Calculates the CRC-32 hash using the IEEE polynomial.

-
Leakproof
crc32ieee(string...) → int

Calculates the CRC-32 hash using the IEEE polynomial.

-
Leakproof
fnv32(bytes...) → int

Calculates the 32-bit FNV-1 hash value of a set of values.

-
Leakproof
fnv32(string...) → int

Calculates the 32-bit FNV-1 hash value of a set of values.

-
Leakproof
fnv32a(bytes...) → int

Calculates the 32-bit FNV-1a hash value of a set of values.

-
Leakproof
fnv32a(string...) → int

Calculates the 32-bit FNV-1a hash value of a set of values.

-
Leakproof
fnv64(bytes...) → int

Calculates the 64-bit FNV-1 hash value of a set of values.

-
Leakproof
fnv64(string...) → int

Calculates the 64-bit FNV-1 hash value of a set of values.

-
Leakproof
fnv64a(bytes...) → int

Calculates the 64-bit FNV-1a hash value of a set of values.

-
Leakproof
fnv64a(string...) → int

Calculates the 64-bit FNV-1a hash value of a set of values.

-
Leakproof
levenshtein(source: string, target: string) → int

Calculates the Levenshtein distance between two strings. Maximum input length is 255 characters.

-
Immutable
levenshtein(source: string, target: string, ins_cost: int, del_cost: int, sub_cost: int) → int

Calculates the Levenshtein distance between two strings. The cost parameters specify how much to charge for each edit operation. Maximum input length is 255 characters.

-
Immutable
width_bucket(operand: decimal, b1: decimal, b2: decimal, count: int) → int

return the bucket number to which operand would be assigned in a histogram having count equal-width buckets spanning the range b1 to b2.

-
Immutable
width_bucket(operand: int, b1: int, b2: int, count: int) → int

return the bucket number to which operand would be assigned in a histogram having count equal-width buckets spanning the range b1 to b2.

-
Immutable
width_bucket(operand: anyelement, thresholds: anyelement[]) → int

return the bucket number to which operand would be assigned given an array listing the lower bounds of the buckets; returns 0 for an input less than the first lower bound; the thresholds array must be sorted, smallest first, or unexpected results will be obtained

-
Immutable
### JSONB functions - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
array_to_json(array: anyelement[]) → jsonb

Returns the array as JSON or JSONB.

-
Stable
array_to_json(array: anyelement[], pretty_bool: bool) → jsonb

Returns the array as JSON or JSONB.

-
Stable
crdb_internal.json_to_pb(pbname: string, json: jsonb) → bytes

Convert JSONB data to protocol message bytes

-
Immutable
crdb_internal.pb_to_json(pbname: string, data: bytes) → jsonb

Converts protocol message to its JSONB representation.

-
Immutable
crdb_internal.pb_to_json(pbname: string, data: bytes, emit_defaults: bool) → jsonb

Converts protocol message to its JSONB representation.

-
Immutable
crdb_internal.pb_to_json(pbname: string, data: bytes, emit_defaults: bool, emit_redacted: bool) → jsonb

Converts protocol message to its JSONB representation.

-
Immutable
crdb_internal.read_file(uri: string) → bytes

Read the content of the file at the supplied external storage URI

-
Volatile
crdb_internal.write_file(data: bytes, uri: string) → int

Write the content passed to a file at the supplied external storage URI

-
Volatile
json_array_length(json: jsonb) → int

Returns the number of elements in the outermost JSON or JSONB array.

-
Immutable
json_build_array(anyelement...) → jsonb

Builds a possibly-heterogeneously-typed JSON or JSONB array out of a variadic argument list.

-
Stable
json_build_object(anyelement...) → jsonb

Builds a JSON object out of a variadic argument list.

-
Stable
json_extract_path(jsonb, string...) → jsonb

Returns the JSON value pointed to by the variadic arguments.

-
Immutable
json_extract_path_text(jsonb, string...) → string

Returns the JSON value as text pointed to by the variadic arguments.

-
Immutable
json_object(keys: string[], values: string[]) → jsonb

This form of json_object takes keys and values pairwise from two separate arrays. In all other respects it is identical to the one-argument form.

-
Immutable
json_object(texts: string[]) → jsonb

Builds a JSON or JSONB object out of a text array. The array must have exactly one dimension with an even number of members, in which case they are taken as alternating key/value pairs.

-
Immutable
json_remove_path(val: jsonb, path: string[]) → jsonb

Remove the specified path from the JSON object.

-
Immutable
json_set(val: jsonb, path: string[], to: jsonb) → jsonb

Returns the JSON value pointed to by the variadic arguments.

-
Immutable
json_set(val: jsonb, path: string[], to: jsonb, create_missing: bool) → jsonb

Returns the JSON value pointed to by the variadic arguments. If create_missing is false, new keys will not be inserted to objects and values will not be prepended or appended to arrays.

-
Immutable
json_strip_nulls(from_json: jsonb) → jsonb

Returns from_json with all object fields that have null values omitted. Other null values are untouched.

-
Immutable
json_typeof(val: jsonb) → string

Returns the type of the outermost JSON value as a text string.

-
Immutable
json_valid(string: string) → bool

Returns whether the given string is a valid JSON or not

-
Immutable
jsonb_array_length(json: jsonb) → int

Returns the number of elements in the outermost JSON or JSONB array.

-
Immutable
jsonb_build_array(anyelement...) → jsonb

Builds a possibly-heterogeneously-typed JSON or JSONB array out of a variadic argument list.

-
Stable
jsonb_build_object(anyelement...) → jsonb

Builds a JSON object out of a variadic argument list.

-
Stable
jsonb_exists_any(json: jsonb, array: string[]) → bool

Returns whether any of the strings in the text array exist as top-level keys or array elements

-
Immutable
jsonb_extract_path(jsonb, string...) → jsonb

Returns the JSON value pointed to by the variadic arguments.

-
Immutable
jsonb_extract_path_text(jsonb, string...) → string

Returns the JSON value as text pointed to by the variadic arguments.

-
Immutable
jsonb_insert(target: jsonb, path: string[], new_val: jsonb) → jsonb

Returns the JSON value pointed to by the variadic arguments. new_val will be inserted before path target.

-
Immutable
jsonb_insert(target: jsonb, path: string[], new_val: jsonb, insert_after: bool) → jsonb

Returns the JSON value pointed to by the variadic arguments. If insert_after is true (default is false), new_val will be inserted after path target.

-
Immutable
jsonb_object(keys: string[], values: string[]) → jsonb

This form of json_object takes keys and values pairwise from two separate arrays. In all other respects it is identical to the one-argument form.

-
Immutable
jsonb_object(texts: string[]) → jsonb

Builds a JSON or JSONB object out of a text array. The array must have exactly one dimension with an even number of members, in which case they are taken as alternating key/value pairs.

-
Immutable
jsonb_pretty(val: jsonb) → string

Returns the given JSON value as a STRING indented and with newlines.

-
Immutable
jsonb_set(val: jsonb, path: string[], to: jsonb) → jsonb

Returns the JSON value pointed to by the variadic arguments.

-
Immutable
jsonb_set(val: jsonb, path: string[], to: jsonb, create_missing: bool) → jsonb

Returns the JSON value pointed to by the variadic arguments. If create_missing is false, new keys will not be inserted to objects and values will not be prepended or appended to arrays.

-
Immutable
jsonb_strip_nulls(from_json: jsonb) → jsonb

Returns from_json with all object fields that have null values omitted. Other null values are untouched.

-
Immutable
jsonb_typeof(val: jsonb) → string

Returns the type of the outermost JSON value as a text string.

-
Immutable
to_json(val: anyelement) → jsonb

Returns the value as JSON or JSONB.

-
Stable
to_jsonb(val: anyelement) → jsonb

Returns the value as JSON or JSONB.

-
Stable
### Multi-region functions - + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
crdb_internal.filter_multiregion_fields_from_zone_config_sql(val: string) → string

Takes in a CONFIGURE ZONE SQL statement and returns a modified SQL statement omitting multi-region related zone configuration fields. If the CONFIGURE ZONE statement can be inferred by the database’s or table’s zone configuration this will return NULL.

-
Stable
crdb_internal.reset_multi_region_zone_configs_for_database(id: int) → bool

Resets the zone configuration for a multi-region database to match its original state. No-ops if the given database ID is not multi-region enabled.

-
Volatile
crdb_internal.reset_multi_region_zone_configs_for_table(id: int) → bool

Resets the zone configuration for a multi-region table to match its original state. No-ops if the given table ID is not a multi-region table.

-
Volatile
crdb_internal.validate_multi_region_zone_configs() → bool

Validates all multi-region zone configurations are correctly setup for the current database, including all tables, indexes and partitions underneath. Returns an error if validation fails. This builtin uses un-leased versions of the each descriptor, requiring extra round trips.

-
Volatile
default_to_database_primary_region(val: string) → string

Returns the given region if the region has been added to the current database. Otherwise, this will return the primary region of the current database. This will error if the current database is not a multi-region database.

-
Stable
gateway_region() → string

Returns the region of the connection’s current node as defined by the locality flag on node startup. Returns an error if no region is set.

-
Stable
rehome_row() → string

Returns the region of the connection’s current node as defined by the locality flag on node startup. Returns an error if no region is set.

-
Stable
### Multi-tenancy functions - + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
crdb_internal.sql_liveness_is_alive(session_id: bytes) → bool

Checks is given sqlliveness session id is not expired

-
Stable
### STRING[] functions - + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
regexp_split_to_array(string: string, pattern: string) → string[]

Split string using a POSIX regular expression as the delimiter.

-
Immutable
regexp_split_to_array(string: string, pattern: string, flags: string) → string[]

Split string using a POSIX regular expression as the delimiter with flags.

CockroachDB supports the following flags:

@@ -1185,97 +1185,97 @@ the locality flag on node startup. Returns an error if no region is set.

-
Immutable
### Sequence functions - + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
currval(sequence_name: string) → int

Returns the latest value obtained with nextval for this sequence in this session.

-
Volatile
currval(sequence_name: regclass) → int

Returns the latest value obtained with nextval for this sequence in this session.

-
Volatile
lastval() → int

Return value most recently obtained with nextval in this session.

-
Volatile
nextval(sequence_name: string) → int

Advances the given sequence and returns its new value.

-
Volatile
nextval(sequence_name: regclass) → int

Advances the given sequence and returns its new value.

-
Volatile
setval(sequence_name: string, value: int) → int

Set the given sequence’s current value. The next call to nextval will return value + Increment

-
Volatile
setval(sequence_name: string, value: int, is_called: bool) → int

Set the given sequence’s current value. If is_called is false, the next call to nextval will return value; otherwise value + Increment.

-
Volatile
setval(sequence_name: regclass, value: int) → int

Set the given sequence’s current value. The next call to nextval will return value + Increment

-
Volatile
setval(sequence_name: regclass, value: int, is_called: bool) → int

Set the given sequence’s current value. If is_called is false, the next call to nextval will return value; otherwise value + Increment.

-
Volatile
### Set-returning functions - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
aclexplode(aclitems: string[]) → tuple{oid AS grantor, oid AS grantee, string AS privilege_type, bool AS is_grantable}

Produces a virtual table containing aclitem stuff (returns no rows as this feature is unsupported in CockroachDB)

-
Stable
crdb_internal.testing_callback(name: string) → int

For internal CRDB testing only. The function calls a callback identified by name registered with the server by the test.

-
Volatile
crdb_internal.unary_table() → tuple

Produces a virtual table containing a single row with no values.

This function is used only by CockroachDB’s developers for testing purposes.

-
Volatile
generate_series(start: int, end: int) → int

Produces a virtual table containing the integer values from start to end, inclusive.

-
Immutable
generate_series(start: int, end: int, step: int) → int

Produces a virtual table containing the integer values from start to end, inclusive, by increment of step.

-
Immutable
generate_series(start: timestamp, end: timestamp, step: interval) → timestamp

Produces a virtual table containing the timestamp values from start to end, inclusive, by increment of step.

-
Immutable
generate_series(start: timestamptz, end: timestamptz, step: interval) → timestamptz

Produces a virtual table containing the timestampTZ values from start to end, inclusive, by increment of step.

-
Immutable
generate_subscripts(array: anyelement[]) → int

Returns a series comprising the given array’s subscripts.

-
Immutable
generate_subscripts(array: anyelement[], dim: int) → int

Returns a series comprising the given array’s subscripts.

-
Immutable
generate_subscripts(array: anyelement[], dim: int, reverse: bool) → int

Returns a series comprising the given array’s subscripts.

When reverse is true, the series is returned in reverse order.

-
Immutable
information_schema._pg_expandarray(input: anyelement[]) → tuple{anyelement AS x, int AS n}

Returns the input array as a set of rows with an index

-
Immutable
json_array_elements(input: jsonb) → jsonb

Expands a JSON array to a set of JSON values.

-
Immutable
json_array_elements_text(input: jsonb) → string

Expands a JSON array to a set of text values.

-
Immutable
json_each(input: jsonb) → tuple{string AS key, jsonb AS value}

Expands the outermost JSON or JSONB object into a set of key/value pairs.

-
Immutable
json_each_text(input: jsonb) → tuple{string AS key, string AS value}

Expands the outermost JSON or JSONB object into a set of key/value pairs. The returned values will be of type text.

-
Immutable
json_object_keys(input: jsonb) → string

Returns sorted set of keys in the outermost JSON object.

-
Immutable
json_populate_record(base: anyelement, from_json: jsonb) → anyelement

Expands the object in from_json to a row whose columns match the record type defined by base.

-
Stable
json_populate_recordset(base: anyelement, from_json: jsonb) → anyelement

Expands the outermost array of objects in from_json to a set of rows whose columns match the record type defined by base

-
Stable
jsonb_array_elements(input: jsonb) → jsonb

Expands a JSON array to a set of JSON values.

-
Immutable
jsonb_array_elements_text(input: jsonb) → string

Expands a JSON array to a set of text values.

-
Immutable
jsonb_each(input: jsonb) → tuple{string AS key, jsonb AS value}

Expands the outermost JSON or JSONB object into a set of key/value pairs.

-
Immutable
jsonb_each_text(input: jsonb) → tuple{string AS key, string AS value}

Expands the outermost JSON or JSONB object into a set of key/value pairs. The returned values will be of type text.

-
Immutable
jsonb_object_keys(input: jsonb) → string

Returns sorted set of keys in the outermost JSON object.

-
Immutable
jsonb_populate_record(base: anyelement, from_json: jsonb) → anyelement

Expands the object in from_json to a row whose columns match the record type defined by base.

-
Stable
jsonb_populate_recordset(base: anyelement, from_json: jsonb) → anyelement

Expands the outermost array of objects in from_json to a set of rows whose columns match the record type defined by base

-
Stable
pg_get_keywords() → tuple{string AS word, string AS catcode, string AS catdesc}

Produces a virtual table containing the keywords known to the SQL parser.

-
Immutable
pg_options_to_table(options: string[]) → tuple{string AS option_name, string AS option_value}

Converts the options array format to a table.

-
Stable
regexp_split_to_table(string: string, pattern: string) → string

Split string using a POSIX regular expression as the delimiter.

-
Immutable
regexp_split_to_table(string: string, pattern: string, flags: string) → string

Split string using a POSIX regular expression as the delimiter with flags.

CockroachDB supports the following flags:

@@ -1347,240 +1347,240 @@ the locality flag on node startup. Returns an error if no region is set.

-
Immutable
unnest(anyelement[], anyelement[], anyelement[]...) → tuple{anyelement AS unnest, anyelement AS unnest, anyelement AS unnest}

Returns the input arrays as a set of rows

-
Immutable
unnest(input: anyelement[]) → anyelement

Returns the input array as a set of rows

-
Immutable
### Spatial functions - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function → ReturnsDescription
Function → ReturnsDescriptionVolatility
_st_contains(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if no points of geometry_b lie in the exterior of geometry_a, and there is at least one point in the interior of geometry_b that lies in the interior of geometry_a.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_containsproperly(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if geometry_b intersects the interior of geometry_a but not the boundary or exterior of geometry_a.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_coveredby(geography_a: geography, geography_b: geography) → bool

Returns true if no point in geography_a is outside geography_b.

The calculations performed are have a precision of 1cm.

This function utilizes the S2 library for spherical calculations.

This function variant does not utilize any spatial index.

-
Immutable
_st_coveredby(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if no point in geometry_a is outside geometry_b.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_covers(geography_a: geography, geography_b: geography) → bool

Returns true if no point in geography_b is outside geography_a.

This function utilizes the S2 library for spherical calculations.

This function variant does not utilize any spatial index.

-
Immutable
_st_covers(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if no point in geometry_b is outside geometry_a.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_crosses(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if geometry_a has some - but not all - interior points in common with geometry_b.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_dfullywithin(geometry_a: geometry, geometry_b: geometry, distance: float) → bool

Returns true if every pair of points comprising geometry_a and geometry_b are within distance units, inclusive. In other words, the ST_MaxDistance between geometry_a and geometry_b is less than or equal to distance units.

This function variant does not utilize any spatial index.

-
Immutable
_st_dfullywithinexclusive(geometry_a: geometry, geometry_b: geometry, distance: float) → bool

Returns true if every pair of points comprising geometry_a and geometry_b are within distance units, exclusive. In other words, the ST_MaxDistance between geometry_a and geometry_b is less than distance units.

This function variant does not utilize any spatial index.

-
Immutable
_st_dwithin(geography_a: geography, geography_b: geography, distance: float) → bool

Returns true if any of geography_a is within distance meters of geography_b, inclusive. Uses a spheroid to perform the operation."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

The calculations performed are have a precision of 1cm.

This function utilizes the GeographicLib library for spheroid calculations.

This function variant does not utilize any spatial index.

-
Immutable
_st_dwithin(geography_a: geography, geography_b: geography, distance: float, use_spheroid: bool) → bool

Returns true if any of geography_a is within distance meters of geography_b, inclusive."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

The calculations performed are have a precision of 1cm.

This function utilizes the S2 library for spherical calculations.

This function utilizes the GeographicLib library for spheroid calculations.

This function variant does not utilize any spatial index.

-
Immutable
_st_dwithin(geometry_a: geometry, geometry_b: geometry, distance: float) → bool

Returns true if any of geometry_a is within distance units of geometry_b, inclusive.

This function variant does not utilize any spatial index.

-
Immutable
_st_dwithinexclusive(geography_a: geography, geography_b: geography, distance: float) → bool

Returns true if any of geography_a is within distance meters of geography_b, exclusive. Uses a spheroid to perform the operation."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

The calculations performed are have a precision of 1cm.

This function utilizes the GeographicLib library for spheroid calculations.

This function variant does not utilize any spatial index.

-
Immutable
_st_dwithinexclusive(geography_a: geography, geography_b: geography, distance: float, use_spheroid: bool) → bool

Returns true if any of geography_a is within distance meters of geography_b, exclusive."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

The calculations performed are have a precision of 1cm.

This function utilizes the S2 library for spherical calculations.

This function utilizes the GeographicLib library for spheroid calculations.

This function variant does not utilize any spatial index.

-
Immutable
_st_dwithinexclusive(geometry_a: geometry, geometry_b: geometry, distance: float) → bool

Returns true if any of geometry_a is within distance units of geometry_b, exclusive.

This function variant does not utilize any spatial index.

-
Immutable
_st_equals(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if geometry_a is spatially equal to geometry_b, i.e. ST_Within(geometry_a, geometry_b) = ST_Within(geometry_b, geometry_a) = true.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_intersects(geography_a: geography, geography_b: geography) → bool

Returns true if geography_a shares any portion of space with geography_b.

The calculations performed are have a precision of 1cm.

This function utilizes the S2 library for spherical calculations.

This function variant does not utilize any spatial index.

-
Immutable
_st_intersects(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if geometry_a shares any portion of space with geometry_b.

The calculations performed are have a precision of 1cm.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_overlaps(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if geometry_a intersects but does not completely contain geometry_b, or vice versa. “Does not completely” implies ST_Within(geometry_a, geometry_b) = ST_Within(geometry_b, geometry_a) = false.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_touches(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if the only points in common between geometry_a and geometry_b are on the boundary. Note points do not touch other points.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
_st_within(geometry_a: geometry, geometry_b: geometry) → bool

Returns true if geometry_a is completely inside geometry_b.

This function utilizes the GEOS module.

This function variant does not utilize any spatial index.

-
Immutable
addgeometrycolumn(catalog_name: string, schema_name: string, table_name: string, column_name: string, srid: int, type: string, dimension: int) → string

Adds a new geometry column to an existing table and returns metadata about the column created.

-
Volatile
addgeometrycolumn(catalog_name: string, schema_name: string, table_name: string, column_name: string, srid: int, type: string, dimension: int, use_typmod: bool) → string

Adds a new geometry column to an existing table and returns metadata about the column created.

-
Volatile
addgeometrycolumn(schema_name: string, table_name: string, column_name: string, srid: int, type: string, dimension: int) → string

Adds a new geometry column to an existing table and returns metadata about the column created.

-
Volatile
addgeometrycolumn(schema_name: string, table_name: string, column_name: string, srid: int, type: string, dimension: int, use_typmod: bool) → string

Adds a new geometry column to an existing table and returns metadata about the column created.

-
Volatile
addgeometrycolumn(table_name: string, column_name: string, srid: int, type: string, dimension: int) → string

Adds a new geometry column to an existing table and returns metadata about the column created.

-
Volatile
addgeometrycolumn(table_name: string, column_name: string, srid: int, type: string, dimension: int, use_typmod: bool) → string

Adds a new geometry column to an existing table and returns metadata about the column created.

-
Volatile
geometrytype(geometry: geometry) → string

Returns the type of geometry as a string.

This function utilizes the GEOS module.

-
Immutable
geomfromewkb(val: bytes) → geometry

Returns the Geometry from an EWKB representation.

-
Immutable
geomfromewkt(val: string) → geometry

Returns the Geometry from an EWKT representation.

-
Immutable
postgis_addbbox(geometry: geometry) → geometry

Compatibility placeholder function with PostGIS. This does not perform any operation on the Geometry.

-
Immutable
postgis_dropbbox(geometry: geometry) → geometry

Compatibility placeholder function with PostGIS. This does not perform any operation on the Geometry.

-
Immutable
postgis_extensions_upgrade() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_full_version() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_geos_version() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_getbbox(geometry: geometry) → box2d

Returns a box2d encapsulating the given Geometry.

-
Immutable
postgis_hasbbox(geometry: geometry) → bool

Returns whether a given Geometry has a bounding box. False for points and empty geometries; always true otherwise.

-
Immutable
postgis_lib_build_date() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_lib_version() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_liblwgeom_version() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_libxml_version() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_proj_version() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_scripts_build_date() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_scripts_installed() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_scripts_released() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_version() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
postgis_wagyu_version() → string

Compatibility placeholder function with PostGIS. Returns a fixed string based on PostGIS 3.0.1, with minor edits.

-
Immutable
st_addmeasure(geometry: geometry, start: float, end: float) → geometry

Returns a copy of a LineString or MultiLineString with measure coordinates linearly interpolated between the specified start and end values. Any existing M coordinates will be overwritten.

-
Immutable
st_addpoint(line_string: geometry, point: geometry) → geometry

Adds a Point to the end of a LineString.

-
Immutable
st_addpoint(line_string: geometry, point: geometry, index: int) → geometry

Adds a Point to a LineString at the given 0-based index (-1 to append).

-
Immutable
st_affine(geometry: geometry, a: float, b: float, c: float, d: float, e: float, f: float, g: float, h: float, i: float, x_off: float, y_off: float, z_off: float) → geometry

Applies a 3D affine transformation to the given geometry.

The matrix transformation will be applied as follows for each coordinate: / a b c x_off \ / x
| d e f y_off | | y | | g h i z_off | | z | \ 0 0 0 1 / \ 0 /

-
Immutable
st_affine(geometry: geometry, a: float, b: float, d: float, e: float, x_off: float, y_off: float) → geometry

Applies a 2D affine transformation to the given geometry.

The matrix transformation will be applied as follows for each coordinate: / a b x_off \ / x
| d e y_off | | y | \ 0 0 1 / \ 0 /

-
Immutable
st_angle(line1: geometry, line2: geometry) → float

Returns the clockwise angle between two LINESTRING geometries, treating them as vectors between their start- and endpoints. Returns NULL if any vectors have 0 length.

-
Immutable
st_angle(point1: geometry, point2: geometry, point3: geometry) → float

Returns the clockwise angle between the vectors formed by point2,point1 and point2,point3. The arguments must be POINT geometries. Returns NULL if any vectors have 0 length.

-
Immutable
st_angle(point1: geometry, point2: geometry, point3: geometry, point4: geometry) → float

Returns the clockwise angle between the vectors formed by point1,point2 and point3,point4. The arguments must be POINT geometries. Returns NULL if any vectors have 0 length.

-
Immutable
st_area(geography: geography) → float

Returns the area of the given geography in meters^2. Uses a spheroid to perform the operation.

This function utilizes the GeographicLib library for spheroid calculations.

-
Immutable
st_area(geography: geography, use_spheroid: bool) → float

Returns the area of the given geography in meters^2.

This function utilizes the S2 library for spherical calculations.

This function utilizes the GeographicLib library for spheroid calculations.

-
Immutable
st_area(geometry: geometry) → float

Returns the area of the given geometry.

This function utilizes the GEOS module.

-
Immutable
st_area(geometry_str: string) → float

Returns the area of the given geometry.

This function utilizes the GEOS module.

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_area2d(geometry: geometry) → float

Returns the area of the given geometry.

This function utilizes the GEOS module.

-
Immutable
st_asbinary(geography: geography) → bytes

Returns the WKB representation of a given Geography.

-
Immutable
st_asbinary(geography: geography, xdr_or_ndr: string) → bytes

Returns the WKB representation of a given Geography. This variant has a second argument denoting the encoding - xdr for big endian and ndr for little endian.

-
Immutable
st_asbinary(geometry: geometry) → bytes

Returns the WKB representation of a given Geometry.

-
Immutable
st_asbinary(geometry: geometry, xdr_or_ndr: string) → bytes

Returns the WKB representation of a given Geometry. This variant has a second argument denoting the encoding - xdr for big endian and ndr for little endian.

-
Immutable
st_asencodedpolyline(geometry: geometry) → string

Returns the geometry as an Encoded Polyline. This format is used by Google Maps with precision=5 and by Open Source Routing Machine with precision=5 and 6. Preserves 5 decimal places.

-
Immutable
st_asencodedpolyline(geometry: geometry, precision: int4) → string

Returns the geometry as an Encoded Polyline. This format is used by Google Maps with precision=5 and by Open Source Routing Machine with precision=5 and 6. Precision specifies how many decimal places will be preserved in Encoded Polyline. Value should be the same on encoding and decoding, or coordinates will be incorrect.

-
Immutable
st_asewkb(geography: geography) → bytes

Returns the EWKB representation of a given Geography.

-
Immutable
st_asewkb(geometry: geometry) → bytes

Returns the EWKB representation of a given Geometry.

-
Immutable
st_asewkt(geography: geography) → string

Returns the EWKT representation of a given Geography. A default of 15 decimal digits is used.

-
Immutable
st_asewkt(geography: geography, max_decimal_digits: int) → string

Returns the EWKT representation of a given Geography. The max_decimal_digits parameter controls the maximum decimal digits to print after the .. Use -1 to print as many digits as required to rebuild the same number.

-
Immutable
st_asewkt(geometry: geometry) → string

Returns the EWKT representation of a given Geometry. A maximum of 15 decimal digits is used.

-
Immutable
st_asewkt(geometry: geometry, max_decimal_digits: int) → string

Returns the WKT representation of a given Geometry. The max_decimal_digits parameter controls the maximum decimal digits to print after the .. Use -1 to print as many digits as required to rebuild the same number.

-
Immutable
st_asewkt(geometry_str: string) → string

Returns the EWKT representation of a given Geometry. A maximum of 15 decimal digits is used.

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_asewkt(geometry_str: string, max_decimal_digits: int) → string

Returns the WKT representation of a given Geometry. The max_decimal_digits parameter controls the maximum decimal digits to print after the .. Use -1 to print as many digits as required to rebuild the same number.

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_asgeojson(geography: geography) → string

Returns the GeoJSON representation of a given Geography. Coordinates have a maximum of 9 decimal digits.

-
Immutable
st_asgeojson(geography: geography, max_decimal_digits: int) → string

Returns the GeoJSON representation of a given Geography with max_decimal_digits output for each coordinate value.

-
Immutable
st_asgeojson(geography: geography, max_decimal_digits: int, options: int) → string

Returns the GeoJSON representation of a given Geography with max_decimal_digits output for each coordinate value.

Options is a flag that can be bitmasked. The options are:

    @@ -1590,11 +1590,11 @@ Precision specifies how many decimal places will be preserved in Encoded Polylin
  • 4: GeoJSON Long CRS (e.g urn:ogc:def:crs:EPSG::4326)
  • 8: GeoJSON Short CRS if not EPSG:4326
-
Immutable
st_asgeojson(geometry: geometry) → string

Returns the GeoJSON representation of a given Geometry. Coordinates have a maximum of 9 decimal digits.

-
Immutable
st_asgeojson(geometry: geometry, max_decimal_digits: int) → string

Returns the GeoJSON representation of a given Geometry with max_decimal_digits output for each coordinate value.

-
Immutable
st_asgeojson(geometry: geometry, max_decimal_digits: int, options: int) → string

Returns the GeoJSON representation of a given Geometry with max_decimal_digits output for each coordinate value.

Options is a flag that can be bitmasked. The options are:

    @@ -1604,13 +1604,13 @@ Precision specifies how many decimal places will be preserved in Encoded Polylin
  • 4: GeoJSON Long CRS (e.g urn:ogc:def:crs:EPSG::4326)
  • 8: GeoJSON Short CRS if not EPSG:4326 (default for Geometry)
-
Immutable
st_asgeojson(geometry_str: string) → string

Returns the GeoJSON representation of a given Geometry. Coordinates have a maximum of 9 decimal digits.

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_asgeojson(geometry_str: string, max_decimal_digits: int) → string

Returns the GeoJSON representation of a given Geometry with max_decimal_digits output for each coordinate value.

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_asgeojson(geometry_str: string, max_decimal_digits: int, options: int) → string

Returns the GeoJSON representation of a given Geometry with max_decimal_digits output for each coordinate value.

Options is a flag that can be bitmasked. The options are:

    @@ -1621,68 +1621,68 @@ Precision specifies how many decimal places will be preserved in Encoded Polylin
  • 8: GeoJSON Short CRS if not EPSG:4326 (default for Geometry)

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_asgeojson(row: tuple) → string

Returns the GeoJSON representation of a given Geometry. Coordinates have a maximum of 9 decimal digits.

-
Immutable
st_asgeojson(row: tuple, geo_column: string) → string

Returns the GeoJSON representation of a given Geometry, using geo_column as the geometry for the given Feature. Coordinates have a maximum of 9 decimal digits.

-
Stable
st_asgeojson(row: tuple, geo_column: string, max_decimal_digits: int) → string

Returns the GeoJSON representation of a given Geometry, using geo_column as the geometry for the given Feature. max_decimal_digits will be output for each coordinate value.

-
Stable
st_asgeojson(row: tuple, geo_column: string, max_decimal_digits: int, pretty: bool) → string

Returns the GeoJSON representation of a given Geometry, using geo_column as the geometry for the given Feature. max_decimal_digits will be output for each coordinate value. Output will be pretty printed in JSON if pretty is true.

-
Stable
st_ashexewkb(geography: geography) → string

Returns the EWKB representation in hex of a given Geography.

-
Immutable
st_ashexewkb(geography: geography, xdr_or_ndr: string) → string

Returns the EWKB representation in hex of a given Geography. This variant has a second argument denoting the encoding - xdr for big endian and ndr for little endian.

-
Immutable
st_ashexewkb(geometry: geometry) → string

Returns the EWKB representation in hex of a given Geometry.

-
Immutable
st_ashexewkb(geometry: geometry, xdr_or_ndr: string) → string

Returns the EWKB representation in hex of a given Geometry. This variant has a second argument denoting the encoding - xdr for big endian and ndr for little endian.

-
Immutable
st_ashexwkb(geography: geography) → string

Returns the WKB representation in hex of a given Geography.

-
Immutable
st_ashexwkb(geometry: geometry) → string

Returns the WKB representation in hex of a given Geometry.

-
Immutable
st_askml(geography: geography) → string

Returns the KML representation of a given Geography.

-
Immutable
st_askml(geometry: geometry) → string

Returns the KML representation of a given Geometry.

-
Immutable
st_askml(geometry_str: string) → string

Returns the KML representation of a given Geometry.

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_astext(geography: geography) → string

Returns the WKT representation of a given Geography. A default of 15 decimal digits is used.

-
Immutable
st_astext(geography: geography, max_decimal_digits: int) → string

Returns the WKT representation of a given Geography. The max_decimal_digits parameter controls the maximum decimal digits to print after the .. Use -1 to print as many digits as required to rebuild the same number.

-
Immutable
st_astext(geometry: geometry) → string

Returns the WKT representation of a given Geometry. A maximum of 15 decimal digits is used.

-
Immutable
st_astext(geometry: geometry, max_decimal_digits: int) → string

Returns the WKT representation of a given Geometry. The max_decimal_digits parameter controls the maximum decimal digits to print after the .. Use -1 to print as many digits as required to rebuild the same number.

-
Immutable
st_astext(geometry_str: string) → string

Returns the WKT representation of a given Geometry. A maximum of 15 decimal digits is used.

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_astext(geometry_str: string, max_decimal_digits: int) → string

Returns the WKT representation of a given Geometry. The max_decimal_digits parameter controls the maximum decimal digits to print after the .. Use -1 to print as many digits as required to rebuild the same number.

This variant will cast all geometry_str arguments into Geometry types.

-
Immutable
st_astwkb(geometry: geometry, precision_xy: int) → bytes

Returns the TWKB representation of a given geometry.

-
Immutable
st_astwkb(geometry: geometry, precision_xy: int, precision_z: int) → bytes

Returns the TWKB representation of a given geometry.

-
Immutable
st_astwkb(geometry: geometry, precision_xy: int, precision_z: int, precision_m: int) → bytes

Returns the TWKB representation of a given geometry.

-
Immutable
st_azimuth(geography_a: geography, geography_b: geography) → float

Returns the azimuth in radians of the segment defined by the given point geographies, or NULL if the two points are coincident. It is solved using the Inverse geodesic problem.

The azimuth is angle is referenced from north, and is positive clockwise: North = 0; East = π/2; South = π; West = 3π/2.

This function utilizes the GeographicLib library for spheroid calculations.

-
Immutable
st_azimuth(geometry_a: geometry, geometry_b: geometry) → float

Returns the azimuth in radians of the segment defined by the given point geometries, or NULL if the two points are coincident.

The azimuth is angle is referenced from north, and is positive clockwise: North = 0; East = π/2; South = π; West = 3π/2.

-
Immutable
st_boundary(geometry: geometry) → geometry

Returns the closure of the combinatorial boundary of this Geometry.

This function utilizes the GEOS module.

-
Immutable
st_box2dfromgeohash(geohash: string) → box2d

Return a Box2D from a GeoHash string with max precision.

-
Immutable
st_box2dfromgeohash(geohash: string, precision: int) → box2d

Return a Box2D from a GeoHash string with supplied precision.

-
Immutable
st_buffer(geography: geography, distance: float) → geography

Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

This function utilizes the GEOS module.

@@ -1690,7 +1690,7 @@ from the given Geometry.

the Geography objects into Geometry objects before applying an LAEA, UTM or Web Mercator based projection based on the bounding boxes of the given Geography objects. When the result is calculated, the result is transformed back into a Geography with SRID 4326.

-
Immutable
st_buffer(geography: geography, distance: float, buffer_style_params: string) → geography

Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

This variant takes in a space separate parameter string, which will augment the buffer styles. Valid parameters are:

@@ -1706,7 +1706,7 @@ given Geometry.

the Geography objects into Geometry objects before applying an LAEA, UTM or Web Mercator based projection based on the bounding boxes of the given Geography objects. When the result is calculated, the result is transformed back into a Geography with SRID 4326.

-
Immutable
st_buffer(geography: geography, distance: float, quad_segs: int) → geography

Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

This variant approximates the circle into quad_seg segments per line (the default is 8).

@@ -1715,15 +1715,15 @@ given Geometry.

the Geography objects into Geometry objects before applying an LAEA, UTM or Web Mercator based projection based on the bounding boxes of the given Geography objects. When the result is calculated, the result is transformed back into a Geography with SRID 4326.

-
Immutable
st_buffer(geometry: geometry, distance: decimal) → geometry

Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

This function utilizes the GEOS module.

-
Immutable
st_buffer(geometry: geometry, distance: float) → geometry

Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

This function utilizes the GEOS module.

-
Immutable
st_buffer(geometry: geometry, distance: float, buffer_style_params: string) → geometry

Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

This variant takes in a space separate parameter string, which will augment the buffer styles. Valid parameters are:

@@ -1735,26 +1735,26 @@ given Geometry.

  • mitre_limit=<float>, default 5.0
  • This function utilizes the GEOS module.

    -
    Immutable
    st_buffer(geometry: geometry, distance: float, quad_segs: int) → geometry

    Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

    This variant approximates the circle into quad_seg segments per line (the default is 8).

    This function utilizes the GEOS module.

    -
    Immutable
    st_buffer(geometry: geometry, distance: int) → geometry

    Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

    This function utilizes the GEOS module.

    -
    Immutable
    st_buffer(geometry_str: string, distance: decimal) → geometry

    Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

    This function utilizes the GEOS module.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_buffer(geometry_str: string, distance: float) → geometry

    Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

    This function utilizes the GEOS module.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_buffer(geometry_str: string, distance: float, buffer_style_params: string) → geometry

    Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

    This variant takes in a space separate parameter string, which will augment the buffer styles. Valid parameters are:

    @@ -1767,387 +1767,387 @@ given Geometry.

    This function utilizes the GEOS module.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_buffer(geometry_str: string, distance: float, quad_segs: int) → geometry

    Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

    This variant approximates the circle into quad_seg segments per line (the default is 8).

    This function utilizes the GEOS module.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_buffer(geometry_str: string, distance: int) → geometry

    Returns a Geometry that represents all points whose distance is less than or equal to the given distance from the given Geometry.

    This function utilizes the GEOS module.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_centroid(geography: geography) → geography

    Returns the centroid of given geography. Uses a spheroid to perform the operation.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_centroid(geography: geography, use_spheroid: bool) → geography

    Returns the centroid of given geography.

    This function utilizes the S2 library for spherical calculations.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_centroid(geometry: geometry) → geometry

    Returns the centroid of the given geometry.

    This function utilizes the GEOS module.

    -
    Immutable
    st_centroid(geometry_str: string) → geometry

    Returns the centroid of the given geometry.

    This function utilizes the GEOS module.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_clipbybox2d(geometry: geometry, box2d: box2d) → geometry

    Clips the geometry to conform to the bounding box specified by box2d.

    -
    Immutable
    st_closestpoint(geometry_a: geometry, geometry_b: geometry) → geometry

    Returns the 2-dimensional point on geometry_a that is closest to geometry_b. This is the first point of the shortest line.

    -
    Immutable
    st_collectionextract(geometry: geometry, type: int) → geometry

    Given a collection, returns a multitype consisting only of elements of the specified type. If there are no elements of the given type, an EMPTY geometry is returned. Types are specified as 1=POINT, 2=LINESTRING, 3=POLYGON - other types are not supported.

    -
    Immutable
    st_collectionhomogenize(geometry: geometry) → geometry

    Returns the “simplest” representation of a collection’s contents. Collections of a single type will be returned as an appopriate multitype, or a singleton if it only contains a single geometry.

    -
    Immutable
    st_combinebbox(box2d: box2d, geometry: geometry) → box2d

    Combines the current bounding box with the bounding box of the Geometry.

    -
    Immutable
    st_contains(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if no points of geometry_b lie in the exterior of geometry_a, and there is at least one point in the interior of geometry_b that lies in the interior of geometry_a.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_containsproperly(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if geometry_b intersects the interior of geometry_a but not the boundary or exterior of geometry_a.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_convexhull(geometry: geometry) → geometry

    Returns a geometry that represents the Convex Hull of the given geometry.

    This function utilizes the GEOS module.

    -
    Immutable
    st_coorddim(geometry: geometry) → int

    Returns the number of coordinate dimensions of a given Geometry.

    -
    Immutable
    st_coveredby(geography_a: geography, geography_b: geography) → bool

    Returns true if no point in geography_a is outside geography_b.

    The calculations performed are have a precision of 1cm.

    This function utilizes the S2 library for spherical calculations.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_coveredby(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if no point in geometry_a is outside geometry_b.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_coveredby(geometry_a_str: string, geometry_b_str: string) → bool

    Returns true if no point in geometry_a is outside geometry_b.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_covers(geography_a: geography, geography_b: geography) → bool

    Returns true if no point in geography_b is outside geography_a.

    This function utilizes the S2 library for spherical calculations.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_covers(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if no point in geometry_b is outside geometry_a.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_covers(geometry_a_str: string, geometry_b_str: string) → bool

    Returns true if no point in geometry_b is outside geometry_a.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_crosses(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if geometry_a has some - but not all - interior points in common with geometry_b.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_dfullywithin(geometry_a: geometry, geometry_b: geometry, distance: float) → bool

    Returns true if every pair of points comprising geometry_a and geometry_b are within distance units, inclusive. In other words, the ST_MaxDistance between geometry_a and geometry_b is less than or equal to distance units.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_dfullywithinexclusive(geometry_a: geometry, geometry_b: geometry, distance: float) → bool

    Returns true if every pair of points comprising geometry_a and geometry_b are within distance units, exclusive. In other words, the ST_MaxDistance between geometry_a and geometry_b is less than distance units.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_difference(geometry_a: geometry, geometry_b: geometry) → geometry

    Returns the difference of two Geometries.

    This function utilizes the GEOS module.

    -
    Immutable
    st_dimension(geometry: geometry) → int

    Returns the number of topological dimensions of a given Geometry.

    -
    Immutable
    st_disjoint(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if geometry_a does not overlap, touch or is within geometry_b.

    This function utilizes the GEOS module.

    -
    Immutable
    st_distance(geography_a: geography, geography_b: geography) → float

    Returns the distance in meters between geography_a and geography_b. Uses a spheroid to perform the operation."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_distance(geography_a: geography, geography_b: geography, use_spheroid: bool) → float

    Returns the distance in meters between geography_a and geography_b."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

    This function utilizes the S2 library for spherical calculations.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_distance(geometry_a: geometry, geometry_b: geometry) → float

    Returns the distance between the given geometries.

    -
    Immutable
    st_distance(geometry_a_str: string, geometry_b_str: string) → float

    Returns the distance between the given geometries.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_distancesphere(geometry_a: geometry, geometry_b: geometry) → float

    Returns the distance in meters between geometry_a and geometry_b assuming the coordinates represent lng/lat points on a sphere.

    This function utilizes the S2 library for spherical calculations.

    -
    Immutable
    st_distancespheroid(geometry_a: geometry, geometry_b: geometry) → float

    Returns the distance in meters between geometry_a and geometry_b assuming the coordinates represent lng/lat points on a spheroid."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

    This function utilizes the S2 library for spherical calculations.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_dwithin(geography_a: geography, geography_b: geography, distance: float) → bool

    Returns true if any of geography_a is within distance meters of geography_b, inclusive. Uses a spheroid to perform the operation."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

    The calculations performed are have a precision of 1cm.

    This function utilizes the GeographicLib library for spheroid calculations.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_dwithin(geography_a: geography, geography_b: geography, distance: float, use_spheroid: bool) → bool

    Returns true if any of geography_a is within distance meters of geography_b, inclusive."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

    The calculations performed are have a precision of 1cm.

    This function utilizes the S2 library for spherical calculations.

    This function utilizes the GeographicLib library for spheroid calculations.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_dwithin(geometry_a: geometry, geometry_b: geometry, distance: float) → bool

    Returns true if any of geometry_a is within distance units of geometry_b, inclusive.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_dwithin(geometry_a_str: string, geometry_b_str: string, distance: float) → bool

    Returns true if any of geometry_a is within distance units of geometry_b, inclusive.

    This function variant will attempt to utilize any available spatial index.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_dwithinexclusive(geography_a: geography, geography_b: geography, distance: float) → bool

    Returns true if any of geography_a is within distance meters of geography_b, exclusive. Uses a spheroid to perform the operation."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

    The calculations performed are have a precision of 1cm.

    This function utilizes the GeographicLib library for spheroid calculations.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_dwithinexclusive(geography_a: geography, geography_b: geography, distance: float, use_spheroid: bool) → bool

    Returns true if any of geography_a is within distance meters of geography_b, exclusive."\n\nWhen operating on a spheroid, this function will use the sphere to calculate the closest two points. The spheroid distance between these two points is calculated using GeographicLib. This follows observed PostGIS behavior.

    The calculations performed are have a precision of 1cm.

    This function utilizes the S2 library for spherical calculations.

    This function utilizes the GeographicLib library for spheroid calculations.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_dwithinexclusive(geometry_a: geometry, geometry_b: geometry, distance: float) → bool

    Returns true if any of geometry_a is within distance units of geometry_b, exclusive.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_dwithinexclusive(geometry_a_str: string, geometry_b_str: string, distance: float) → bool

    Returns true if any of geometry_a is within distance units of geometry_b, exclusive.

    This function variant will attempt to utilize any available spatial index.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_endpoint(geometry: geometry) → geometry

    Returns the last point of a geometry which has shape LineString. Returns NULL if the geometry is not a LineString.

    -
    Immutable
    st_envelope(box2d: box2d) → geometry

    Returns a bounding geometry for the given box.

    -
    Immutable
    st_envelope(geometry: geometry) → geometry

    Returns a bounding envelope for the given geometry.

    For geometries which have a POINT or LINESTRING bounding box (i.e. is a single point or a horizontal or vertical line), a POINT or LINESTRING is returned. Otherwise, the returned POLYGON will be ordered Bottom Left, Top Left, Top Right, Bottom Right, Bottom Left.

    -
    Immutable
    st_equals(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if geometry_a is spatially equal to geometry_b, i.e. ST_Within(geometry_a, geometry_b) = ST_Within(geometry_b, geometry_a) = true.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_estimatedextent(schema_name: string, table_name: string, geocolumn_name: string) → box2d

    Returns the estimated extent of the geometries in the column of the given table. This currently always returns NULL.

    -
    Stable
    st_estimatedextent(schema_name: string, table_name: string, geocolumn_name: string, parent_only: bool) → box2d

    Returns the estimated extent of the geometries in the column of the given table. This currently always returns NULL.

    The parent_only boolean is always ignored.

    -
    Stable
    st_estimatedextent(table_name: string, geocolumn_name: string) → box2d

    Returns the estimated extent of the geometries in the column of the given table. This currently always returns NULL.

    -
    Stable
    st_expand(box2d: box2d, delta: float) → box2d

    Extends the box2d by delta units across all dimensions.

    -
    Immutable
    st_expand(box2d: box2d, delta_x: float, delta_y: float) → box2d

    Extends the box2d by delta_x units in the x dimension and delta_y units in the y dimension.

    -
    Immutable
    st_expand(geometry: geometry, delta: float) → geometry

    Extends the bounding box represented by the geometry by delta units across all dimensions, returning a Polygon representing the new bounding box.

    -
    Immutable
    st_expand(geometry: geometry, delta_x: float, delta_y: float) → geometry

    Extends the bounding box represented by the geometry by delta_x units in the x dimension and delta_y units in the y dimension, returning a Polygon representing the new bounding box.

    -
    Immutable
    st_exteriorring(geometry: geometry) → geometry

    Returns the exterior ring of a Polygon as a LineString. Returns NULL if the shape is not a Polygon.

    -
    Immutable
    st_flipcoordinates(geometry: geometry) → geometry

    Returns a new geometry with the X and Y axes flipped.

    -
    Immutable
    st_force2d(geometry: geometry) → geometry

    Returns a Geometry that is forced into XY layout with any Z or M dimensions discarded.

    -
    Immutable
    st_force3d(geometry: geometry) → geometry

    Returns a Geometry that is forced into XYZ layout. If a Z coordinate doesn’t exist, it will be set to 0. If a M coordinate is present, it will be discarded.

    -
    Immutable
    st_force3d(geometry: geometry, defaultZ: float) → geometry

    Returns a Geometry that is forced into XYZ layout. If a Z coordinate doesn’t exist, it will be set to the specified default Z value. If a M coordinate is present, it will be discarded.

    -
    Immutable
    st_force3dm(geometry: geometry) → geometry

    Returns a Geometry that is forced into XYM layout. If a M coordinate doesn’t exist, it will be set to 0. If a Z coordinate is present, it will be discarded.

    -
    Immutable
    st_force3dm(geometry: geometry, defaultM: float) → geometry

    Returns a Geometry that is forced into XYM layout. If a M coordinate doesn’t exist, it will be set to the specified default M value. If a Z coordinate is present, it will be discarded.

    -
    Immutable
    st_force3dz(geometry: geometry) → geometry

    Returns a Geometry that is forced into XYZ layout. If a Z coordinate doesn’t exist, it will be set to 0. If a M coordinate is present, it will be discarded.

    -
    Immutable
    st_force3dz(geometry: geometry, defaultZ: float) → geometry

    Returns a Geometry that is forced into XYZ layout. If a Z coordinate doesn’t exist, it will be set to the specified default Z value. If a M coordinate is present, it will be discarded.

    -
    Immutable
    st_force4d(geometry: geometry) → geometry

    Returns a Geometry that is forced into XYZM layout. If a Z coordinate doesn’t exist, it will be set to 0. If a M coordinate doesn’t exist, it will be set to 0.

    -
    Immutable
    st_force4d(geometry: geometry, defaultZ: float) → geometry

    Returns a Geometry that is forced into XYZ layout. If a Z coordinate doesn’t exist, it will be set to the specified default Z value. If a M coordinate doesn’t exist, it will be set to 0.

    -
    Immutable
    st_force4d(geometry: geometry, defaultZ: float, defaultM: float) → geometry

    Returns a Geometry that is forced into XYZ layout. If a Z coordinate doesn’t exist, it will be set to the specified Z value. If a M coordinate doesn’t exist, it will be set to the specified M value.

    -
    Immutable
    st_forcecollection(geometry: geometry) → geometry

    Converts the geometry into a GeometryCollection.

    -
    Immutable
    st_forcepolygonccw(geometry: geometry) → geometry

    Returns a Geometry where all Polygon objects have exterior rings in the counter-clockwise orientation and interior rings in the clockwise orientation. Non-Polygon objects are unchanged.

    -
    Immutable
    st_forcepolygoncw(geometry: geometry) → geometry

    Returns a Geometry where all Polygon objects have exterior rings in the clockwise orientation and interior rings in the counter-clockwise orientation. Non-Polygon objects are unchanged.

    -
    Immutable
    st_frechetdistance(geometry_a: geometry, geometry_b: geometry) → float

    Returns the Frechet distance between the given geometries.

    This function utilizes the GEOS module.

    -
    Immutable
    st_frechetdistance(geometry_a: geometry, geometry_b: geometry, densify_frac: float) → float

    Returns the Frechet distance between the given geometries, with the given segment densification (range 0.0-1.0, -1 to disable).

    Smaller densify_frac gives a more accurate Fréchet distance. However, the computation time and memory usage increases with the square of the number of subsegments.

    This function utilizes the GEOS module.

    -
    Immutable
    st_generatepoints(geometry: geometry, npoints: int4) → geometry

    Generates pseudo-random points until the requested number are found within the input area. Uses system time as a seed. The requested number of points must be not larger than 65336.

    -
    Volatile
    st_generatepoints(geometry: geometry, npoints: int4, seed: int4) → geometry

    Generates pseudo-random points until the requested number are found within the input area. The requested number of points must be not larger than 65336.

    -
    Immutable
    st_geogfromewkb(val: bytes) → geography

    Returns the Geography from an EWKB representation.

    -
    Immutable
    st_geogfromewkt(val: string) → geography

    Returns the Geography from an EWKT representation.

    -
    Immutable
    st_geogfromgeojson(val: string) → geography

    Returns the Geography from an GeoJSON representation.

    -
    Immutable
    st_geogfromgeojson(val: jsonb) → geography

    Returns the Geography from an GeoJSON representation.

    -
    Immutable
    st_geogfromtext(str: string, srid: int) → geography

    Returns the Geography from a WKT or EWKT representation with an SRID. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_geogfromtext(val: string) → geography

    Returns the Geography from a WKT or EWKT representation.

    -
    Immutable
    st_geogfromwkb(bytes: bytes, srid: int) → geography

    Returns the Geography from a WKB (or EWKB) representation with the given SRID set.

    -
    Immutable
    st_geogfromwkb(val: bytes) → geography

    Returns the Geography from a WKB (or EWKB) representation.

    -
    Immutable
    st_geographyfromtext(str: string, srid: int) → geography

    Returns the Geography from a WKT or EWKT representation with an SRID. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_geographyfromtext(val: string) → geography

    Returns the Geography from a WKT or EWKT representation.

    -
    Immutable
    st_geohash(geography: geography) → string

    Returns a GeoHash representation of the geeographywith full precision if a point is provided, or with variable precision based on the size of the feature.

    -
    Immutable
    st_geohash(geography: geography, precision: int) → string

    Returns a GeoHash representation of the geography with the supplied precision.

    -
    Immutable
    st_geohash(geometry: geometry) → string

    Returns a GeoHash representation of the geometry with full precision if a point is provided, or with variable precision based on the size of the feature. This will error any coordinates are outside the bounds of longitude/latitude.

    -
    Immutable
    st_geohash(geometry: geometry, precision: int) → string

    Returns a GeoHash representation of the geometry with the supplied precision. This will error any coordinates are outside the bounds of longitude/latitude.

    -
    Immutable
    st_geomcollfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not GeometryCollection, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_geomcollfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not GeometryCollection, NULL is returned.

    -
    Immutable
    st_geomcollfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not GeometryCollection, NULL is returned.

    -
    Immutable
    st_geomcollfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not GeometryCollection, NULL is returned.

    -
    Immutable
    st_geometryfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_geometryfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation.

    -
    Immutable
    st_geometryn(geometry: geometry, n: int) → geometry

    Returns the n-th Geometry (1-indexed). Returns NULL if out of bounds.

    -
    Immutable
    st_geometrytype(geometry: geometry) → string

    Returns the type of geometry as a string prefixed with ST_.

    This function utilizes the GEOS module.

    -
    Immutable
    st_geomfromewkb(val: bytes) → geometry

    Returns the Geometry from an EWKB representation.

    -
    Immutable
    st_geomfromewkt(val: string) → geometry

    Returns the Geometry from an EWKT representation.

    -
    Immutable
    st_geomfromgeohash(geohash: string) → geometry

    Return a POLYGON Geometry from a GeoHash string with max precision.

    -
    Immutable
    st_geomfromgeohash(geohash: string, precision: int) → geometry

    Return a POLYGON Geometry from a GeoHash string with supplied precision.

    -
    Immutable
    st_geomfromgeojson(val: string) → geometry

    Returns the Geometry from an GeoJSON representation.

    -
    Immutable
    st_geomfromgeojson(val: jsonb) → geometry

    Returns the Geometry from an GeoJSON representation.

    -
    Immutable
    st_geomfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_geomfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation.

    -
    Immutable
    st_geomfromwkb(bytes: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with the given SRID set.

    -
    Immutable
    st_geomfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation.

    -
    Immutable
    st_hasarc(geometry: geometry) → bool

    Returns whether there is a CIRCULARSTRING in the geometry.

    -
    Immutable
    st_hausdorffdistance(geometry_a: geometry, geometry_b: geometry) → float

    Returns the Hausdorff distance between the given geometries.

    This function utilizes the GEOS module.

    -
    Immutable
    st_hausdorffdistance(geometry_a: geometry, geometry_b: geometry, densify_frac: float) → float

    Returns the Hausdorff distance between the given geometries, with the given segment densification (range 0.0-1.0).

    This function utilizes the GEOS module.

    -
    Immutable
    st_interiorringn(geometry: geometry, n: int) → geometry

    Returns the n-th (1-indexed) interior ring of a Polygon as a LineString. Returns NULL if the shape is not a Polygon, or the ring does not exist.

    -
    Immutable
    st_intersection(geography_a: geography, geography_b: geography) → geography

    Returns the point intersections of the given geographies.

    This operation is done by transforming the object into a Geometry. This occurs by translating the Geography objects into Geometry objects before applying an LAEA, UTM or Web Mercator based projection based on the bounding boxes of the given Geography objects. When the result is calculated, the result is transformed back into a Geography with SRID 4326.

    This function utilizes the GEOS module.

    -
    Immutable
    st_intersection(geometry_a: geometry, geometry_b: geometry) → geometry

    Returns the point intersections of the given geometries.

    This function utilizes the GEOS module.

    -
    Immutable
    st_intersection(geometry_a_str: string, geometry_b_str: string) → geometry

    Returns the point intersections of the given geometries.

    This function utilizes the GEOS module.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_intersects(geography_a: geography, geography_b: geography) → bool

    Returns true if geography_a shares any portion of space with geography_b.

    The calculations performed are have a precision of 1cm.

    This function utilizes the S2 library for spherical calculations.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_intersects(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if geometry_a shares any portion of space with geometry_b.

    The calculations performed are have a precision of 1cm.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_intersects(geometry_a_str: string, geometry_b_str: string) → bool

    Returns true if geometry_a shares any portion of space with geometry_b.

    The calculations performed are have a precision of 1cm.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_isclosed(geometry: geometry) → bool

    Returns whether the geometry is closed as defined by whether the start and end points are coincident. Points are considered closed, empty geometries are not. For collections and multi-types, all members must be closed, as must all polygon rings.

    -
    Immutable
    st_iscollection(geometry: geometry) → bool

    Returns whether the geometry is of a collection type (including multi-types).

    -
    Immutable
    st_isempty(geometry: geometry) → bool

    Returns whether the geometry is empty.

    -
    Immutable
    st_ispolygonccw(geometry: geometry) → bool

    Returns whether the Polygon objects inside the Geometry have exterior rings in the counter-clockwise orientation and interior rings in the clockwise orientation. Non-Polygon objects are considered counter-clockwise.

    -
    Immutable
    st_ispolygoncw(geometry: geometry) → bool

    Returns whether the Polygon objects inside the Geometry have exterior rings in the clockwise orientation and interior rings in the counter-clockwise orientation. Non-Polygon objects are considered clockwise.

    -
    Immutable
    st_isring(geometry: geometry) → bool

    Returns whether the geometry is a single linestring that is closed and simple, as defined by ST_IsClosed and ST_IsSimple.

    This function utilizes the GEOS module.

    -
    Immutable
    st_issimple(geometry: geometry) → bool

    Returns true if the geometry has no anomalous geometric points, e.g. that it intersects with or lies tangent to itself.

    This function utilizes the GEOS module.

    -
    Immutable
    st_isvalid(geometry: geometry) → bool

    Returns whether the geometry is valid as defined by the OGC spec.

    This function utilizes the GEOS module.

    -
    Immutable
    st_isvalid(geometry: geometry, flags: int) → bool

    Returns whether the geometry is valid.

    For flags=0, validity is defined by the OGC spec.

    For flags=1, validity considers self-intersecting rings forming holes as valid as per ESRI. This is not valid under OGC and CRDB spatial operations may not operate correctly.

    This function utilizes the GEOS module.

    -
    Immutable
    st_isvalidreason(geometry: geometry) → string

    Returns a string containing the reason the geometry is invalid along with the point of interest, or “Valid Geometry” if it is valid. Validity is defined by the OGC spec.

    This function utilizes the GEOS module.

    -
    Immutable
    st_isvalidreason(geometry: geometry, flags: int) → string

    Returns the reason the geometry is invalid or “Valid Geometry” if it is valid.

    For flags=0, validity is defined by the OGC spec.

    For flags=1, validity considers self-intersecting rings forming holes as valid as per ESRI. This is not valid under OGC and CRDB spatial operations may not operate correctly.

    This function utilizes the GEOS module.

    -
    Immutable
    st_isvalidtrajectory(geometry: geometry) → bool

    Returns whether the geometry encodes a valid trajectory.

    Note the geometry must be a LineString with M coordinates.

    -
    Immutable
    st_length(geography: geography) → float

    Returns the length of the given geography in meters. Uses a spheroid to perform the operation.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_length(geography: geography, use_spheroid: bool) → float

    Returns the length of the given geography in meters.

    This function utilizes the S2 library for spherical calculations.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_length(geometry: geometry) → float

    Returns the length of the given geometry.

    Note ST_Length is only valid for LineString - use ST_Perimeter for Polygon.

    This function utilizes the GEOS module.

    -
    Immutable
    st_length(geometry_str: string) → float

    Returns the length of the given geometry.

    Note ST_Length is only valid for LineString - use ST_Perimeter for Polygon.

    This function utilizes the GEOS module.

    This variant will cast all geometry_str arguments into Geometry types.

    -
    Immutable
    st_length2d(geometry: geometry) → float

    Returns the length of the given geometry.

    Note ST_Length is only valid for LineString - use ST_Perimeter for Polygon.

    This function utilizes the GEOS module.

    -
    Immutable
    st_linecrossingdirection(linestring_a: geometry, linestring_b: geometry) → int

    Returns an interger value defining behavior of crossing of lines: 0: lines do not cross, -1: linestring_b crosses linestring_a from right to left, @@ -2157,356 +2157,356 @@ calculated, the result is transformed back into a Geography with SRID 4326.

    -3: linestring_b crosses linestring_a multiple times from left to left, 3: linestring_b crosses linestring_a multiple times from right to right.

    Note that the top vertex of the segment touching another line does not count as a crossing, but the bottom vertex of segment touching another line is considered a crossing.

    -
    Immutable
    st_linefromencodedpolyline(encoded_polyline: string) → geometry

    Creates a LineString from an Encoded Polyline string.

    Returns valid results only if the polyline was encoded with 5 decimal places.

    See http://developers.google.com/maps/documentation/utilities/polylinealgorithm

    -
    Immutable
    st_linefromencodedpolyline(encoded_polyline: string, precision: int4) → geometry

    Creates a LineString from an Encoded Polyline string.

    Precision specifies how many decimal places will be preserved in Encoded Polyline. Value should be the same on encoding and decoding, or coordinates will be incorrect.

    See http://developers.google.com/maps/documentation/utilities/polylinealgorithm

    -
    Immutable
    st_linefrommultipoint(geometry: geometry) → geometry

    Creates a LineString from a MultiPoint geometry.

    -
    Immutable
    st_linefromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not LineString, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_linefromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not LineString, NULL is returned.

    -
    Immutable
    st_linefromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not LineString, NULL is returned.

    -
    Immutable
    st_linefromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not LineString, NULL is returned.

    -
    Immutable
    st_lineinterpolatepoint(geometry: geometry, fraction: float) → geometry

    Returns a point along the given LineString which is at given fraction of LineString’s total length.

    This function utilizes the GEOS module.

    -
    Immutable
    st_lineinterpolatepoints(geometry: geometry, fraction: float) → geometry

    Returns one or more points along the LineString which is at an integral multiples of given fraction of LineString’s total length.

    Note If the result has zero or one points, it will be returned as a POINT. If it has two or more points, it will be returned as a MULTIPOINT.

    This function utilizes the GEOS module.

    -
    Immutable
    st_lineinterpolatepoints(geometry: geometry, fraction: float, repeat: bool) → geometry

    Returns one or more points along the LineString which is at an integral multiples of given fraction of LineString’s total length. If repeat is false (default true) then it returns first point.

    Note If the result has zero or one points, it will be returned as a POINT. If it has two or more points, it will be returned as a MULTIPOINT.

    This function utilizes the GEOS module.

    -
    Immutable
    st_linelocatepoint(line: geometry, point: geometry) → float

    Returns a float between 0 and 1 representing the location of the closest point on LineString to the given Point, as a fraction of total 2d line length.

    -
    Immutable
    st_linemerge(geometry: geometry) → geometry

    Returns a LineString or MultiLineString by joining together constituents of a MultiLineString with matching endpoints. If the input is not a MultiLineString or LineString, an empty GeometryCollection is returned.

    This function utilizes the GEOS module.

    -
    Immutable
    st_linestringfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not LineString, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_linestringfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not LineString, NULL is returned.

    -
    Immutable
    st_linestringfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not LineString, NULL is returned.

    -
    Immutable
    st_linestringfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not LineString, NULL is returned.

    -
    Immutable
    st_linesubstring(linestring: geometry, start_fraction: decimal, end_fraction: decimal) → geometry

    Return a linestring being a substring of the input one starting and ending at the given fractions of total 2D length. Second and third arguments are float8 values between 0 and 1.

    -
    Immutable
    st_linesubstring(linestring: geometry, start_fraction: float, end_fraction: float) → geometry

    Return a linestring being a substring of the input one starting and ending at the given fractions of total 2D length. Second and third arguments are float8 values between 0 and 1.

    -
    Immutable
    st_longestline(geometry_a: geometry, geometry_b: geometry) → geometry

    Returns the LineString corresponds to the max distance across every pair of points comprising the given geometries.

    Note if geometries are the same, it will return the LineString with the maximum distance between the geometry’s vertexes. The function will return the longest line that was discovered first when comparing maximum distances if more than one is found.

    -
    Immutable
    st_m(geometry: geometry) → float

    Returns the M coordinate of a geometry if it is a Point.

    -
    Immutable
    st_makebox2d(geometry_a: geometry, geometry_b: geometry) → box2d

    Creates a box2d from two points. Errors if arguments are not two non-empty points.

    -
    Immutable
    st_makeenvelope(xmin: float, ymin: float, xmax: float, ymax: float) → geometry

    Creates a rectangular Polygon from the minimum and maximum values for X and Y with SRID 0.

    -
    Immutable
    st_makeenvelope(xmin: float, ymin: float, xmax: float, ymax: float, srid: int) → geometry

    Creates a rectangular Polygon from the minimum and maximum values for X and Y with the given SRID.

    -
    Immutable
    st_makepoint(x: float, y: float) → geometry

    Returns a new Point with the given X and Y coordinates.

    -
    Immutable
    st_makepoint(x: float, y: float, z: float) → geometry

    Returns a new Point with the given X, Y, and Z coordinates.

    -
    Immutable
    st_makepoint(x: float, y: float, z: float, m: float) → geometry

    Returns a new Point with the given X, Y, Z, and M coordinates.

    -
    Immutable
    st_makepointm(x: float, y: float, m: float) → geometry

    Returns a new Point with the given X, Y, and M coordinates.

    -
    Immutable
    st_makepolygon(geometry: geometry) → geometry

    Returns a new Polygon with the given outer LineString.

    -
    Immutable
    st_makepolygon(outer: geometry, interior: anyelement[]) → geometry

    Returns a new Polygon with the given outer LineString and interior (hole) LineString(s).

    -
    Immutable
    st_makevalid(geometry: geometry) → geometry

    Returns a valid form of the given geometry according to the OGC spec.

    This function utilizes the GEOS module.

    -
    Immutable
    st_maxdistance(geometry_a: geometry, geometry_b: geometry) → float

    Returns the maximum distance across every pair of points comprising the given geometries. Note if the geometries are the same, it will return the maximum distance between the geometry’s vertexes.

    -
    Immutable
    st_memsize(geometry: geometry) → int

    Returns the amount of memory space (in bytes) the geometry takes.

    -
    Immutable
    st_minimumboundingcircle(geometry: geometry) → geometry

    Returns the smallest circle polygon that can fully contain a geometry.

    -
    Immutable
    st_minimumboundingcircle(geometry: geometry, num_segs: int) → geometry

    Returns the smallest circle polygon that can fully contain a geometry.

    -
    Immutable
    st_minimumboundingradius(geometry: geometry) → tuple{geometry AS center, float AS radius}

    Returns a record containing the center point and radius of the smallest circle that can fully contains the given geometry.

    -
    Immutable
    st_minimumclearance(geometry: geometry) → float

    Returns the minimum distance a vertex can move before producing an invalid geometry. Returns Infinity if no minimum clearance can be found (e.g. for a single point).

    -
    Immutable
    st_minimumclearanceline(geometry: geometry) → geometry

    Returns a LINESTRING spanning the minimum distance a vertex can move before producing an invalid geometry. If no minimum clearance can be found (e.g. for a single point), an empty LINESTRING is returned.

    -
    Immutable
    st_mlinefromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not MultiLineString, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_mlinefromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_mlinefromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_mlinefromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_mpointfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not MultiPoint, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_mpointfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not MultiPoint, NULL is returned.

    -
    Immutable
    st_mpointfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not MultiPoint, NULL is returned.

    -
    Immutable
    st_mpointfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not MultiPoint, NULL is returned.

    -
    Immutable
    st_mpolyfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not MultiPolygon, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_mpolyfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_mpolyfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_mpolyfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_multi(geometry: geometry) → geometry

    Returns the geometry as a new multi-geometry, e.g converts a POINT to a MULTIPOINT. If the input is already a multitype or collection, it is returned as is.

    -
    Immutable
    st_multilinefromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not MultiLineString, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_multilinefromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_multilinefromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_multilinefromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_multilinestringfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not MultiLineString, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_multilinestringfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_multilinestringfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_multilinestringfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not MultiLineString, NULL is returned.

    -
    Immutable
    st_multipointfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not MultiPoint, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_multipointfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not MultiPoint, NULL is returned.

    -
    Immutable
    st_multipointfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not MultiPoint, NULL is returned.

    -
    Immutable
    st_multipointfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not MultiPoint, NULL is returned.

    -
    Immutable
    st_multipolyfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not MultiPolygon, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_multipolyfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_multipolyfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_multipolyfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_multipolygonfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not MultiPolygon, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_multipolygonfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_multipolygonfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_multipolygonfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not MultiPolygon, NULL is returned.

    -
    Immutable
    st_ndims(geometry: geometry) → int

    Returns the number of coordinate dimensions of a given Geometry.

    -
    Immutable
    st_node(geometry: geometry) → geometry

    Adds a node on a geometry for each intersection. Resulting geometry is always a MultiLineString.

    -
    Immutable
    st_normalize(geometry: geometry) → geometry

    Returns the geometry in its normalized form.

    This function utilizes the GEOS module.

    -
    Immutable
    st_npoints(geometry: geometry) → int

    Returns the number of points in a given Geometry. Works for any shape type.

    -
    Immutable
    st_nrings(geometry: geometry) → int

    Returns the number of rings in a Polygon Geometry. Returns 0 if the shape is not a Polygon.

    -
    Immutable
    st_numgeometries(geometry: geometry) → int

    Returns the number of shapes inside a given Geometry.

    -
    Immutable
    st_numinteriorring(geometry: geometry) → int

    Returns the number of interior rings in a Polygon Geometry. Returns NULL if the shape is not a Polygon.

    -
    Immutable
    st_numinteriorrings(geometry: geometry) → int

    Returns the number of interior rings in a Polygon Geometry. Returns NULL if the shape is not a Polygon.

    -
    Immutable
    st_numpoints(geometry: geometry) → int

    Returns the number of points in a LineString. Returns NULL if the Geometry is not a LineString.

    -
    Immutable
    st_orderingequals(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if geometry_a is exactly equal to geometry_b, having all coordinates in the same order, as well as the same type, SRID, bounding box, and so on.

    -
    Immutable
    st_orientedenvelope(geometry: geometry) → geometry

    Returns a minimum rotated rectangle enclosing a geometry. Note that more than one minimum rotated rectangle may exist. May return a Point or LineString in the case of degenerate inputs.

    -
    Immutable
    st_overlaps(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if geometry_a intersects but does not completely contain geometry_b, or vice versa. “Does not completely” implies ST_Within(geometry_a, geometry_b) = ST_Within(geometry_b, geometry_a) = false.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_perimeter(geography: geography) → float

    Returns the perimeter of the given geography in meters. Uses a spheroid to perform the operation.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_perimeter(geography: geography, use_spheroid: bool) → float

    Returns the perimeter of the given geography in meters.

    This function utilizes the S2 library for spherical calculations.

    This function utilizes the GeographicLib library for spheroid calculations.

    -
    Immutable
    st_perimeter(geometry: geometry) → float

    Returns the perimeter of the given geometry.

    Note ST_Perimeter is only valid for Polygon - use ST_Length for LineString.

    This function utilizes the GEOS module.

    -
    Immutable
    st_perimeter2d(geometry: geometry) → float

    Returns the perimeter of the given geometry.

    Note ST_Perimeter is only valid for Polygon - use ST_Length for LineString.

    This function utilizes the GEOS module.

    -
    Immutable
    st_point(x: float, y: float) → geometry

    Returns a new Point with the given X and Y coordinates.

    -
    Immutable
    st_pointfromgeohash(geohash: string) → geometry

    Return a POINT Geometry from a GeoHash string with max precision.

    -
    Immutable
    st_pointfromgeohash(geohash: string, precision: int) → geometry

    Return a POINT Geometry from a GeoHash string with supplied precision.

    -
    Immutable
    st_pointfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not Point, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_pointfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not Point, NULL is returned.

    -
    Immutable
    st_pointfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not Point, NULL is returned.

    -
    Immutable
    st_pointfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not Point, NULL is returned.

    -
    Immutable
    st_pointinsidecircle(geometry: geometry, x_coord: float, y_coord: float, radius: float) → bool

    Returns the true if the geometry is a point and is inside the circle. Returns false otherwise.

    -
    Immutable
    st_pointn(geometry: geometry, n: int) → geometry

    Returns the n-th Point of a LineString (1-indexed). Returns NULL if out of bounds or not a LineString.

    -
    Immutable
    st_pointonsurface(geometry: geometry) → geometry

    Returns a point that intersects with the given Geometry.

    This function utilizes the GEOS module.

    -
    Immutable
    st_points(geometry: geometry) → geometry

    Returns all coordinates in the given Geometry as a MultiPoint, including duplicates.

    -
    Immutable
    st_polyfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not Polygon, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_polyfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not Polygon, NULL is returned.

    -
    Immutable
    st_polyfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not Polygon, NULL is returned.

    -
    Immutable
    st_polyfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not Polygon, NULL is returned.

    -
    Immutable
    st_polygon(geometry: geometry, srid: int) → geometry

    Returns a new Polygon from the given LineString and sets its SRID. It is equivalent to ST_MakePolygon with a single argument followed by ST_SetSRID.

    -
    Immutable
    st_polygonfromtext(str: string, srid: int) → geometry

    Returns the Geometry from a WKT or EWKT representation with an SRID. If the shape underneath is not Polygon, NULL is returned. If the SRID is present in both the EWKT and the argument, the argument value is used.

    -
    Immutable
    st_polygonfromtext(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation. If the shape underneath is not Polygon, NULL is returned.

    -
    Immutable
    st_polygonfromwkb(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation. If the shape underneath is not Polygon, NULL is returned.

    -
    Immutable
    st_polygonfromwkb(wkb: bytes, srid: int) → geometry

    Returns the Geometry from a WKB (or EWKB) representation with an SRID. If the shape underneath is not Polygon, NULL is returned.

    -
    Immutable
    st_project(geography: geography, distance: float, azimuth: float) → geography

    Returns a point projected from a start point along a geodesic using a given distance and azimuth (bearing). This is known as the direct geodesic problem.

    The distance is given in meters. Negative values are supported.

    The azimuth (also known as heading or bearing) is given in radians. It is measured clockwise from true north (azimuth zero). East is azimuth π/2 (90 degrees); south is azimuth π (180 degrees); west is azimuth 3π/2 (270 degrees). Negative azimuth values and values greater than 2π (360 degrees) are supported.

    -
    Immutable
    st_relate(geometry_a: geometry, geometry_b: geometry) → string

    Returns the DE-9IM spatial relation between geometry_a and geometry_b.

    This function utilizes the GEOS module.

    -
    Immutable
    st_relate(geometry_a: geometry, geometry_b: geometry, bnr: int) → string

    Returns the DE-9IM spatial relation between geometry_a and geometry_b using the given boundary node rule (1:OGC/MOD2, 2:Endpoint, 3:MultivalentEndpoint, 4:MonovalentEndpoint).

    This function utilizes the GEOS module.

    -
    Immutable
    st_relate(geometry_a: geometry, geometry_b: geometry, pattern: string) → bool

    Returns whether the DE-9IM spatial relation between geometry_a and geometry_b matches the DE-9IM pattern.

    This function utilizes the GEOS module.

    -
    Immutable
    st_relatematch(intersection_matrix: string, pattern: string) → bool

    Returns whether the given DE-9IM intersection matrix satisfies the given pattern.

    -
    Immutable
    st_removepoint(line_string: geometry, index: int) → geometry

    Removes the Point at the given 0-based index and returns the modified LineString geometry.

    -
    Immutable
    st_removerepeatedpoints(geometry: geometry) → geometry

    Returns a geometry with repeated points removed.

    -
    Immutable
    st_removerepeatedpoints(geometry: geometry, tolerance: float) → geometry

    Returns a geometry with repeated points removed, within the given distance tolerance.

    -
    Immutable
    st_reverse(geometry: geometry) → geometry

    Returns a modified geometry by reversing the order of its vertices.

    -
    Immutable
    st_rotate(g: geometry, angle_radians: float) → geometry

    Returns a modified Geometry whose coordinates are rotated around the origin by a rotation angle.

    -
    Immutable
    st_rotate(g: geometry, angle_radians: float, origin_point: geometry) → geometry

    Returns a modified Geometry whose coordinates are rotated around the provided origin by a rotation angle.

    -
    Immutable
    st_rotate(g: geometry, angle_radians: float, origin_x: float, origin_y: float) → geometry

    Returns a modified Geometry whose coordinates are rotated around the provided origin by a rotation angle.

    -
    Immutable
    st_rotatex(g: geometry, angle_radians: float) → geometry

    Returns a modified Geometry whose coordinates are rotated about the x axis by a rotation angle.

    -
    Immutable
    st_rotatey(g: geometry, angle_radians: float) → geometry

    Returns a modified Geometry whose coordinates are rotated about the y axis by a rotation angle.

    -
    Immutable
    st_rotatez(g: geometry, angle_radians: float) → geometry

    Returns a modified Geometry whose coordinates are rotated about the z axis by a rotation angle.

    -
    Immutable
    st_s2covering(geography: geography) → geography

    Returns a geography which represents the S2 covering used by the index using the default index configuration.

    -
    Immutable
    st_s2covering(geography: geography, settings: string) → geography

    Returns a geography which represents the S2 covering used by the index using the index configuration specified by the settings parameter.

    The settings parameter uses the same format as the parameters inside the WITH in CREATE INDEX … WITH (…), e.g. CREATE INDEX t_idx ON t USING GIST(geom) WITH (s2_max_level=15, s2_level_mod=3) can be tried using SELECT ST_S2Covering(geography, ‘s2_max_level=15,s2_level_mod=3’).

    -
    Immutable
    st_s2covering(geometry: geometry) → geometry

    Returns a geometry which represents the S2 covering used by the index using the default index configuration.

    -
    Immutable
    st_s2covering(geometry: geometry, settings: string) → geometry

    Returns a geometry which represents the S2 covering used by the index using the index configuration specified by the settings parameter.

    The settings parameter uses the same format as the parameters inside the WITH in CREATE INDEX … WITH (…), e.g. CREATE INDEX t_idx ON t USING GIST(geom) WITH (s2_max_level=15, s2_level_mod=3) can be tried using SELECT ST_S2Covering(geometry, ‘s2_max_level=15,s2_level_mod=3’).

    -
    Immutable
    st_scale(g: geometry, factor: geometry) → geometry

    Returns a modified Geometry scaled by taking in a Geometry as the factor.

    -
    Immutable
    st_scale(g: geometry, factor: geometry, origin: geometry) → geometry

    Returns a modified Geometry scaled by the Geometry factor relative to a false origin.

    -
    Immutable
    st_scale(geometry: geometry, x_factor: float, y_factor: float) → geometry

    Returns a modified Geometry scaled by the given factors.

    -
    Immutable
    st_segmentize(geography: geography, max_segment_length_meters: float) → geography

    Returns a modified Geography having no segment longer than the given max_segment_length meters.

    The calculations are done on a sphere.

    This function utilizes the S2 library for spherical calculations.

    -
    Immutable
    st_segmentize(geometry: geometry, max_segment_length: float) → geometry

    Returns a modified Geometry having no segment longer than the given max_segment_length. Length units are in units of spatial reference.

    -
    Immutable
    st_setpoint(line_string: geometry, index: int, point: geometry) → geometry

    Sets the Point at the given 0-based index and returns the modified LineString geometry.

    -
    Immutable
    st_setsrid(geography: geography, srid: int) → geography

    Sets a Geography to a new SRID without transforming the coordinates.

    -
    Immutable
    st_setsrid(geometry: geometry, srid: int) → geometry

    Sets a Geometry to a new SRID without transforming the coordinates.

    -
    Immutable
    st_sharedpaths(geometry_a: geometry, geometry_b: geometry) → geometry

    Returns a collection containing paths shared by the two input geometries.

    Those going in the same direction are in the first element of the collection, those going in the opposite direction are in the second element. The paths themselves are given in the direction of the first geometry.

    -
    Immutable
    st_shiftlongitude(geometry: geometry) → geometry

    Returns a modified version of a geometry in which the longitude (X coordinate) of each point is incremented by 360 if it is <0 and decremented by 360 if it is >180. The result is only meaningful if the coordinates are in longitude/latitude.

    -
    Immutable
    st_shortestline(geometry_a: geometry, geometry_b: geometry) → geometry

    Returns the LineString corresponds to the minimum distance across every pair of points comprising the given geometries.

    Note if geometries are the same, it will return the LineString with the minimum distance between the geometry’s vertexes. The function will return the shortest line that was discovered first when comparing minimum distances if more than one is found.

    -
    Immutable
    st_simplify(geometry: geometry, tolerance: float) → geometry

    Simplifies the given geometry using the Douglas-Peucker algorithm.

    This function utilizes the GEOS module.

    -
    Immutable
    st_simplify(geometry: geometry, tolerance: float, preserve_collapsed: bool) → geometry

    Simplifies the given geometry using the Douglas-Peucker algorithm, retaining objects that would be too small given the tolerance if preserve_collapsed is set to true.

    -
    Immutable
    st_simplifypreservetopology(geometry: geometry, tolerance: float) → geometry

    Simplifies the given geometry using the Douglas-Peucker algorithm, avoiding the creation of invalid geometries.

    This function utilizes the GEOS module.

    -
    Immutable
    st_snap(input: geometry, target: geometry, tolerance: float) → geometry

    Snaps the vertices and segments of input geometry the target geometry’s vertices. Tolerance is used to control where snapping is performed. The result geometry is the input geometry with the vertices snapped. If no snapping occurs then the input geometry is returned unchanged.

    -
    Immutable
    st_snaptogrid(geometry: geometry, origin: geometry, size_x: float, size_y: float, size_z: float, size_m: float) → geometry

    Snap a geometry to a grid defined by the given origin and X, Y, Z, and M cell sizes. Any dimension with a 0 cell size will not be snapped.

    -
    Immutable
    st_snaptogrid(geometry: geometry, origin_x: float, origin_y: float, size_x: float, size_y: float) → geometry

    Snap a geometry to a grid of with X coordinates snapped to size_x and Y coordinates snapped to size_y based on an origin of (origin_x, origin_y).

    -
    Immutable
    st_snaptogrid(geometry: geometry, size: float) → geometry

    Snap a geometry to a grid of the given size. The specified size is only used to snap X and Y coordinates.

    -
    Immutable
    st_snaptogrid(geometry: geometry, size_x: float, size_y: float) → geometry

    Snap a geometry to a grid of with X coordinates snapped to size_x and Y coordinates snapped to size_y.

    -
    Immutable
    st_srid(geography: geography) → int

    Returns the Spatial Reference Identifier (SRID) for the ST_Geography as defined in spatial_ref_sys table.

    -
    Immutable
    st_srid(geometry: geometry) → int

    Returns the Spatial Reference Identifier (SRID) for the ST_Geometry as defined in spatial_ref_sys table.

    -
    Immutable
    st_startpoint(geometry: geometry) → geometry

    Returns the first point of a geometry which has shape LineString. Returns NULL if the geometry is not a LineString.

    -
    Immutable
    st_subdivide(geometry: geometry) → geometry

    Returns a geometry divided into parts, where each part contains no more than 256 vertices.

    -
    Immutable
    st_subdivide(geometry: geometry, max_vertices: int4) → geometry

    Returns a geometry divided into parts, where each part contains no more than the number of vertices provided.

    -
    Immutable
    st_summary(geography: geography) → string

    Returns a text summary of the contents of the geography.

    Flags shown square brackets after the geometry type have the following meaning:

      @@ -2516,7 +2516,7 @@ If no snapping occurs then the input geometry is returned unchanged.

    • G: is geography
    • S: has spatial reference system
    -
    Immutable
    st_summary(geometry: geometry) → string

    Returns a text summary of the contents of the geometry.

    Flags shown square brackets after the geometry type have the following meaning:

      @@ -2526,155 +2526,155 @@ If no snapping occurs then the input geometry is returned unchanged.

    • G: is geography
    • S: has spatial reference system
    -
    Immutable
    st_swapordinates(geometry: geometry, swap_ordinate_string: string) → geometry

    Returns a version of the given geometry with given ordinates swapped. The swap_ordinate_string parameter is a 2-character string naming the ordinates to swap. Valid names are: x, y, z and m.

    -
    Immutable
    st_symdifference(geometry_a: geometry, geometry_b: geometry) → geometry

    Returns the symmetric difference of both geometries.

    This function utilizes the GEOS module.

    -
    Immutable
    st_symmetricdifference(geometry_a: geometry, geometry_b: geometry) → geometry

    Returns the symmetric difference of both geometries.

    This function utilizes the GEOS module.

    -
    Immutable
    st_touches(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if the only points in common between geometry_a and geometry_b are on the boundary. Note points do not touch other points.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_transform(geometry: geometry, from_proj_text: string, srid: int) → geometry

    Transforms a geometry into the coordinate reference system assuming the from_proj_text to the new to_proj_text by projecting its coordinates. The supplied SRID is set on the new geometry.

    This function utilizes the PROJ library for coordinate projections.

    -
    Immutable
    st_transform(geometry: geometry, from_proj_text: string, to_proj_text: string) → geometry

    Transforms a geometry into the coordinate reference system assuming the from_proj_text to the new to_proj_text by projecting its coordinates.

    This function utilizes the PROJ library for coordinate projections.

    -
    Immutable
    st_transform(geometry: geometry, srid: int) → geometry

    Transforms a geometry into the given SRID coordinate reference system by projecting its coordinates.

    This function utilizes the PROJ library for coordinate projections.

    -
    Immutable
    st_transform(geometry: geometry, to_proj_text: string) → geometry

    Transforms a geometry into the coordinate reference system referenced by the projection text by projecting its coordinates.

    This function utilizes the PROJ library for coordinate projections.

    -
    Immutable
    st_translate(g: geometry, delta_x: float, delta_y: float) → geometry

    Returns a modified Geometry translated by the given deltas.

    -
    Immutable
    st_translate(g: geometry, delta_x: float, delta_y: float, delta_z: float) → geometry

    Returns a modified Geometry translated by the given deltas.

    -
    Immutable
    st_transscale(geometry: geometry, delta_x: float, delta_y: float, x_factor: float, y_factor: float) → geometry

    Translates the geometry using the deltaX and deltaY args, then scales it using the XFactor, YFactor args, working in 2D only.

    -
    Immutable
    st_unaryunion(geometry: geometry) → geometry

    Returns a union of the components for any geometry or geometry collection provided. Dissolves boundaries of a multipolygon.

    -
    Immutable
    st_voronoilines(geometry: geometry) → geometry

    Returns a two-dimensional Voronoi diagram from the vertices of the supplied geometry asthe boundaries between cells in that diagram as a MultiLineString.

    -
    Immutable
    st_voronoilines(geometry: geometry, tolerance: float) → geometry

    Returns a two-dimensional Voronoi diagram from the vertices of the supplied geometry asthe boundaries between cells in that diagram as a MultiLineString.

    -
    Immutable
    st_voronoilines(geometry: geometry, tolerance: float, extend_to: geometry) → geometry

    Returns a two-dimensional Voronoi diagram from the vertices of the supplied geometry asthe boundaries between cells in that diagram as a MultiLineString.

    -
    Immutable
    st_voronoipolygons(geometry: geometry) → geometry

    Returns a two-dimensional Voronoi diagram from the vertices of the supplied geometry.

    -
    Immutable
    st_voronoipolygons(geometry: geometry, tolerance: float) → geometry

    Returns a two-dimensional Voronoi diagram from the vertices of the supplied geometry.

    -
    Immutable
    st_voronoipolygons(geometry: geometry, tolerance: float, extend_to: geometry) → geometry

    Returns a two-dimensional Voronoi diagram from the vertices of the supplied geometry.

    -
    Immutable
    st_within(geometry_a: geometry, geometry_b: geometry) → bool

    Returns true if geometry_a is completely inside geometry_b.

    This function utilizes the GEOS module.

    This function variant will attempt to utilize any available spatial index.

    -
    Immutable
    st_wkbtosql(val: bytes) → geometry

    Returns the Geometry from a WKB (or EWKB) representation.

    -
    Immutable
    st_wkttosql(val: string) → geometry

    Returns the Geometry from a WKT or EWKT representation.

    -
    Immutable
    st_x(geometry: geometry) → float

    Returns the X coordinate of a geometry if it is a Point.

    -
    Immutable
    st_xmax(box2d: box2d) → float

    Returns the maximum X ordinate of a box2d.

    -
    Immutable
    st_xmax(geometry: geometry) → float

    Returns the maximum X ordinate of a geometry.

    -
    Immutable
    st_xmin(box2d: box2d) → float

    Returns the minimum X ordinate of a box2d.

    -
    Immutable
    st_xmin(geometry: geometry) → float

    Returns the minimum X ordinate of a geometry.

    -
    Immutable
    st_y(geometry: geometry) → float

    Returns the Y coordinate of a geometry if it is a Point.

    -
    Immutable
    st_ymax(box2d: box2d) → float

    Returns the maximum Y ordinate of a box2d.

    -
    Immutable
    st_ymax(geometry: geometry) → float

    Returns the maximum Y ordinate of a geometry.

    -
    Immutable
    st_ymin(box2d: box2d) → float

    Returns the minimum Y ordinate of a box2d.

    -
    Immutable
    st_ymin(geometry: geometry) → float

    Returns the minimum Y ordinate of a geometry.

    -
    Immutable
    st_z(geometry: geometry) → float

    Returns the Z coordinate of a geometry if it is a Point.

    -
    Immutable
    st_zmflag(geometry: geometry) → int2

    Returns a code based on the ZM coordinate dimension of a geometry (XY = 0, XYM = 1, XYZ = 2, XYZM = 3).

    -
    Immutable
    ### Stream Ingestion functions - + + + + + + + + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    crdb_internal.complete_replication_stream(stream_id: int) → int

    This function can be used on the producer side to complete and clean up a replication stream after the consumer receives a cutover event and finishes the ingestion

    -
    Volatile
    crdb_internal.complete_stream_ingestion_job(job_id: int, cutover_ts: timestamptz) → int

    This function can be used to signal a running stream ingestion job to complete. The job will eventually stop ingesting, revert to the specified timestamp and leave the cluster in a consistent state. The specified timestamp can only be specified up to the microsecond. This function does not wait for the job to reach a terminal state, but instead returns the job id as soon as it has signaled the job to complete. This builtin can be used in conjunction with SHOW JOBS WHEN COMPLETE to ensure that the job has left the cluster in a consistent state.

    -
    Volatile
    crdb_internal.replication_stream_progress(stream_id: int, frontier_ts: string) → bytes

    This function can be used on the consumer side to heartbeat its replication progress to a replication stream in the source cluster. The returns a StreamReplicationStatus message that indicates stream status (ACTIVE, PAUSED, INACTIVE, or STATUS_UNKNOWN_RETRY).

    -
    Volatile
    crdb_internal.replication_stream_spec(stream_id: int) → bytes

    This function can be used on the consumer side to get a replication stream specification for the specified stream. The consumer will later call ‘stream_partition’ to a partition with the spec to start streaming.

    -
    Volatile
    crdb_internal.start_replication_stream(tenant_id: int) → int

    This function can be used on the producer side to start a replication stream for the specified tenant. The returned stream ID uniquely identifies created stream. The caller must periodically invoke crdb_internal.heartbeat_stream() function to notify that the replication is still ongoing.

    -
    Volatile
    crdb_internal.stream_ingestion_stats_json(job_id: int) → jsonb

    This function can be used on the ingestion side to get a statistics summary of a stream ingestion job in json format.

    -
    Volatile
    crdb_internal.stream_ingestion_stats_pb(job_id: int) → bytes

    This function can be used on the ingestion side to get a statistics summary of a stream ingestion job in protobuf format.

    -
    Volatile
    crdb_internal.stream_partition(stream_id: int, partition_spec: bytes) → tuple{bytes AS stream_event}

    Stream partition data

    -
    Volatile
    ### String and byte functions - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    ascii(val: string) → int

    Returns the character code of the first character in val. Despite the name, the function supports Unicode too.

    -
    Immutable
    bit_length(val: bytes) → int

    Calculates the number of bits used to represent val.

    -
    Immutable
    bit_length(val: string) → int

    Calculates the number of bits used to represent val.

    -
    Immutable
    bit_length(val: varbit) → int

    Calculates the number of bits used to represent val.

    -
    Immutable
    btrim(input: string, trim_chars: string) → string

    Removes any characters included in trim_chars from the beginning or end of input (applies recursively).

    For example, btrim('doggie', 'eod') returns ggi.

    -
    Immutable
    btrim(val: string) → string

    Removes all spaces from the beginning and end of val.

    -
    Immutable
    char_length(val: bytes) → int

    Calculates the number of bytes in val.

    -
    Immutable
    char_length(val: string) → int

    Calculates the number of characters in val.

    -
    Immutable
    character_length(val: bytes) → int

    Calculates the number of bytes in val.

    -
    Immutable
    character_length(val: string) → int

    Calculates the number of characters in val.

    -
    Immutable
    chr(val: int) → string

    Returns the character with the code given in val. Inverse function of ascii().

    -
    Immutable
    compress(data: bytes, codec: string) → bytes

    Compress data with the specified codec (gzip).

    -
    Immutable
    concat(string...) → string

    Concatenates a comma-separated list of strings.

    -
    Immutable
    concat_ws(string...) → string

    Uses the first argument as a separator between the concatenation of the subsequent arguments.

    For example concat_ws('!','wow','great') returns wow!great.

    -
    Immutable
    convert_from(str: bytes, enc: string) → string

    Decode the bytes in str into a string using encoding enc. Supports encodings ‘UTF8’ and ‘LATIN1’.

    -
    Immutable
    convert_to(str: string, enc: string) → bytes

    Encode the string str as a byte array using encoding enc. Supports encodings ‘UTF8’ and ‘LATIN1’.

    -
    Immutable
    crdb_internal.decode_external_plan_gist(gist: string) → string

    Returns rows of output similar to EXPLAIN from a gist such as those found in planGists element of the statistics column of the statement_statistics table without attempting to resolve tables or indexes.

    -
    Volatile
    crdb_internal.decode_plan_gist(gist: string) → string

    Returns rows of output similar to EXPLAIN from a gist such as those found in planGists element of the statistics column of the statement_statistics table.

    -
    Volatile
    crdb_internal.show_create_all_schemas(database_name: string) → string

    Returns rows of CREATE schema statements. The output can be used to recreate a database.’

    -
    Volatile
    crdb_internal.show_create_all_tables(database_name: string) → string

    Returns rows of CREATE table statements followed by ALTER table statements that add table constraints. The rows are ordered by dependencies. All foreign keys are added after the creation of the table @@ -2682,106 +2682,106 @@ in the alter statements. It is not recommended to perform this operation on a database with many tables. The output can be used to recreate a database.’

    -
    Volatile
    crdb_internal.show_create_all_types(database_name: string) → string

    Returns rows of CREATE type statements. The output can be used to recreate a database.’

    -
    Volatile
    decode(text: string, format: string) → bytes

    Decodes data using format (hex / escape / base64).

    -
    Immutable
    decompress(data: bytes, codec: string) → bytes

    Decompress data with the specified codec (gzip).

    -
    Immutable
    difference(source: string, target: string) → string

    Convert two strings to their Soundex codes and then reports the number of matching code positions.

    -
    Immutable
    encode(data: bytes, format: string) → string

    Encodes data using format (hex / escape / base64).

    -
    Immutable
    from_ip(val: bytes) → string

    Converts the byte string representation of an IP to its character string representation.

    -
    Immutable
    from_uuid(val: bytes) → string

    Converts the byte string representation of a UUID to its character string representation.

    -
    Immutable
    get_bit(bit_string: varbit, index: int) → int

    Extracts a bit at given index in the bit array.

    -
    Immutable
    get_bit(byte_string: bytes, index: int) → int

    Extracts a bit at the given index in the byte array.

    -
    Immutable
    get_byte(byte_string: bytes, index: int) → int

    Extracts a byte at the given index in the byte array.

    -
    Immutable
    initcap(val: string) → string

    Capitalizes the first letter of val.

    -
    Immutable
    left(input: bytes, return_set: int) → bytes

    Returns the first return_set bytes from input.

    -
    Immutable
    left(input: string, return_set: int) → string

    Returns the first return_set characters from input.

    -
    Immutable
    length(val: bytes) → int

    Calculates the number of bytes in val.

    -
    Immutable
    length(val: string) → int

    Calculates the number of characters in val.

    -
    Immutable
    length(val: varbit) → int

    Calculates the number of bits in val.

    -
    Immutable
    lower(val: string) → string

    Converts all characters in val to their lower-case equivalents.

    -
    Immutable
    lpad(string: string, length: int) → string

    Pads string to length by adding ’ ’ to the left of string.If string is longer than length it is truncated.

    -
    Immutable
    lpad(string: string, length: int, fill: string) → string

    Pads string by adding fill to the left of string to make it length. If string is longer than length it is truncated.

    -
    Immutable
    ltrim(input: string, trim_chars: string) → string

    Removes any characters included in trim_chars from the beginning (left-hand side) of input (applies recursively).

    For example, ltrim('doggie', 'od') returns ggie.

    -
    Immutable
    ltrim(val: string) → string

    Removes all spaces from the beginning (left-hand side) of val.

    -
    Immutable
    md5(bytes...) → string

    Calculates the MD5 hash value of a set of values.

    -
    Leakproof
    md5(string...) → string

    Calculates the MD5 hash value of a set of values.

    -
    Leakproof
    octet_length(val: bytes) → int

    Calculates the number of bytes used to represent val.

    -
    Immutable
    octet_length(val: string) → int

    Calculates the number of bytes used to represent val.

    -
    Immutable
    octet_length(val: varbit) → int

    Calculates the number of bits used to represent val.

    -
    Immutable
    overlay(input: string, overlay_val: string, start_pos: int) → string

    Replaces characters in input with overlay_val starting at start_pos (begins at 1).

    For example, overlay('doggie', 'CAT', 2) returns dCATie.

    -
    Immutable
    overlay(input: string, overlay_val: string, start_pos: int, end_pos: int) → string

    Deletes the characters in input between start_pos and end_pos (count starts at 1), and then insert overlay_val at start_pos.

    -
    Immutable
    parse_date(string: string, datestyle: string) → date

    Parses a date assuming it is in format specified by DateStyle.

    -
    Immutable
    parse_date(val: string) → date

    Parses a date assuming it is in MDY format.

    -
    Immutable
    parse_interval(string: string, style: string) → interval

    Convert a string to an interval using the given IntervalStyle.

    -
    Immutable
    parse_interval(val: string) → interval

    Convert a string to an interval assuming the Postgres IntervalStyle.

    -
    Immutable
    parse_time(string: string, timestyle: string) → time

    Parses a time assuming the date (if any) is in format specified by DateStyle.

    -
    Immutable
    parse_time(val: string) → time

    Parses a time assuming the date (if any) is in MDY format.

    -
    Immutable
    parse_timestamp(string: string, datestyle: string) → timestamp

    Convert a string containing an absolute timestamp to the corresponding timestamp assuming dates formatted using the given DateStyle.

    -
    Immutable
    parse_timestamp(val: string) → timestamp

    Convert a string containing an absolute timestamp to the corresponding timestamp assuming dates are in MDY format.

    -
    Immutable
    parse_timetz(string: string, timestyle: string) → timetz

    Parses a timetz assuming the date (if any) is in format specified by DateStyle.

    -
    Immutable
    parse_timetz(val: string) → timetz

    Parses a timetz assuming the date (if any) is in MDY format.

    -
    Immutable
    prettify_statement(statement: string, line_width: int, align_mode: int, case_mode: int) → string

    Prettifies a statement using a user-configured pretty-printing config. Align mode values range from 0 - 3, representing no, partial, full, and extra alignment respectively. Case mode values range between 0 - 1, representing lower casing and upper casing respectively.

    -
    Immutable
    prettify_statement(val: string) → string

    Prettifies a statement using a the default pretty-printing config.

    -
    Immutable
    quote_ident(val: string) → string

    Return val suitably quoted to serve as identifier in a SQL statement.

    -
    Immutable
    quote_literal(val: string) → string

    Return val suitably quoted to serve as string literal in a SQL statement.

    -
    Immutable
    quote_literal(val: anyelement) → string

    Coerce val to a string and then quote it as a literal.

    -
    Stable
    quote_nullable(val: string) → string

    Coerce val to a string and then quote it as a literal. If val is NULL, returns ‘NULL’.

    -
    Immutable
    quote_nullable(val: anyelement) → string

    Coerce val to a string and then quote it as a literal. If val is NULL, returns ‘NULL’.

    -
    Stable
    regexp_extract(input: string, regex: string) → string

    Returns the first match for the Regular Expression regex in input.

    -
    Immutable
    regexp_replace(input: string, regex: string, replace: string) → string

    Replaces matches for the Regular Expression regex in input with the Regular Expression replace.

    -
    Immutable
    regexp_replace(input: string, regex: string, replace: string, flags: string) → string

    Replaces matches for the regular expression regex in input with the regular expression replace using flags.

    CockroachDB supports the following flags:

    @@ -2853,356 +2853,356 @@ Case mode values range between 0 - 1, representing lower casing and upper casing
    -
    Immutable
    repeat(input: string, repeat_counter: int) → string

    Concatenates input repeat_counter number of times.

    For example, repeat('dog', 2) returns dogdog.

    -
    Immutable
    replace(input: string, find: string, replace: string) → string

    Replaces all occurrences of find with replace in input

    -
    Immutable
    reverse(val: string) → string

    Reverses the order of the string’s characters.

    -
    Immutable
    right(input: bytes, return_set: int) → bytes

    Returns the last return_set bytes from input.

    -
    Immutable
    right(input: string, return_set: int) → string

    Returns the last return_set characters from input.

    -
    Immutable
    rpad(string: string, length: int) → string

    Pads string to length by adding ’ ’ to the right of string. If string is longer than length it is truncated.

    -
    Immutable
    rpad(string: string, length: int, fill: string) → string

    Pads string to length by adding fill to the right of string. If string is longer than length it is truncated.

    -
    Immutable
    rtrim(input: string, trim_chars: string) → string

    Removes any characters included in trim_chars from the end (right-hand side) of input (applies recursively).

    For example, rtrim('doggie', 'ei') returns dogg.

    -
    Immutable
    rtrim(val: string) → string

    Removes all spaces from the end (right-hand side) of val.

    -
    Immutable
    set_bit(bit_string: varbit, index: int, to_set: int) → varbit

    Updates a bit at given index in the bit array.

    -
    Immutable
    set_bit(byte_string: bytes, index: int, to_set: int) → bytes

    Updates a bit at the given index in the byte array.

    -
    Immutable
    set_byte(byte_string: bytes, index: int, to_set: int) → bytes

    Updates a byte at the given index in the byte array.

    -
    Immutable
    sha1(bytes...) → string

    Calculates the SHA1 hash value of a set of values.

    -
    Leakproof
    sha1(string...) → string

    Calculates the SHA1 hash value of a set of values.

    -
    Leakproof
    sha224(bytes...) → string

    Calculates the SHA224 hash value of a set of values.

    -
    Leakproof
    sha224(string...) → string

    Calculates the SHA224 hash value of a set of values.

    -
    Leakproof
    sha256(bytes...) → string

    Calculates the SHA256 hash value of a set of values.

    -
    Leakproof
    sha256(string...) → string

    Calculates the SHA256 hash value of a set of values.

    -
    Leakproof
    sha384(bytes...) → string

    Calculates the SHA384 hash value of a set of values.

    -
    Leakproof
    sha384(string...) → string

    Calculates the SHA384 hash value of a set of values.

    -
    Leakproof
    sha512(bytes...) → string

    Calculates the SHA512 hash value of a set of values.

    -
    Leakproof
    sha512(string...) → string

    Calculates the SHA512 hash value of a set of values.

    -
    Leakproof
    similar_escape(pattern: string) → string

    Converts a SQL regexp pattern to a POSIX regexp pattern.

    -
    Immutable
    similar_escape(pattern: string, escape: string) → string

    Converts a SQL regexp pattern to a POSIX regexp pattern using escape as an escape token.

    -
    Immutable
    similar_to_escape(pattern: string) → string

    Converts a SQL regexp pattern to a POSIX regexp pattern.

    -
    Immutable
    similar_to_escape(pattern: string, escape: string) → string

    Converts a SQL regexp pattern to a POSIX regexp pattern using escape as an escape token.

    -
    Immutable
    similar_to_escape(unescaped: string, pattern: string, escape: string) → bool

    Matches unescaped with pattern using escape as an escape token.

    -
    Immutable
    soundex(source: string) → string

    Convert a string to its Soundex code.

    -
    Immutable
    split_part(input: string, delimiter: string, return_index_pos: int) → string

    Splits input on delimiter and return the value in the return_index_pos position (starting at 1).

    For example, split_part('123.456.789.0','.',3)returns 789.

    -
    Immutable
    strpos(input: bytes, find: bytes) → int

    Calculates the position where the byte subarray find begins in input.

    -
    Immutable
    strpos(input: string, find: string) → int

    Calculates the position where the string find begins in input.

    For example, strpos('doggie', 'gie') returns 4.

    -
    Immutable
    strpos(input: varbit, find: varbit) → int

    Calculates the position where the bit subarray find begins in input.

    -
    Immutable
    substr(input: bytes, start_pos: int) → bytes

    Returns a byte subarray of input starting at start_pos (count starts at 1).

    -
    Immutable
    substr(input: bytes, start_pos: int, length: int) → bytes

    Returns a byte subarray of input starting at start_pos (count starts at 1) and including up to length characters.

    -
    Immutable
    substr(input: string, regex: string) → string

    Returns a substring of input that matches the regular expression regex.

    -
    Immutable
    substr(input: string, regex: string, escape_char: string) → string

    Returns a substring of input that matches the regular expression regex using escape_char as your escape character instead of \.

    -
    Immutable
    substr(input: string, start_pos: int) → string

    Returns a substring of input starting at start_pos (count starts at 1).

    -
    Immutable
    substr(input: string, start_pos: int, length: int) → string

    Returns a substring of input starting at start_pos (count starts at 1) and including up to length characters.

    -
    Immutable
    substr(input: varbit, start_pos: int) → varbit

    Returns a bit subarray of input starting at start_pos (count starts at 1).

    -
    Immutable
    substr(input: varbit, start_pos: int, length: int) → varbit

    Returns a bit subarray of input starting at start_pos (count starts at 1) and including up to length characters.

    -
    Immutable
    substring(input: bytes, start_pos: int) → bytes

    Returns a byte subarray of input starting at start_pos (count starts at 1).

    -
    Immutable
    substring(input: bytes, start_pos: int, length: int) → bytes

    Returns a byte subarray of input starting at start_pos (count starts at 1) and including up to length characters.

    -
    Immutable
    substring(input: string, regex: string) → string

    Returns a substring of input that matches the regular expression regex.

    -
    Immutable
    substring(input: string, regex: string, escape_char: string) → string

    Returns a substring of input that matches the regular expression regex using escape_char as your escape character instead of \.

    -
    Immutable
    substring(input: string, start_pos: int) → string

    Returns a substring of input starting at start_pos (count starts at 1).

    -
    Immutable
    substring(input: string, start_pos: int, length: int) → string

    Returns a substring of input starting at start_pos (count starts at 1) and including up to length characters.

    -
    Immutable
    substring(input: varbit, start_pos: int) → varbit

    Returns a bit subarray of input starting at start_pos (count starts at 1).

    -
    Immutable
    substring(input: varbit, start_pos: int, length: int) → varbit

    Returns a bit subarray of input starting at start_pos (count starts at 1) and including up to length characters.

    -
    Immutable
    to_char_with_style(date: date, datestyle: string) → string

    Convert an date to a string assuming the string is formatted using the given DateStyle.

    -
    Immutable
    to_char_with_style(interval: interval, style: string) → string

    Convert an interval to a string using the given IntervalStyle.

    -
    Immutable
    to_char_with_style(timestamp: timestamp, datestyle: string) → string

    Convert an timestamp to a string assuming the string is formatted using the given DateStyle.

    -
    Immutable
    to_english(val: int) → string

    This function enunciates the value of its argument using English cardinals.

    -
    Immutable
    to_hex(val: bytes) → string

    Converts val to its hexadecimal representation.

    -
    Immutable
    to_hex(val: int) → string

    Converts val to its hexadecimal representation.

    -
    Immutable
    to_hex(val: string) → string

    Converts val to its hexadecimal representation.

    -
    Immutable
    to_ip(val: string) → bytes

    Converts the character string representation of an IP to its byte string representation.

    -
    Immutable
    to_uuid(val: string) → bytes

    Converts the character string representation of a UUID to its byte string representation.

    -
    Immutable
    translate(input: string, find: string, replace: string) → string

    In input, replaces the first character from find with the first character in replace; repeat for each character in find.

    For example, translate('doggie', 'dog', '123'); returns 1233ie.

    -
    Immutable
    ulid_to_uuid(val: string) → uuid

    Converts a ULID string to its UUID-encoded representation.

    -
    Immutable
    unaccent(val: string) → string

    Removes accents (diacritic signs) from the text provided in val.

    -
    Immutable
    upper(val: string) → string

    Converts all characters in val to their to their upper-case equivalents.

    -
    Immutable
    ### System info functions - + + + + + + + + + + + + + + + + + + + + - - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    cluster_logical_timestamp() → decimal

    Returns the logical time of the current transaction as a CockroachDB HLC in decimal form.

    Note that uses of this function disable server-side optimizations and may increase either contention or retry errors, or both.

    -
    Volatile
    crdb_internal.active_version() → jsonb

    Returns the current active cluster version.

    -
    Volatile
    crdb_internal.approximate_timestamp(timestamp: decimal) → timestamp

    Converts the crdb_internal_mvcc_timestamp column into an approximate timestamp.

    -
    Immutable
    crdb_internal.assignment_cast(val: anyelement, type: anyelement) → anyelement

    This function is used internally to perform assignment casts during mutations.

    -
    Stable
    crdb_internal.check_consistency(stats_only: bool, start_key: bytes, end_key: bytes) → tuple{int AS range_id, bytes AS start_key, string AS start_key_pretty, string AS status, string AS detail}

    Runs a consistency check on ranges touching the specified key range. an empty start or end key is treated as the minimum and maximum possible, respectively. stats_only should only be set to false when targeting a small number of ranges to avoid overloading the cluster. Each returned row contains the range ID, the status (a roachpb.CheckConsistencyResponse_Status), and verbose detail.

    Example usage: SELECT * FROM crdb_internal.check_consistency(true, ‘\x02’, ‘\x04’)

    -
    Volatile
    crdb_internal.check_password_hash_format(password: bytes) → string

    This function checks whether a string is a precomputed password hash. Returns the hash algorithm.

    -
    Immutable
    crdb_internal.cluster_id() → uuid

    Returns the logical cluster ID for this tenant.

    -
    Stable
    crdb_internal.cluster_name() → string

    Returns the cluster name.

    -
    Volatile
    crdb_internal.cluster_setting_encoded_default(setting: string) → string

    Returns the encoded default value of the given cluster setting.

    -
    Immutable
    crdb_internal.completed_migrations() → string[]

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    crdb_internal.create_join_token() → string

    Creates a join token for use when adding a new node to a secure cluster.

    -
    Volatile
    crdb_internal.create_session_revival_token() → bytes

    Generate a token that can be used to create a new session for the current user.

    -
    Volatile
    crdb_internal.decode_cluster_setting(setting: string, value: string) → string

    Decodes the given encoded value for a cluster setting.

    -
    Immutable
    crdb_internal.deserialize_session(session: bytes) → bool

    This function deserializes the serialized variables into the current session.

    -
    Volatile
    crdb_internal.encode_key(table_id: int, index_id: int, row_tuple: anyelement) → bytes

    Generate the key for a row on a particular table and index.

    -
    Stable
    crdb_internal.force_assertion_error(msg: string) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    crdb_internal.force_error(errorCode: string, msg: string) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    crdb_internal.force_log_fatal(msg: string) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    crdb_internal.force_panic(msg: string) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    crdb_internal.force_retry(val: interval) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    crdb_internal.get_database_id(name: string) → int
    crdb_internal.get_namespace_id(parent_id: int, name: string) → int
    crdb_internal.get_namespace_id(parent_id: int, parent_schema_id: int, name: string) → int
    Volatile
    crdb_internal.get_database_id(name: string) → intStable
    crdb_internal.get_namespace_id(parent_id: int, name: string) → intStable
    crdb_internal.get_namespace_id(parent_id: int, parent_schema_id: int, name: string) → intStable
    crdb_internal.get_vmodule() → string

    Returns the vmodule configuration on the gateway node processing this request.

    -
    crdb_internal.get_zone_config(namespace_id: int) → bytes
    Volatile
    crdb_internal.get_zone_config(namespace_id: int) → bytesStable
    crdb_internal.has_role_option(option: string) → bool

    Returns whether the current user has the specified role option

    -
    Stable
    crdb_internal.is_admin() → bool

    Retrieves the current user’s admin status.

    -
    Stable
    crdb_internal.is_at_least_version(version: string) → bool

    Returns true if the cluster version is not older than the argument.

    -
    Volatile
    crdb_internal.is_constraint_active(table_name: string, constraint_name: string) → bool

    This function is used to determine if a given constraint is currently. active for the current transaction.

    -
    Volatile
    crdb_internal.lease_holder(key: bytes) → int

    This function is used to fetch the leaseholder corresponding to a request key

    -
    Volatile
    crdb_internal.list_sql_keys_in_range(range_id: int) → tuple{string AS key, string AS value}

    Returns all SQL K/V pairs within the requested range.

    -
    Volatile
    crdb_internal.locality_value(key: string) → string

    Returns the value of the specified locality key.

    -
    Stable
    crdb_internal.no_constant_folding(input: anyelement) → anyelement

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    crdb_internal.node_executable_version() → string

    Returns the version of CockroachDB this node is running.

    -
    Volatile
    crdb_internal.node_id() → int

    Returns the node ID.

    -
    Stable
    crdb_internal.notice(msg: string) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    crdb_internal.notice(severity: string, msg: string) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    crdb_internal.num_geo_inverted_index_entries(table_id: int, index_id: int, val: geography) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Stable
    crdb_internal.num_geo_inverted_index_entries(table_id: int, index_id: int, val: geometry) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Stable
    crdb_internal.num_inverted_index_entries(val: string, version: int) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Stable
    crdb_internal.num_inverted_index_entries(val: anyelement[]) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Stable
    crdb_internal.num_inverted_index_entries(val: anyelement[], version: int) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Stable
    crdb_internal.num_inverted_index_entries(val: jsonb) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Stable
    crdb_internal.num_inverted_index_entries(val: jsonb, version: int) → int

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Stable
    crdb_internal.payloads_for_span(span_id: int) → tuple{string AS payload_type, jsonb AS payload_jsonb}

    Returns the payload(s) of the requested span and all its children.

    -
    Volatile
    crdb_internal.payloads_for_trace(trace_id: int) → tuple{int AS span_id, string AS payload_type, jsonb AS payload_jsonb}

    Returns the payload(s) of the requested trace.

    -
    Volatile
    crdb_internal.pretty_key(raw_key: bytes, skip_fields: int) → string

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Immutable
    crdb_internal.pretty_span(raw_key_start: bytes, raw_key_end: bytes, skip_fields: int) → string

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Immutable
    crdb_internal.range_stats(key: bytes) → jsonb

    This function is used to retrieve range statistics information as a JSON object.

    -
    Volatile
    crdb_internal.repair_ttl_table_scheduled_job(oid: oid) → void

    Repairs the scheduled job for a TTL table if it is missing.

    -
    Volatile
    crdb_internal.request_statement_bundle(stmtFingerprint: string, samplingProbability: float, minExecutionLatency: interval, expiresAfter: interval) → bool

    Used to request statement bundle for a given statement fingerprint that has execution latency greater than the ‘minExecutionLatency’. If the ‘expiresAfter’ argument is empty, then the statement bundle request never expires until the statement bundle is collected

    -
    Volatile
    crdb_internal.reset_index_usage_stats() → bool

    This function is used to clear the collected index usage statistics.

    -
    Volatile
    crdb_internal.reset_sql_stats() → bool

    This function is used to clear the collected SQL statistics.

    -
    Volatile
    crdb_internal.revalidate_unique_constraint(table_name: string, constraint_name: string) → void

    This function is used to revalidate the given unique constraint in the given table. Returns an error if validation fails.

    -
    Volatile
    crdb_internal.revalidate_unique_constraints_in_all_tables() → void

    This function is used to revalidate all unique constraints in tables in the current database. Returns an error if validation fails.

    -
    Volatile
    crdb_internal.revalidate_unique_constraints_in_table(table_name: string) → void

    This function is used to revalidate all unique constraints in the given table. Returns an error if validation fails.

    -
    Volatile
    crdb_internal.round_decimal_values(val: decimal, scale: int) → decimal

    This function is used internally to round decimal values during mutations.

    -
    Immutable
    crdb_internal.round_decimal_values(val: decimal[], scale: int) → decimal[]

    This function is used internally to round decimal array values during mutations.

    -
    Stable
    crdb_internal.schedule_sql_stats_compaction() → bool

    This function is used to start a SQL stats compaction job.

    -
    Volatile
    crdb_internal.serialize_session() → bytes

    This function serializes the variables in the current session.

    -
    Volatile
    crdb_internal.set_trace_verbose(trace_id: int, verbosity: bool) → bool

    Returns true if root span was found and verbosity was set, false otherwise.

    -
    Volatile
    crdb_internal.set_vmodule(vmodule_string: string) → int

    Set the equivalent of the --vmodule flag on the gateway node processing this request; it affords control over the logging verbosity of different files. Example syntax: crdb_internal.set_vmodule('recordio=2,file=1,gfs*=3'). Reset with: crdb_internal.set_vmodule(''). Raising the verbosity can severely affect performance.

    -
    Volatile
    crdb_internal.trace_id() → int

    Returns the current trace ID or an error if no trace is open.

    -
    Volatile
    crdb_internal.validate_session_revival_token(token: bytes) → bool

    Validate a token that was created by create_session_revival_token. Intended for testing.

    -
    Volatile
    crdb_internal.validate_ttl_scheduled_jobs() → void

    Validate all TTL tables have a valid scheduled job attached.

    -
    Volatile
    crdb_internal.void_func() → void

    This function is used only by CockroachDB’s developers for testing purposes.

    -
    Volatile
    current_database() → string

    Returns the current database.

    -
    Stable
    current_schema() → string

    Returns the current schema.

    -
    Stable
    current_schemas(include_pg_catalog: bool) → string[]

    Returns the valid schemas in the search path.

    -
    Stable
    current_user() → string

    Returns the current user. This function is provided for compatibility with PostgreSQL.

    -
    Stable
    session_user() → string

    Returns the session user. This function is provided for compatibility with PostgreSQL.

    -
    Stable
    to_regclass(text: string) → regtype

    Translates a textual relation name to its OID

    -
    Stable
    to_regnamespace(text: string) → regtype

    Translates a textual schema name to its OID

    -
    Stable
    to_regproc(text: string) → regtype

    Translates a textual function or procedure name to its OID

    -
    Stable
    to_regprocedure(text: string) → regtype

    Translates a textual function or procedure name(with argument types) to its OID

    -
    Stable
    to_regrole(text: string) → regtype

    Translates a textual role name to its OID

    -
    Stable
    to_regtype(text: string) → regtype

    Translates a textual type name to its OID

    -
    Stable
    version() → string

    Returns the node’s version of CockroachDB.

    -
    Volatile
    ### System repair functions - + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    crdb_internal.force_delete_table_data(id: int) → bool

    This function can be used to clear the data belonging to a table, when the table cannot be dropped.

    -
    Volatile
    ### TIMETZ functions - + + + + + + + + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    current_time() → time

    Returns the current transaction’s time with no time zone.

    -
    Stable
    current_time() → timetz

    Returns the current transaction’s time with time zone.

    This function is the preferred overload and will be evaluated by default.

    -
    Stable
    current_time(precision: int) → time

    Returns the current transaction’s time with no time zone.

    -
    Stable
    current_time(precision: int) → timetz

    Returns the current transaction’s time with time zone.

    This function is the preferred overload and will be evaluated by default.

    -
    Stable
    localtime() → time

    Returns the current transaction’s time with no time zone.

    This function is the preferred overload and will be evaluated by default.

    -
    Stable
    localtime() → timetz

    Returns the current transaction’s time with time zone.

    -
    Stable
    localtime(precision: int) → time

    Returns the current transaction’s time with no time zone.

    This function is the preferred overload and will be evaluated by default.

    -
    Stable
    localtime(precision: int) → timetz

    Returns the current transaction’s time with time zone.

    -
    Stable
    ### TUPLE functions - + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    row_to_json(row: tuple) → jsonb

    Returns the row as a JSON object.

    -
    Stable
    ### TUPLE{INT AS RANGE_ID, STRING AS ERROR, INT AS END_TO_END_LATENCY_MS, STRING AS VERBOSE_TRACE} functions - + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    crdb_internal.probe_ranges(timeout: interval, probe_type: unknown_enum) → tuple{int AS range_id, string AS error, int AS end_to_end_latency_ms, string AS verbose_trace}

    Returns rows of range data based on the results received when using the prober. Parameters @@ -3215,241 +3215,241 @@ Notes If a probe should fail, the latency will be set to MaxInt64 in order to naturally sort above other latencies. Read probes are cheaper than write probes. If write probes have already ran, it’s not necessary to also run a read probe. A write probe will effectively probe reads as well.

    -
    Volatile
    ### Trigrams functions - + + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    show_trgm(input: string) → string[]

    Returns an array of all the trigrams in the given string.

    -
    Immutable
    similarity(left: string, right: string) → float

    Returns a number that indicates how similar the two arguments are. The range of the result is zero (indicating that the two strings are completely dissimilar) to one (indicating that the two strings are identical).

    -
    Immutable
    ### UUID functions - + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    uuid_to_ulid(val: uuid) → string

    Converts a UUID-encoded ULID to its string representation.

    -
    Immutable
    ### Compatibility functions - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    current_setting(setting_name: string) → string

    System info

    -
    Stable
    current_setting(setting_name: string, missing_ok: bool) → string

    System info

    -
    Stable
    format_type(type_oid: oid, typemod: int) → string

    Returns the SQL name of a data type that is identified by its type OID and possibly a type modifier. Currently, the type modifier is ignored.

    -
    Stable
    getdatabaseencoding() → string

    Returns the current encoding name used by the database.

    -
    Stable
    has_any_column_privilege(table: string, privilege: string) → bool

    Returns whether or not the current user has privileges for any column of table.

    -
    Stable
    has_any_column_privilege(table: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for any column of table.

    -
    Stable
    has_any_column_privilege(user: string, table: string, privilege: string) → bool

    Returns whether or not the user has privileges for any column of table.

    -
    Stable
    has_any_column_privilege(user: string, table: oid, privilege: string) → bool

    Returns whether or not the user has privileges for any column of table.

    -
    Stable
    has_any_column_privilege(user: oid, table: string, privilege: string) → bool

    Returns whether or not the user has privileges for any column of table.

    -
    Stable
    has_any_column_privilege(user: oid, table: oid, privilege: string) → bool

    Returns whether or not the user has privileges for any column of table.

    -
    Stable
    has_column_privilege(table: string, column: int, privilege: string) → bool

    Returns whether or not the current user has privileges for column.

    -
    Stable
    has_column_privilege(table: string, column: string, privilege: string) → bool

    Returns whether or not the current user has privileges for column.

    -
    Stable
    has_column_privilege(table: oid, column: int, privilege: string) → bool

    Returns whether or not the current user has privileges for column.

    -
    Stable
    has_column_privilege(table: oid, column: string, privilege: string) → bool

    Returns whether or not the current user has privileges for column.

    -
    Stable
    has_column_privilege(user: string, table: string, column: int, privilege: string) → bool

    Returns whether or not the user has privileges for column.

    -
    Stable
    has_column_privilege(user: string, table: string, column: string, privilege: string) → bool

    Returns whether or not the user has privileges for column.

    -
    Stable
    has_column_privilege(user: string, table: oid, column: int, privilege: string) → bool

    Returns whether or not the user has privileges for column.

    -
    Stable
    has_column_privilege(user: string, table: oid, column: string, privilege: string) → bool

    Returns whether or not the user has privileges for column.

    -
    Stable
    has_column_privilege(user: oid, table: string, column: int, privilege: string) → bool

    Returns whether or not the user has privileges for column.

    -
    Stable
    has_column_privilege(user: oid, table: string, column: string, privilege: string) → bool

    Returns whether or not the user has privileges for column.

    -
    Stable
    has_column_privilege(user: oid, table: oid, column: int, privilege: string) → bool

    Returns whether or not the user has privileges for column.

    -
    Stable
    has_column_privilege(user: oid, table: oid, column: string, privilege: string) → bool

    Returns whether or not the user has privileges for column.

    -
    Stable
    has_database_privilege(database: string, privilege: string) → bool

    Returns whether or not the current user has privileges for database.

    -
    Stable
    has_database_privilege(database: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for database.

    -
    Stable
    has_database_privilege(user: string, database: string, privilege: string) → bool

    Returns whether or not the user has privileges for database.

    -
    Stable
    has_database_privilege(user: string, database: oid, privilege: string) → bool

    Returns whether or not the user has privileges for database.

    -
    Stable
    has_database_privilege(user: oid, database: string, privilege: string) → bool

    Returns whether or not the user has privileges for database.

    -
    Stable
    has_database_privilege(user: oid, database: oid, privilege: string) → bool

    Returns whether or not the user has privileges for database.

    -
    Stable
    has_foreign_data_wrapper_privilege(fdw: string, privilege: string) → bool

    Returns whether or not the current user has privileges for foreign-data wrapper.

    -
    Stable
    has_foreign_data_wrapper_privilege(fdw: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for foreign-data wrapper.

    -
    Stable
    has_foreign_data_wrapper_privilege(user: string, fdw: string, privilege: string) → bool

    Returns whether or not the user has privileges for foreign-data wrapper.

    -
    Stable
    has_foreign_data_wrapper_privilege(user: string, fdw: oid, privilege: string) → bool

    Returns whether or not the user has privileges for foreign-data wrapper.

    -
    Stable
    has_foreign_data_wrapper_privilege(user: oid, fdw: string, privilege: string) → bool

    Returns whether or not the user has privileges for foreign-data wrapper.

    -
    Stable
    has_foreign_data_wrapper_privilege(user: oid, fdw: oid, privilege: string) → bool

    Returns whether or not the user has privileges for foreign-data wrapper.

    -
    Stable
    has_function_privilege(function: string, privilege: string) → bool

    Returns whether or not the current user has privileges for function.

    -
    Stable
    has_function_privilege(function: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for function.

    -
    Stable
    has_function_privilege(user: string, function: string, privilege: string) → bool

    Returns whether or not the user has privileges for function.

    -
    Stable
    has_function_privilege(user: string, function: oid, privilege: string) → bool

    Returns whether or not the user has privileges for function.

    -
    Stable
    has_function_privilege(user: oid, function: string, privilege: string) → bool

    Returns whether or not the user has privileges for function.

    -
    Stable
    has_function_privilege(user: oid, function: oid, privilege: string) → bool

    Returns whether or not the user has privileges for function.

    -
    Stable
    has_language_privilege(language: string, privilege: string) → bool

    Returns whether or not the current user has privileges for language.

    -
    Stable
    has_language_privilege(language: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for language.

    -
    Stable
    has_language_privilege(user: string, language: string, privilege: string) → bool

    Returns whether or not the user has privileges for language.

    -
    Stable
    has_language_privilege(user: string, language: oid, privilege: string) → bool

    Returns whether or not the user has privileges for language.

    -
    Stable
    has_language_privilege(user: oid, language: string, privilege: string) → bool

    Returns whether or not the user has privileges for language.

    -
    Stable
    has_language_privilege(user: oid, language: oid, privilege: string) → bool

    Returns whether or not the user has privileges for language.

    -
    Stable
    has_schema_privilege(schema: string, privilege: string) → bool

    Returns whether or not the current user has privileges for schema.

    -
    Stable
    has_schema_privilege(schema: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for schema.

    -
    Stable
    has_schema_privilege(user: string, schema: string, privilege: string) → bool

    Returns whether or not the user has privileges for schema.

    -
    Stable
    has_schema_privilege(user: string, schema: oid, privilege: string) → bool

    Returns whether or not the user has privileges for schema.

    -
    Stable
    has_schema_privilege(user: oid, schema: string, privilege: string) → bool

    Returns whether or not the user has privileges for schema.

    -
    Stable
    has_schema_privilege(user: oid, schema: oid, privilege: string) → bool

    Returns whether or not the user has privileges for schema.

    -
    Stable
    has_sequence_privilege(sequence: string, privilege: string) → bool

    Returns whether or not the current user has privileges for sequence.

    -
    Stable
    has_sequence_privilege(sequence: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for sequence.

    -
    Stable
    has_sequence_privilege(user: string, sequence: string, privilege: string) → bool

    Returns whether or not the user has privileges for sequence.

    -
    Stable
    has_sequence_privilege(user: string, sequence: oid, privilege: string) → bool

    Returns whether or not the user has privileges for sequence.

    -
    Stable
    has_sequence_privilege(user: oid, sequence: string, privilege: string) → bool

    Returns whether or not the user has privileges for sequence.

    -
    Stable
    has_sequence_privilege(user: oid, sequence: oid, privilege: string) → bool

    Returns whether or not the user has privileges for sequence.

    -
    Stable
    has_server_privilege(server: string, privilege: string) → bool

    Returns whether or not the current user has privileges for foreign server.

    -
    Stable
    has_server_privilege(server: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for foreign server.

    -
    Stable
    has_server_privilege(user: string, server: string, privilege: string) → bool

    Returns whether or not the user has privileges for foreign server.

    -
    Stable
    has_server_privilege(user: string, server: oid, privilege: string) → bool

    Returns whether or not the user has privileges for foreign server.

    -
    Stable
    has_server_privilege(user: oid, server: string, privilege: string) → bool

    Returns whether or not the user has privileges for foreign server.

    -
    Stable
    has_server_privilege(user: oid, server: oid, privilege: string) → bool

    Returns whether or not the user has privileges for foreign server.

    -
    Stable
    has_table_privilege(table: string, privilege: string) → bool

    Returns whether or not the current user has privileges for table.

    -
    Stable
    has_table_privilege(table: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for table.

    -
    Stable
    has_table_privilege(user: string, table: string, privilege: string) → bool

    Returns whether or not the user has privileges for table.

    -
    Stable
    has_table_privilege(user: string, table: oid, privilege: string) → bool

    Returns whether or not the user has privileges for table.

    -
    Stable
    has_table_privilege(user: oid, table: string, privilege: string) → bool

    Returns whether or not the user has privileges for table.

    -
    Stable
    has_table_privilege(user: oid, table: oid, privilege: string) → bool

    Returns whether or not the user has privileges for table.

    -
    Stable
    has_tablespace_privilege(tablespace: string, privilege: string) → bool

    Returns whether or not the current user has privileges for tablespace.

    -
    Stable
    has_tablespace_privilege(tablespace: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for tablespace.

    -
    Stable
    has_tablespace_privilege(user: string, tablespace: string, privilege: string) → bool

    Returns whether or not the user has privileges for tablespace.

    -
    Stable
    has_tablespace_privilege(user: string, tablespace: oid, privilege: string) → bool

    Returns whether or not the user has privileges for tablespace.

    -
    Stable
    has_tablespace_privilege(user: oid, tablespace: string, privilege: string) → bool

    Returns whether or not the user has privileges for tablespace.

    -
    Stable
    has_tablespace_privilege(user: oid, tablespace: oid, privilege: string) → bool

    Returns whether or not the user has privileges for tablespace.

    -
    Stable
    has_type_privilege(type: string, privilege: string) → bool

    Returns whether or not the current user has privileges for type.

    -
    Stable
    has_type_privilege(type: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for type.

    -
    Stable
    has_type_privilege(user: string, type: string, privilege: string) → bool

    Returns whether or not the user has privileges for type.

    -
    Stable
    has_type_privilege(user: string, type: oid, privilege: string) → bool

    Returns whether or not the user has privileges for type.

    -
    Stable
    has_type_privilege(user: oid, type: string, privilege: string) → bool

    Returns whether or not the user has privileges for type.

    -
    Stable
    has_type_privilege(user: oid, type: oid, privilege: string) → bool

    Returns whether or not the user has privileges for type.

    -
    Stable
    information_schema._pg_numeric_precision(typid: oid, typmod: int4) → int

    Returns the precision of the given type with type modifier

    -
    Immutable
    information_schema._pg_numeric_precision_radix(typid: oid, typmod: int4) → int

    Returns the radix of the given type with type modifier

    -
    Immutable
    information_schema._pg_numeric_scale(typid: oid, typmod: int4) → int

    Returns the scale of the given type with type modifier

    -
    Immutable
    oid(int: int) → oid

    Converts an integer to an OID.

    -
    Immutable
    pg_backend_pid() → int

    Returns a numerical ID attached to this session. This ID is part of the query cancellation key used by the wire protocol. This function was only added for compatibility, and unlike in Postgres, thereturned value does not correspond to a real process ID.

    -
    Stable
    pg_collation_for(str: anyelement) → string

    Returns the collation of the argument

    -
    Stable
    pg_column_is_updatable(reloid: oid, attnum: int2, include_triggers: bool) → bool

    Returns whether the given column can be updated.

    -
    Stable
    pg_column_size(anyelement...) → int

    Return size in bytes of the column provided as an argument

    -
    Immutable
    pg_get_serial_sequence(table_name: string, column_name: string) → string

    Returns the name of the sequence used by the given column_name in the table table_name.

    -
    Stable
    pg_has_role(role: string, privilege: string) → bool

    Returns whether or not the current user has privileges for role.

    -
    Stable
    pg_has_role(role: oid, privilege: string) → bool

    Returns whether or not the current user has privileges for role.

    -
    Stable
    pg_has_role(user: string, role: string, privilege: string) → bool

    Returns whether or not the user has privileges for role.

    -
    Stable
    pg_has_role(user: string, role: oid, privilege: string) → bool

    Returns whether or not the user has privileges for role.

    -
    Stable
    pg_has_role(user: oid, role: string, privilege: string) → bool

    Returns whether or not the user has privileges for role.

    -
    Stable
    pg_has_role(user: oid, role: oid, privilege: string) → bool

    Returns whether or not the user has privileges for role.

    -
    Stable
    pg_is_other_temp_schema(oid: oid) → bool

    Returns true if the given OID is the OID of another session’s temporary schema. (This can be useful, for example, to exclude other sessions’ temporary tables from a catalog display.)

    -
    Stable
    pg_my_temp_schema() → oid

    Returns the OID of the current session’s temporary schema, or zero if it has none (because it has not created any temporary tables).

    -
    Stable
    pg_relation_is_updatable(reloid: oid, include_triggers: bool) → int4

    Returns the update events the relation supports.

    -
    Stable
    pg_sleep(seconds: float) → bool

    pg_sleep makes the current session’s process sleep until seconds seconds have elapsed. seconds is a value of type double precision, so fractional-second delays can be specified.

    -
    Volatile
    pg_table_is_visible(oid: oid) → bool

    Returns whether the table with the given OID belongs to one of the schemas on the search path.

    -
    Stable
    pg_type_is_visible(oid: oid) → bool

    Returns whether the type with the given OID belongs to one of the schemas on the search path.

    -
    Stable
    set_config(setting_name: string, new_value: string, is_local: bool) → string

    System info

    -
    Volatile
    diff --git a/docs/generated/sql/window_functions.md b/docs/generated/sql/window_functions.md index ad08f4cc57b0..aee326add405 100644 --- a/docs/generated/sql/window_functions.md +++ b/docs/generated/sql/window_functions.md @@ -1,377 +1,377 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Function → ReturnsDescription
    Function → ReturnsDescriptionVolatility
    cume_dist() → float

    Calculates the relative rank of the current row: (number of rows preceding or peer with current row) / (total rows).

    -
    Immutable
    dense_rank() → int

    Calculates the rank of the current row without gaps; this function counts peer groups.

    -
    Immutable
    first_value(val: bool) → bool

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: bytes) → bytes

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: date) → date

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: decimal) → decimal

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: float) → float

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: inet) → inet

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: int) → int

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: interval) → interval

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: string) → string

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: time) → time

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: timestamp) → timestamp

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: timestamptz) → timestamptz

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: uuid) → uuid

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: box2d) → box2d

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: geography) → geography

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: geometry) → geometry

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: jsonb) → jsonb

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: oid) → oid

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: timetz) → timetz

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    first_value(val: varbit) → varbit

    Returns val evaluated at the row that is the first row of the window frame.

    -
    Immutable
    lag(val: bool) → bool

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: bool, n: int) → bool

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: bool, n: int, default: bool) → bool

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: bytes) → bytes

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: bytes, n: int) → bytes

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: bytes, n: int, default: bytes) → bytes

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: date) → date

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: date, n: int) → date

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: date, n: int, default: date) → date

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: decimal) → decimal

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: decimal, n: int) → decimal

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: decimal, n: int, default: decimal) → decimal

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: float) → float

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: float, n: int) → float

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: float, n: int, default: float) → float

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: inet) → inet

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: inet, n: int) → inet

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: inet, n: int, default: inet) → inet

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: int) → int

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: int, n: int) → int

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: int, n: int, default: int) → int

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: interval) → interval

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: interval, n: int) → interval

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: interval, n: int, default: interval) → interval

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: string) → string

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: string, n: int) → string

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: string, n: int, default: string) → string

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: time) → time

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: time, n: int) → time

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: time, n: int, default: time) → time

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: timestamp) → timestamp

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: timestamp, n: int) → timestamp

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: timestamp, n: int, default: timestamp) → timestamp

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: timestamptz) → timestamptz

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: timestamptz, n: int) → timestamptz

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: timestamptz, n: int, default: timestamptz) → timestamptz

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: uuid) → uuid

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: uuid, n: int) → uuid

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: uuid, n: int, default: uuid) → uuid

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: box2d) → box2d

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: box2d, n: int) → box2d

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: box2d, n: int, default: box2d) → box2d

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: geography) → geography

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: geography, n: int) → geography

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: geography, n: int, default: geography) → geography

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: geometry) → geometry

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: geometry, n: int) → geometry

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: geometry, n: int, default: geometry) → geometry

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: jsonb) → jsonb

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: jsonb, n: int) → jsonb

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: jsonb, n: int, default: jsonb) → jsonb

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: oid) → oid

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: oid, n: int) → oid

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: oid, n: int, default: oid) → oid

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: timetz) → timetz

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: timetz, n: int) → timetz

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: timetz, n: int, default: timetz) → timetz

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lag(val: varbit) → varbit

    Returns val evaluated at the previous row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lag(val: varbit, n: int) → varbit

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lag(val: varbit, n: int, default: varbit) → varbit

    Returns val evaluated at the row that is n rows before the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    last_value(val: bool) → bool

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: bytes) → bytes

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: date) → date

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: decimal) → decimal

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: float) → float

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: inet) → inet

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: int) → int

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: interval) → interval

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: string) → string

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: time) → time

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: timestamp) → timestamp

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: timestamptz) → timestamptz

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: uuid) → uuid

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: box2d) → box2d

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: geography) → geography

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: geometry) → geometry

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: jsonb) → jsonb

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: oid) → oid

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: timetz) → timetz

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    last_value(val: varbit) → varbit

    Returns val evaluated at the row that is the last row of the window frame.

    -
    Immutable
    lead(val: bool) → bool

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: bool, n: int) → bool

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: bool, n: int, default: bool) → bool

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: bytes) → bytes

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: bytes, n: int) → bytes

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: bytes, n: int, default: bytes) → bytes

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: date) → date

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: date, n: int) → date

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: date, n: int, default: date) → date

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: decimal) → decimal

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: decimal, n: int) → decimal

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: decimal, n: int, default: decimal) → decimal

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: float) → float

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: float, n: int) → float

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: float, n: int, default: float) → float

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: inet) → inet

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: inet, n: int) → inet

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: inet, n: int, default: inet) → inet

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: int) → int

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: int, n: int) → int

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: int, n: int, default: int) → int

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: interval) → interval

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: interval, n: int) → interval

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: interval, n: int, default: interval) → interval

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: string) → string

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: string, n: int) → string

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: string, n: int, default: string) → string

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: time) → time

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: time, n: int) → time

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: time, n: int, default: time) → time

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: timestamp) → timestamp

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: timestamp, n: int) → timestamp

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: timestamp, n: int, default: timestamp) → timestamp

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: timestamptz) → timestamptz

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: timestamptz, n: int) → timestamptz

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: timestamptz, n: int, default: timestamptz) → timestamptz

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: uuid) → uuid

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: uuid, n: int) → uuid

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: uuid, n: int, default: uuid) → uuid

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: box2d) → box2d

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: box2d, n: int) → box2d

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: box2d, n: int, default: box2d) → box2d

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: geography) → geography

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: geography, n: int) → geography

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: geography, n: int, default: geography) → geography

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: geometry) → geometry

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: geometry, n: int) → geometry

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: geometry, n: int, default: geometry) → geometry

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: jsonb) → jsonb

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: jsonb, n: int) → jsonb

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: jsonb, n: int, default: jsonb) → jsonb

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: oid) → oid

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: oid, n: int) → oid

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: oid, n: int, default: oid) → oid

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: timetz) → timetz

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: timetz, n: int) → timetz

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: timetz, n: int, default: timetz) → timetz

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    lead(val: varbit) → varbit

    Returns val evaluated at the following row within current row’s partition; if there is no such row, instead returns null.

    -
    Immutable
    lead(val: varbit, n: int) → varbit

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such row, instead returns null. n is evaluated with respect to the current row.

    -
    Immutable
    lead(val: varbit, n: int, default: varbit) → varbit

    Returns val evaluated at the row that is n rows after the current row within its partition; if there is no such, row, instead returns default (which must be of the same type as val). Both n and default are evaluated with respect to the current row.

    -
    Immutable
    nth_value(val: bool, n: int) → bool

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: bytes, n: int) → bytes

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: date, n: int) → date

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: decimal, n: int) → decimal

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: float, n: int) → float

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: inet, n: int) → inet

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: int, n: int) → int

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: interval, n: int) → interval

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: string, n: int) → string

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: time, n: int) → time

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: timestamp, n: int) → timestamp

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: timestamptz, n: int) → timestamptz

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: uuid, n: int) → uuid

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: box2d, n: int) → box2d

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: geography, n: int) → geography

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: geometry, n: int) → geometry

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: jsonb, n: int) → jsonb

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: oid, n: int) → oid

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: timetz, n: int) → timetz

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    nth_value(val: varbit, n: int) → varbit

    Returns val evaluated at the row that is the nth row of the window frame (counting from 1); null if no such row.

    -
    Immutable
    ntile(n: int) → int

    Calculates an integer ranging from 1 to n, dividing the partition as equally as possible.

    -
    Immutable
    percent_rank() → float

    Calculates the relative rank of the current row: (rank - 1) / (total rows - 1).

    -
    Immutable
    rank() → int

    Calculates the rank of the current row with gaps; same as row_number of its first peer.

    -
    Immutable
    row_number() → int

    Calculates the number of the current row within its partition, counting from 1.

    -
    Immutable
    diff --git a/pkg/cmd/docgen/funcs.go b/pkg/cmd/docgen/funcs.go index 80de76df3ce6..2aa61167b78d 100644 --- a/pkg/cmd/docgen/funcs.go +++ b/pkg/cmd/docgen/funcs.go @@ -215,7 +215,14 @@ func generateFunctions(from []string, categorize bool) []byte { info := md.RenderToString([]byte(fn.Info)) extra = fmt.Sprintf("%s", info) } - s := fmt.Sprintf("%s(%s) → %s%s", name, name, linkArguments(args), linkArguments(ret), extra) + s := fmt.Sprintf("%s(%s) → %s%s%s", + name, + name, + linkArguments(args), + linkArguments(ret), + extra, + fn.Volatility.TitleString(), + ) functions[cat] = append(functions[cat], s) } } @@ -239,7 +246,7 @@ func generateFunctions(from []string, categorize bool) []byte { if categorize { fmt.Fprintf(b, "### %s functions\n\n", cat) } - b.WriteString("\n\n") + b.WriteString("
    Function → ReturnsDescription
    \n\n") b.WriteString("\n") b.WriteString(strings.Join(functions[cat], "\n")) b.WriteString("\n
    Function → ReturnsDescriptionVolatility
    \n\n") diff --git a/pkg/kv/kvclient/kvstreamer/streamer.go b/pkg/kv/kvclient/kvstreamer/streamer.go index a4100f244e55..e768f9108c04 100644 --- a/pkg/kv/kvclient/kvstreamer/streamer.go +++ b/pkg/kv/kvclient/kvstreamer/streamer.go @@ -221,6 +221,7 @@ type Streamer struct { hints Hints maxKeysPerRow int32 budget *budget + keyLocking lock.Strength streamerStatistics @@ -354,6 +355,7 @@ func NewStreamer( limitBytes int64, acc *mon.BoundAccount, batchRequestsIssued *int64, + keyLocking lock.Strength, ) *Streamer { if txn.Type() != kv.LeafTxn { panic(errors.AssertionFailedf("RootTxn is given to the Streamer")) @@ -362,6 +364,7 @@ func NewStreamer( distSender: distSender, stopper: stopper, budget: newBudget(acc, limitBytes), + keyLocking: keyLocking, } if batchRequestsIssued == nil { batchRequestsIssued = new(int64) @@ -1428,9 +1431,9 @@ func processSingleRangeResults( subRequestIdx = req.subRequestIdx[i] } reply := resp.GetInner() - switch req.reqs[i].GetInner().(type) { - case *roachpb.GetRequest: - get := reply.(*roachpb.GetResponse) + switch response := reply.(type) { + case *roachpb.GetResponse: + get := response if get.ResumeSpan != nil { // This Get wasn't completed. continue @@ -1454,8 +1457,8 @@ func processSingleRangeResults( } s.results.addLocked(result) - case *roachpb.ScanRequest: - scan := reply.(*roachpb.ScanResponse) + case *roachpb.ScanResponse: + scan := response if len(scan.BatchResponses) == 0 && scan.ResumeSpan != nil { // Only the first part of the conditional is true whenever we // received an empty response for the Scan request (i.e. there @@ -1546,9 +1549,9 @@ func buildResumeSingleRangeBatch( for i, resp := range br.Responses { position := req.positions[i] reply := resp.GetInner() - switch origRequest := req.reqs[i].GetInner().(type) { - case *roachpb.GetRequest: - get := reply.(*roachpb.GetResponse) + switch response := reply.(type) { + case *roachpb.GetResponse: + get := response if get.ResumeSpan == nil { emptyResponse = false continue @@ -1557,10 +1560,10 @@ func buildResumeSingleRangeBatch( // can just reuse the original request since it hasn't been // modified which is also asserted below). if buildutil.CrdbTestBuild { - if !get.ResumeSpan.Equal(origRequest.Span()) { + if origSpan := req.reqs[i].GetInner().Header().Span(); !get.ResumeSpan.Equal(origSpan) { panic(errors.AssertionFailedf( "unexpectedly the ResumeSpan %s on the GetResponse is different from the original span %s", - get.ResumeSpan, origRequest.Span(), + get.ResumeSpan, origSpan, )) } } @@ -1574,8 +1577,8 @@ func buildResumeSingleRangeBatch( } resumeReqIdx++ - case *roachpb.ScanRequest: - scan := reply.(*roachpb.ScanResponse) + case *roachpb.ScanResponse: + scan := response if scan.ResumeSpan == nil { emptyResponse = false continue @@ -1586,7 +1589,7 @@ func buildResumeSingleRangeBatch( scans = scans[1:] newScan.req.SetSpan(*scan.ResumeSpan) newScan.req.ScanFormat = roachpb.BATCH_RESPONSE - newScan.req.KeyLocking = origRequest.KeyLocking + newScan.req.KeyLocking = s.keyLocking newScan.union.Scan = &newScan.req resumeReq.reqs[resumeReqIdx].Value = &newScan.union resumeReq.positions = append(resumeReq.positions, position) diff --git a/pkg/kv/kvclient/kvstreamer/streamer_test.go b/pkg/kv/kvclient/kvstreamer/streamer_test.go index 3112e52fa85d..b9c7b229ca4c 100644 --- a/pkg/kv/kvclient/kvstreamer/streamer_test.go +++ b/pkg/kv/kvclient/kvstreamer/streamer_test.go @@ -47,6 +47,7 @@ func getStreamer( limitBytes, acc, nil, /* batchRequestsIssued */ + lock.None, ) } @@ -98,6 +99,7 @@ func TestStreamerLimitations(t *testing.T) { math.MaxInt64, /* limitBytes */ nil, /* acc */ nil, /* batchRequestsIssued */ + lock.None, ) }) }) diff --git a/pkg/sql/opt/exec/execbuilder/mutation.go b/pkg/sql/opt/exec/execbuilder/mutation.go index c69a82b1ac42..d89ef7622cf7 100644 --- a/pkg/sql/opt/exec/execbuilder/mutation.go +++ b/pkg/sql/opt/exec/execbuilder/mutation.go @@ -920,7 +920,7 @@ func (b *Builder) canAutoCommit(rel memo.RelExpr) bool { // Allow Project on top, as long as the expressions are not side-effecting. proj := rel.(*memo.ProjectExpr) for i := 0; i < len(proj.Projections); i++ { - if !proj.Projections[i].ScalarProps().VolatilitySet.IsLeakProof() { + if !proj.Projections[i].ScalarProps().VolatilitySet.IsLeakproof() { return false } } diff --git a/pkg/sql/opt/memo/expr_format.go b/pkg/sql/opt/memo/expr_format.go index c3dfcc17acff..578df2821779 100644 --- a/pkg/sql/opt/memo/expr_format.go +++ b/pkg/sql/opt/memo/expr_format.go @@ -740,7 +740,7 @@ func (f *ExprFmtCtx) formatRelational(e RelExpr, tp treeprinter.Node) { f.Buffer.WriteString(name) } - if !relational.VolatilitySet.IsLeakProof() { + if !relational.VolatilitySet.IsLeakproof() { writeFlag(relational.VolatilitySet.String()) } if relational.CanMutate { @@ -1023,7 +1023,7 @@ func (f *ExprFmtCtx) scalarPropsStrings(scalar opt.ScalarExpr) []string { if !scalarProps.OuterCols.Empty() { emitProp("outer=%s", scalarProps.OuterCols) } - if !scalarProps.VolatilitySet.IsLeakProof() { + if !scalarProps.VolatilitySet.IsLeakproof() { emitProp(scalarProps.VolatilitySet.String()) } if scalarProps.HasCorrelatedSubquery { diff --git a/pkg/sql/opt/norm/decorrelate_funcs.go b/pkg/sql/opt/norm/decorrelate_funcs.go index 23cfed413b75..746aa48606c8 100644 --- a/pkg/sql/opt/norm/decorrelate_funcs.go +++ b/pkg/sql/opt/norm/decorrelate_funcs.go @@ -87,13 +87,13 @@ func (c *CustomFuncs) deriveHasHoistableSubquery(scalar opt.ScalarExpr) bool { // Determine whether this is the Else child. if child == t.OrElse { memo.BuildSharedProps(child, &sharedProps, c.f.evalCtx) - hasHoistableSubquery = sharedProps.VolatilitySet.IsLeakProof() + hasHoistableSubquery = sharedProps.VolatilitySet.IsLeakproof() } case *memo.WhenExpr: if child == t.Value { memo.BuildSharedProps(child, &sharedProps, c.f.evalCtx) - hasHoistableSubquery = sharedProps.VolatilitySet.IsLeakProof() + hasHoistableSubquery = sharedProps.VolatilitySet.IsLeakproof() } case *memo.IfErrExpr: @@ -102,7 +102,7 @@ func (c *CustomFuncs) deriveHasHoistableSubquery(scalar opt.ScalarExpr) bool { // it's at position 1. if i == 1 { memo.BuildSharedProps(child, &sharedProps, c.f.evalCtx) - hasHoistableSubquery = sharedProps.VolatilitySet.IsLeakProof() + hasHoistableSubquery = sharedProps.VolatilitySet.IsLeakproof() } } diff --git a/pkg/sql/opt/norm/factory.go b/pkg/sql/opt/norm/factory.go index 16aad2828c69..3bbc102003f2 100644 --- a/pkg/sql/opt/norm/factory.go +++ b/pkg/sql/opt/norm/factory.go @@ -353,10 +353,10 @@ func (f *Factory) onConstructRelational(rel memo.RelExpr) memo.RelExpr { // the logical properties of the group in question. if rel.Op() != opt.ValuesOp { relational := rel.Relational() - // We can do this if we only contain leak-proof operators. As an example of + // We can do this if we only contain leakproof operators. As an example of // an immutable operator that should not be folded: a Limit on top of an // empty input has to error out if the limit turns out to be negative. - if relational.Cardinality.IsZero() && relational.VolatilitySet.IsLeakProof() { + if relational.Cardinality.IsZero() && relational.VolatilitySet.IsLeakproof() { if f.matchedRule == nil || f.matchedRule(opt.SimplifyZeroCardinalityGroup) { values := f.funcs.ConstructEmptyValues(relational.OutputCols) if f.appliedRule != nil { diff --git a/pkg/sql/opt/props/volatility.go b/pkg/sql/opt/props/volatility.go index 742ce3086784..8d24c50fcc6a 100644 --- a/pkg/sql/opt/props/volatility.go +++ b/pkg/sql/opt/props/volatility.go @@ -28,7 +28,7 @@ import "github.com/cockroachdb/cockroach/pkg/sql/sem/volatility" // The optimizer makes *only* the following side-effect related guarantees: // // 1. CASE/IF branches are only evaluated if the branch condition is true or -// if all operators are LeakProof. Therefore, the following is guaranteed +// if all operators are Leakproof. Therefore, the following is guaranteed // to never raise a divide by zero error, regardless of how cleverly the // optimizer rewrites the expression: // @@ -110,10 +110,10 @@ func (vs *VolatilitySet) UnionWith(other VolatilitySet) { *vs = *vs | other } -// IsLeakProof returns true if the set is empty or only contains -// LeakProof. -func (vs VolatilitySet) IsLeakProof() bool { - return vs == 0 || vs == volatilityBit(volatility.LeakProof) +// IsLeakproof returns true if the set is empty or only contains +// Leakproof. +func (vs VolatilitySet) IsLeakproof() bool { + return vs == 0 || vs == volatilityBit(volatility.Leakproof) } // HasStable returns true if the set contains Stable. @@ -127,12 +127,12 @@ func (vs VolatilitySet) HasVolatile() bool { } func (vs VolatilitySet) String() string { - // The only properties we care about are IsLeakProof(), HasStable() and + // The only properties we care about are IsLeakproof(), HasStable() and // HasVolatile(). We print one of the strings below: // - // String | IsLeakProof | HasStable | HasVolatile + // String | IsLeakproof | HasStable | HasVolatile // -------------------+-------------+-----------+------------- - // "leak-proof" | true | false | false + // "leakproof" | true | false | false // "immutable" | false | false | false // "stable" | false | true | false // "volatile" | false | false | true @@ -140,8 +140,8 @@ func (vs VolatilitySet) String() string { // // These are the only valid combinations for these properties. // - if vs.IsLeakProof() { - return "leak-proof" + if vs.IsLeakproof() { + return "leakproof" } hasStable := vs.HasStable() hasVolatile := vs.HasVolatile() diff --git a/pkg/sql/opt/props/volatility_test.go b/pkg/sql/opt/props/volatility_test.go index da2ac8a07543..f0d9f90bceff 100644 --- a/pkg/sql/opt/props/volatility_test.go +++ b/pkg/sql/opt/props/volatility_test.go @@ -20,18 +20,18 @@ import ( func TestVolatilitySet(t *testing.T) { var v VolatilitySet - check := func(str string, isLeakProof, hasStable, hasVolatile bool) { + check := func(str string, isLeakproof, hasStable, hasVolatile bool) { t.Helper() require.Equal(t, v.String(), str) - require.Equal(t, v.IsLeakProof(), isLeakProof) + require.Equal(t, v.IsLeakproof(), isLeakproof) require.Equal(t, v.HasStable(), hasStable) require.Equal(t, v.HasVolatile(), hasVolatile) } - check("leak-proof", true, false, false) + check("leakproof", true, false, false) - v.Add(volatility.LeakProof) - check("leak-proof", true, false, false) + v.Add(volatility.Leakproof) + check("leakproof", true, false, false) v.AddImmutable() check("immutable", false, false, false) diff --git a/pkg/sql/row/kv_fetcher.go b/pkg/sql/row/kv_fetcher.go index 33a2cf1b4433..523af707c77c 100644 --- a/pkg/sql/row/kv_fetcher.go +++ b/pkg/sql/row/kv_fetcher.go @@ -149,6 +149,7 @@ func NewStreamingKVFetcher( streamerBudgetLimit, streamerBudgetAcc, &batchRequestsIssued, + getKeyLockingStrength(lockStrength), ) mode := kvstreamer.OutOfOrder if maintainOrdering { diff --git a/pkg/sql/sem/builtins/builtins.go b/pkg/sql/sem/builtins/builtins.go index dfd8e9169ade..a34e8362a6b4 100644 --- a/pkg/sql/sem/builtins/builtins.go +++ b/pkg/sql/sem/builtins/builtins.go @@ -8184,7 +8184,7 @@ func hashBuiltin(newHash func() hash.Hash, info string) builtinDefinition { return tree.NewDString(fmt.Sprintf("%x", h.Sum(nil))), nil }, Info: info, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, tree.Overload{ Types: tree.VariadicType{VarType: types.Bytes}, @@ -8197,7 +8197,7 @@ func hashBuiltin(newHash func() hash.Hash, info string) builtinDefinition { return tree.NewDString(fmt.Sprintf("%x", h.Sum(nil))), nil }, Info: info, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, ) } @@ -8215,7 +8215,7 @@ func hash32Builtin(newHash func() hash.Hash32, info string) builtinDefinition { return tree.NewDInt(tree.DInt(h.Sum32())), nil }, Info: info, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, tree.Overload{ Types: tree.VariadicType{VarType: types.Bytes}, @@ -8228,7 +8228,7 @@ func hash32Builtin(newHash func() hash.Hash32, info string) builtinDefinition { return tree.NewDInt(tree.DInt(h.Sum32())), nil }, Info: info, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, ) } @@ -8246,7 +8246,7 @@ func hash64Builtin(newHash func() hash.Hash64, info string) builtinDefinition { return tree.NewDInt(tree.DInt(h.Sum64())), nil }, Info: info, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, tree.Overload{ Types: tree.VariadicType{VarType: types.Bytes}, @@ -8259,7 +8259,7 @@ func hash64Builtin(newHash func() hash.Hash64, info string) builtinDefinition { return tree.NewDInt(tree.DInt(h.Sum64())), nil }, Info: info, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, ) } diff --git a/pkg/sql/sem/builtins/pgcrypto_builtins.go b/pkg/sql/sem/builtins/pgcrypto_builtins.go index 5dcd3de67da9..702ed58996bc 100644 --- a/pkg/sql/sem/builtins/pgcrypto_builtins.go +++ b/pkg/sql/sem/builtins/pgcrypto_builtins.go @@ -84,7 +84,7 @@ var pgcryptoBuiltins = map[string]builtinDefinition{ }, Info: "Computes a binary hash of the given `data`. `type` is the algorithm " + "to use (md5, sha1, sha224, sha256, sha384, or sha512).", - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, tree.Overload{ Types: tree.ArgTypes{{"data", types.Bytes}, {"type", types.String}}, @@ -161,7 +161,7 @@ var pgcryptoBuiltins = map[string]builtinDefinition{ return tree.NewDBytes(tree.DBytes(h.Sum(nil))), nil }, Info: "Calculates hashed MAC for `data` with key `key`. `type` is the same as in `digest()`.", - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, tree.Overload{ Types: tree.ArgTypes{{"data", types.Bytes}, {"key", types.Bytes}, {"type", types.String}}, diff --git a/pkg/sql/sem/cast/cast.go b/pkg/sql/sem/cast/cast.go index 325d24e7833e..c7d80503d026 100644 --- a/pkg/sql/sem/cast/cast.go +++ b/pkg/sql/sem/cast/cast.go @@ -324,7 +324,7 @@ func LookupCastVolatility(from, to *types.T) (_ volatility.V, ok bool) { if len(fromTypes) != len(toTypes) { return 0, false } - maxVolatility := volatility.LeakProof + maxVolatility := volatility.Leakproof for i := range fromTypes { v, lookupOk := LookupCastVolatility(fromTypes[i], toTypes[i]) if !lookupOk { diff --git a/pkg/sql/sem/cast/cast_map.go b/pkg/sql/sem/cast/cast_map.go index b1fadf0b9e34..03102dea9001 100644 --- a/pkg/sql/sem/cast/cast_map.go +++ b/pkg/sql/sem/cast/cast_map.go @@ -466,7 +466,7 @@ var castMap = map[oid.Oid]map[oid.Oid]Cast{ }, oid.T_name: { oid.T_bpchar: {MaxContext: ContextAssignment, origin: ContextOriginPgCast, Volatility: volatility.Immutable}, - oid.T_text: {MaxContext: ContextImplicit, origin: ContextOriginPgCast, Volatility: volatility.LeakProof}, + oid.T_text: {MaxContext: ContextImplicit, origin: ContextOriginPgCast, Volatility: volatility.Leakproof}, oid.T_varchar: {MaxContext: ContextAssignment, origin: ContextOriginPgCast, Volatility: volatility.Immutable}, // Automatic I/O conversions to string types. oid.T_char: {MaxContext: ContextAssignment, origin: ContextOriginAutomaticIOConversion, Volatility: volatility.Immutable}, @@ -687,7 +687,7 @@ var castMap = map[oid.Oid]map[oid.Oid]Cast{ oid.T_bpchar: {MaxContext: ContextImplicit, origin: ContextOriginPgCast, Volatility: volatility.Immutable}, oid.T_char: {MaxContext: ContextAssignment, origin: ContextOriginPgCast, Volatility: volatility.Immutable}, oidext.T_geometry: {MaxContext: ContextImplicit, origin: ContextOriginPgCast, Volatility: volatility.Immutable}, - oid.T_name: {MaxContext: ContextImplicit, origin: ContextOriginPgCast, Volatility: volatility.LeakProof}, + oid.T_name: {MaxContext: ContextImplicit, origin: ContextOriginPgCast, Volatility: volatility.Leakproof}, oid.T_regclass: {MaxContext: ContextImplicit, origin: ContextOriginPgCast, Volatility: volatility.Stable}, // We include a TEXT->TEXT entry to mimic the VARCHAR->VARCHAR entry // that is included in the pg_cast table. Postgres doesn't include a diff --git a/pkg/sql/sem/cast/cast_test.go b/pkg/sql/sem/cast/cast_test.go index 08145cfa332f..e0aed166c465 100644 --- a/pkg/sql/sem/cast/cast_test.go +++ b/pkg/sql/sem/cast/cast_test.go @@ -193,7 +193,7 @@ func TestTupleCastVolatility(t *testing.T) { { from: nil, to: nil, - exp: "leak-proof", + exp: "leakproof", }, { from: nil, diff --git a/pkg/sql/sem/tree/eval.go b/pkg/sql/sem/tree/eval.go index 52e65513059e..7952f14507fb 100644 --- a/pkg/sql/sem/tree/eval.go +++ b/pkg/sql/sem/tree/eval.go @@ -1420,42 +1420,42 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ treecmp.EQ: { // Single-type comparisons. makeEqFn(types.AnyEnum, types.AnyEnum, volatility.Immutable), - makeEqFn(types.Bool, types.Bool, volatility.LeakProof), - makeEqFn(types.Bytes, types.Bytes, volatility.LeakProof), - makeEqFn(types.Date, types.Date, volatility.LeakProof), + makeEqFn(types.Bool, types.Bool, volatility.Leakproof), + makeEqFn(types.Bytes, types.Bytes, volatility.Leakproof), + makeEqFn(types.Date, types.Date, volatility.Leakproof), makeEqFn(types.Decimal, types.Decimal, volatility.Immutable), // Note: it is an error to compare two strings with different collations; - // the operator is leak proof under the assumption that these cases will be + // the operator is leakproof under the assumption that these cases will be // detected during type checking. - makeEqFn(types.AnyCollatedString, types.AnyCollatedString, volatility.LeakProof), - makeEqFn(types.Float, types.Float, volatility.LeakProof), - makeEqFn(types.Box2D, types.Box2D, volatility.LeakProof), - makeEqFn(types.Geography, types.Geography, volatility.LeakProof), - makeEqFn(types.Geometry, types.Geometry, volatility.LeakProof), - makeEqFn(types.INet, types.INet, volatility.LeakProof), - makeEqFn(types.Int, types.Int, volatility.LeakProof), - makeEqFn(types.Interval, types.Interval, volatility.LeakProof), + makeEqFn(types.AnyCollatedString, types.AnyCollatedString, volatility.Leakproof), + makeEqFn(types.Float, types.Float, volatility.Leakproof), + makeEqFn(types.Box2D, types.Box2D, volatility.Leakproof), + makeEqFn(types.Geography, types.Geography, volatility.Leakproof), + makeEqFn(types.Geometry, types.Geometry, volatility.Leakproof), + makeEqFn(types.INet, types.INet, volatility.Leakproof), + makeEqFn(types.Int, types.Int, volatility.Leakproof), + makeEqFn(types.Interval, types.Interval, volatility.Leakproof), makeEqFn(types.Jsonb, types.Jsonb, volatility.Immutable), - makeEqFn(types.Oid, types.Oid, volatility.LeakProof), - makeEqFn(types.String, types.String, volatility.LeakProof), - makeEqFn(types.Time, types.Time, volatility.LeakProof), - makeEqFn(types.TimeTZ, types.TimeTZ, volatility.LeakProof), - makeEqFn(types.Timestamp, types.Timestamp, volatility.LeakProof), - makeEqFn(types.TimestampTZ, types.TimestampTZ, volatility.LeakProof), - makeEqFn(types.Uuid, types.Uuid, volatility.LeakProof), - makeEqFn(types.VarBit, types.VarBit, volatility.LeakProof), + makeEqFn(types.Oid, types.Oid, volatility.Leakproof), + makeEqFn(types.String, types.String, volatility.Leakproof), + makeEqFn(types.Time, types.Time, volatility.Leakproof), + makeEqFn(types.TimeTZ, types.TimeTZ, volatility.Leakproof), + makeEqFn(types.Timestamp, types.Timestamp, volatility.Leakproof), + makeEqFn(types.TimestampTZ, types.TimestampTZ, volatility.Leakproof), + makeEqFn(types.Uuid, types.Uuid, volatility.Leakproof), + makeEqFn(types.VarBit, types.VarBit, volatility.Leakproof), // Mixed-type comparisons. makeEqFn(types.Date, types.Timestamp, volatility.Immutable), makeEqFn(types.Date, types.TimestampTZ, volatility.Stable), - makeEqFn(types.Decimal, types.Float, volatility.LeakProof), - makeEqFn(types.Decimal, types.Int, volatility.LeakProof), - makeEqFn(types.Float, types.Decimal, volatility.LeakProof), - makeEqFn(types.Float, types.Int, volatility.LeakProof), - makeEqFn(types.Int, types.Decimal, volatility.LeakProof), - makeEqFn(types.Int, types.Float, volatility.LeakProof), - makeEqFn(types.Int, types.Oid, volatility.LeakProof), - makeEqFn(types.Oid, types.Int, volatility.LeakProof), + makeEqFn(types.Decimal, types.Float, volatility.Leakproof), + makeEqFn(types.Decimal, types.Int, volatility.Leakproof), + makeEqFn(types.Float, types.Decimal, volatility.Leakproof), + makeEqFn(types.Float, types.Int, volatility.Leakproof), + makeEqFn(types.Int, types.Decimal, volatility.Leakproof), + makeEqFn(types.Int, types.Float, volatility.Leakproof), + makeEqFn(types.Int, types.Oid, volatility.Leakproof), + makeEqFn(types.Oid, types.Int, volatility.Leakproof), makeEqFn(types.Timestamp, types.Date, volatility.Immutable), makeEqFn(types.Timestamp, types.TimestampTZ, volatility.Stable), makeEqFn(types.TimestampTZ, types.Date, volatility.Stable), @@ -1477,41 +1477,41 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ treecmp.LT: { // Single-type comparisons. makeLtFn(types.AnyEnum, types.AnyEnum, volatility.Immutable), - makeLtFn(types.Bool, types.Bool, volatility.LeakProof), - makeLtFn(types.Bytes, types.Bytes, volatility.LeakProof), - makeLtFn(types.Date, types.Date, volatility.LeakProof), + makeLtFn(types.Bool, types.Bool, volatility.Leakproof), + makeLtFn(types.Bytes, types.Bytes, volatility.Leakproof), + makeLtFn(types.Date, types.Date, volatility.Leakproof), makeLtFn(types.Decimal, types.Decimal, volatility.Immutable), // Note: it is an error to compare two strings with different collations; - // the operator is leak proof under the assumption that these cases will be + // the operator is leakproof under the assumption that these cases will be // detected during type checking. - makeLtFn(types.AnyCollatedString, types.AnyCollatedString, volatility.LeakProof), - makeLtFn(types.Float, types.Float, volatility.LeakProof), - makeLtFn(types.Box2D, types.Box2D, volatility.LeakProof), - makeLtFn(types.Geography, types.Geography, volatility.LeakProof), - makeLtFn(types.Geometry, types.Geometry, volatility.LeakProof), - makeLtFn(types.INet, types.INet, volatility.LeakProof), - makeLtFn(types.Int, types.Int, volatility.LeakProof), - makeLtFn(types.Interval, types.Interval, volatility.LeakProof), - makeLtFn(types.Oid, types.Oid, volatility.LeakProof), - makeLtFn(types.String, types.String, volatility.LeakProof), - makeLtFn(types.Time, types.Time, volatility.LeakProof), - makeLtFn(types.TimeTZ, types.TimeTZ, volatility.LeakProof), - makeLtFn(types.Timestamp, types.Timestamp, volatility.LeakProof), - makeLtFn(types.TimestampTZ, types.TimestampTZ, volatility.LeakProof), - makeLtFn(types.Uuid, types.Uuid, volatility.LeakProof), - makeLtFn(types.VarBit, types.VarBit, volatility.LeakProof), + makeLtFn(types.AnyCollatedString, types.AnyCollatedString, volatility.Leakproof), + makeLtFn(types.Float, types.Float, volatility.Leakproof), + makeLtFn(types.Box2D, types.Box2D, volatility.Leakproof), + makeLtFn(types.Geography, types.Geography, volatility.Leakproof), + makeLtFn(types.Geometry, types.Geometry, volatility.Leakproof), + makeLtFn(types.INet, types.INet, volatility.Leakproof), + makeLtFn(types.Int, types.Int, volatility.Leakproof), + makeLtFn(types.Interval, types.Interval, volatility.Leakproof), + makeLtFn(types.Oid, types.Oid, volatility.Leakproof), + makeLtFn(types.String, types.String, volatility.Leakproof), + makeLtFn(types.Time, types.Time, volatility.Leakproof), + makeLtFn(types.TimeTZ, types.TimeTZ, volatility.Leakproof), + makeLtFn(types.Timestamp, types.Timestamp, volatility.Leakproof), + makeLtFn(types.TimestampTZ, types.TimestampTZ, volatility.Leakproof), + makeLtFn(types.Uuid, types.Uuid, volatility.Leakproof), + makeLtFn(types.VarBit, types.VarBit, volatility.Leakproof), // Mixed-type comparisons. makeLtFn(types.Date, types.Timestamp, volatility.Immutable), makeLtFn(types.Date, types.TimestampTZ, volatility.Stable), - makeLtFn(types.Decimal, types.Float, volatility.LeakProof), - makeLtFn(types.Decimal, types.Int, volatility.LeakProof), - makeLtFn(types.Float, types.Decimal, volatility.LeakProof), - makeLtFn(types.Float, types.Int, volatility.LeakProof), - makeLtFn(types.Int, types.Decimal, volatility.LeakProof), - makeLtFn(types.Int, types.Float, volatility.LeakProof), - makeLtFn(types.Int, types.Oid, volatility.LeakProof), - makeLtFn(types.Oid, types.Int, volatility.LeakProof), + makeLtFn(types.Decimal, types.Float, volatility.Leakproof), + makeLtFn(types.Decimal, types.Int, volatility.Leakproof), + makeLtFn(types.Float, types.Decimal, volatility.Leakproof), + makeLtFn(types.Float, types.Int, volatility.Leakproof), + makeLtFn(types.Int, types.Decimal, volatility.Leakproof), + makeLtFn(types.Int, types.Float, volatility.Leakproof), + makeLtFn(types.Int, types.Oid, volatility.Leakproof), + makeLtFn(types.Oid, types.Int, volatility.Leakproof), makeLtFn(types.Timestamp, types.Date, volatility.Immutable), makeLtFn(types.Timestamp, types.TimestampTZ, volatility.Stable), makeLtFn(types.TimestampTZ, types.Date, volatility.Stable), @@ -1533,41 +1533,41 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ treecmp.LE: { // Single-type comparisons. makeLeFn(types.AnyEnum, types.AnyEnum, volatility.Immutable), - makeLeFn(types.Bool, types.Bool, volatility.LeakProof), - makeLeFn(types.Bytes, types.Bytes, volatility.LeakProof), - makeLeFn(types.Date, types.Date, volatility.LeakProof), + makeLeFn(types.Bool, types.Bool, volatility.Leakproof), + makeLeFn(types.Bytes, types.Bytes, volatility.Leakproof), + makeLeFn(types.Date, types.Date, volatility.Leakproof), makeLeFn(types.Decimal, types.Decimal, volatility.Immutable), // Note: it is an error to compare two strings with different collations; - // the operator is leak proof under the assumption that these cases will be + // the operator is leakproof under the assumption that these cases will be // detected during type checking. - makeLeFn(types.AnyCollatedString, types.AnyCollatedString, volatility.LeakProof), - makeLeFn(types.Float, types.Float, volatility.LeakProof), - makeLeFn(types.Box2D, types.Box2D, volatility.LeakProof), - makeLeFn(types.Geography, types.Geography, volatility.LeakProof), - makeLeFn(types.Geometry, types.Geometry, volatility.LeakProof), - makeLeFn(types.INet, types.INet, volatility.LeakProof), - makeLeFn(types.Int, types.Int, volatility.LeakProof), - makeLeFn(types.Interval, types.Interval, volatility.LeakProof), - makeLeFn(types.Oid, types.Oid, volatility.LeakProof), - makeLeFn(types.String, types.String, volatility.LeakProof), - makeLeFn(types.Time, types.Time, volatility.LeakProof), - makeLeFn(types.TimeTZ, types.TimeTZ, volatility.LeakProof), - makeLeFn(types.Timestamp, types.Timestamp, volatility.LeakProof), - makeLeFn(types.TimestampTZ, types.TimestampTZ, volatility.LeakProof), - makeLeFn(types.Uuid, types.Uuid, volatility.LeakProof), - makeLeFn(types.VarBit, types.VarBit, volatility.LeakProof), + makeLeFn(types.AnyCollatedString, types.AnyCollatedString, volatility.Leakproof), + makeLeFn(types.Float, types.Float, volatility.Leakproof), + makeLeFn(types.Box2D, types.Box2D, volatility.Leakproof), + makeLeFn(types.Geography, types.Geography, volatility.Leakproof), + makeLeFn(types.Geometry, types.Geometry, volatility.Leakproof), + makeLeFn(types.INet, types.INet, volatility.Leakproof), + makeLeFn(types.Int, types.Int, volatility.Leakproof), + makeLeFn(types.Interval, types.Interval, volatility.Leakproof), + makeLeFn(types.Oid, types.Oid, volatility.Leakproof), + makeLeFn(types.String, types.String, volatility.Leakproof), + makeLeFn(types.Time, types.Time, volatility.Leakproof), + makeLeFn(types.TimeTZ, types.TimeTZ, volatility.Leakproof), + makeLeFn(types.Timestamp, types.Timestamp, volatility.Leakproof), + makeLeFn(types.TimestampTZ, types.TimestampTZ, volatility.Leakproof), + makeLeFn(types.Uuid, types.Uuid, volatility.Leakproof), + makeLeFn(types.VarBit, types.VarBit, volatility.Leakproof), // Mixed-type comparisons. makeLeFn(types.Date, types.Timestamp, volatility.Immutable), makeLeFn(types.Date, types.TimestampTZ, volatility.Stable), - makeLeFn(types.Decimal, types.Float, volatility.LeakProof), - makeLeFn(types.Decimal, types.Int, volatility.LeakProof), - makeLeFn(types.Float, types.Decimal, volatility.LeakProof), - makeLeFn(types.Float, types.Int, volatility.LeakProof), - makeLeFn(types.Int, types.Decimal, volatility.LeakProof), - makeLeFn(types.Int, types.Float, volatility.LeakProof), - makeLeFn(types.Int, types.Oid, volatility.LeakProof), - makeLeFn(types.Oid, types.Int, volatility.LeakProof), + makeLeFn(types.Decimal, types.Float, volatility.Leakproof), + makeLeFn(types.Decimal, types.Int, volatility.Leakproof), + makeLeFn(types.Float, types.Decimal, volatility.Leakproof), + makeLeFn(types.Float, types.Int, volatility.Leakproof), + makeLeFn(types.Int, types.Decimal, volatility.Leakproof), + makeLeFn(types.Int, types.Float, volatility.Leakproof), + makeLeFn(types.Int, types.Oid, volatility.Leakproof), + makeLeFn(types.Oid, types.Int, volatility.Leakproof), makeLeFn(types.Timestamp, types.Date, volatility.Immutable), makeLeFn(types.Timestamp, types.TimestampTZ, volatility.Stable), makeLeFn(types.TimestampTZ, types.Date, volatility.Stable), @@ -1596,7 +1596,7 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ NullableArgs: true, // Avoids ambiguous comparison error for NULL IS NOT DISTINCT FROM NULL. PreferredOverload: true, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, &CmpOp{ LeftType: types.AnyArray, @@ -1605,46 +1605,46 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ ComparisonOperator: treecmp.MakeComparisonOperator(treecmp.IsNotDistinctFrom), }, NullableArgs: true, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, // Single-type comparisons. makeIsFn(types.AnyEnum, types.AnyEnum, volatility.Immutable), - makeIsFn(types.Bool, types.Bool, volatility.LeakProof), - makeIsFn(types.Bytes, types.Bytes, volatility.LeakProof), - makeIsFn(types.Date, types.Date, volatility.LeakProof), + makeIsFn(types.Bool, types.Bool, volatility.Leakproof), + makeIsFn(types.Bytes, types.Bytes, volatility.Leakproof), + makeIsFn(types.Date, types.Date, volatility.Leakproof), makeIsFn(types.Decimal, types.Decimal, volatility.Immutable), // Note: it is an error to compare two strings with different collations; - // the operator is leak proof under the assumption that these cases will be + // the operator is leakproof under the assumption that these cases will be // detected during type checking. - makeIsFn(types.AnyCollatedString, types.AnyCollatedString, volatility.LeakProof), - makeIsFn(types.Float, types.Float, volatility.LeakProof), - makeIsFn(types.Box2D, types.Box2D, volatility.LeakProof), - makeIsFn(types.Geography, types.Geography, volatility.LeakProof), - makeIsFn(types.Geometry, types.Geometry, volatility.LeakProof), - makeIsFn(types.INet, types.INet, volatility.LeakProof), - makeIsFn(types.Int, types.Int, volatility.LeakProof), - makeIsFn(types.Interval, types.Interval, volatility.LeakProof), + makeIsFn(types.AnyCollatedString, types.AnyCollatedString, volatility.Leakproof), + makeIsFn(types.Float, types.Float, volatility.Leakproof), + makeIsFn(types.Box2D, types.Box2D, volatility.Leakproof), + makeIsFn(types.Geography, types.Geography, volatility.Leakproof), + makeIsFn(types.Geometry, types.Geometry, volatility.Leakproof), + makeIsFn(types.INet, types.INet, volatility.Leakproof), + makeIsFn(types.Int, types.Int, volatility.Leakproof), + makeIsFn(types.Interval, types.Interval, volatility.Leakproof), makeIsFn(types.Jsonb, types.Jsonb, volatility.Immutable), - makeIsFn(types.Oid, types.Oid, volatility.LeakProof), - makeIsFn(types.String, types.String, volatility.LeakProof), - makeIsFn(types.Time, types.Time, volatility.LeakProof), - makeIsFn(types.TimeTZ, types.TimeTZ, volatility.LeakProof), - makeIsFn(types.Timestamp, types.Timestamp, volatility.LeakProof), - makeIsFn(types.TimestampTZ, types.TimestampTZ, volatility.LeakProof), - makeIsFn(types.Uuid, types.Uuid, volatility.LeakProof), - makeIsFn(types.VarBit, types.VarBit, volatility.LeakProof), + makeIsFn(types.Oid, types.Oid, volatility.Leakproof), + makeIsFn(types.String, types.String, volatility.Leakproof), + makeIsFn(types.Time, types.Time, volatility.Leakproof), + makeIsFn(types.TimeTZ, types.TimeTZ, volatility.Leakproof), + makeIsFn(types.Timestamp, types.Timestamp, volatility.Leakproof), + makeIsFn(types.TimestampTZ, types.TimestampTZ, volatility.Leakproof), + makeIsFn(types.Uuid, types.Uuid, volatility.Leakproof), + makeIsFn(types.VarBit, types.VarBit, volatility.Leakproof), // Mixed-type comparisons. makeIsFn(types.Date, types.Timestamp, volatility.Immutable), makeIsFn(types.Date, types.TimestampTZ, volatility.Stable), - makeIsFn(types.Decimal, types.Float, volatility.LeakProof), - makeIsFn(types.Decimal, types.Int, volatility.LeakProof), - makeIsFn(types.Float, types.Decimal, volatility.LeakProof), - makeIsFn(types.Float, types.Int, volatility.LeakProof), - makeIsFn(types.Int, types.Decimal, volatility.LeakProof), - makeIsFn(types.Int, types.Float, volatility.LeakProof), - makeIsFn(types.Int, types.Oid, volatility.LeakProof), - makeIsFn(types.Oid, types.Int, volatility.LeakProof), + makeIsFn(types.Decimal, types.Float, volatility.Leakproof), + makeIsFn(types.Decimal, types.Int, volatility.Leakproof), + makeIsFn(types.Float, types.Decimal, volatility.Leakproof), + makeIsFn(types.Float, types.Int, volatility.Leakproof), + makeIsFn(types.Int, types.Decimal, volatility.Leakproof), + makeIsFn(types.Int, types.Float, volatility.Leakproof), + makeIsFn(types.Int, types.Oid, volatility.Leakproof), + makeIsFn(types.Oid, types.Int, volatility.Leakproof), makeIsFn(types.Timestamp, types.Date, volatility.Immutable), makeIsFn(types.Timestamp, types.TimestampTZ, volatility.Stable), makeIsFn(types.TimestampTZ, types.Date, volatility.Stable), @@ -1665,29 +1665,29 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ }, treecmp.In: { - makeEvalTupleIn(types.AnyEnum, volatility.LeakProof), - makeEvalTupleIn(types.Bool, volatility.LeakProof), - makeEvalTupleIn(types.Bytes, volatility.LeakProof), - makeEvalTupleIn(types.Date, volatility.LeakProof), - makeEvalTupleIn(types.Decimal, volatility.LeakProof), - makeEvalTupleIn(types.AnyCollatedString, volatility.LeakProof), - makeEvalTupleIn(types.AnyTuple, volatility.LeakProof), - makeEvalTupleIn(types.Float, volatility.LeakProof), - makeEvalTupleIn(types.Box2D, volatility.LeakProof), - makeEvalTupleIn(types.Geography, volatility.LeakProof), - makeEvalTupleIn(types.Geometry, volatility.LeakProof), - makeEvalTupleIn(types.INet, volatility.LeakProof), - makeEvalTupleIn(types.Int, volatility.LeakProof), - makeEvalTupleIn(types.Interval, volatility.LeakProof), - makeEvalTupleIn(types.Jsonb, volatility.LeakProof), - makeEvalTupleIn(types.Oid, volatility.LeakProof), - makeEvalTupleIn(types.String, volatility.LeakProof), - makeEvalTupleIn(types.Time, volatility.LeakProof), - makeEvalTupleIn(types.TimeTZ, volatility.LeakProof), - makeEvalTupleIn(types.Timestamp, volatility.LeakProof), - makeEvalTupleIn(types.TimestampTZ, volatility.LeakProof), - makeEvalTupleIn(types.Uuid, volatility.LeakProof), - makeEvalTupleIn(types.VarBit, volatility.LeakProof), + makeEvalTupleIn(types.AnyEnum, volatility.Leakproof), + makeEvalTupleIn(types.Bool, volatility.Leakproof), + makeEvalTupleIn(types.Bytes, volatility.Leakproof), + makeEvalTupleIn(types.Date, volatility.Leakproof), + makeEvalTupleIn(types.Decimal, volatility.Leakproof), + makeEvalTupleIn(types.AnyCollatedString, volatility.Leakproof), + makeEvalTupleIn(types.AnyTuple, volatility.Leakproof), + makeEvalTupleIn(types.Float, volatility.Leakproof), + makeEvalTupleIn(types.Box2D, volatility.Leakproof), + makeEvalTupleIn(types.Geography, volatility.Leakproof), + makeEvalTupleIn(types.Geometry, volatility.Leakproof), + makeEvalTupleIn(types.INet, volatility.Leakproof), + makeEvalTupleIn(types.Int, volatility.Leakproof), + makeEvalTupleIn(types.Interval, volatility.Leakproof), + makeEvalTupleIn(types.Jsonb, volatility.Leakproof), + makeEvalTupleIn(types.Oid, volatility.Leakproof), + makeEvalTupleIn(types.String, volatility.Leakproof), + makeEvalTupleIn(types.Time, volatility.Leakproof), + makeEvalTupleIn(types.TimeTZ, volatility.Leakproof), + makeEvalTupleIn(types.Timestamp, volatility.Leakproof), + makeEvalTupleIn(types.TimestampTZ, volatility.Leakproof), + makeEvalTupleIn(types.Uuid, volatility.Leakproof), + makeEvalTupleIn(types.VarBit, volatility.Leakproof), }, treecmp.Like: { @@ -1695,7 +1695,7 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ LeftType: types.String, RightType: types.String, EvalOp: &MatchLikeOp{CaseInsensitive: false}, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, }, @@ -1704,7 +1704,7 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ LeftType: types.String, RightType: types.String, EvalOp: &MatchLikeOp{CaseInsensitive: true}, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, }, @@ -1713,7 +1713,7 @@ var CmpOps = cmpOpFixups(map[treecmp.ComparisonOperatorSymbol]cmpOpOverload{ LeftType: types.String, RightType: types.String, EvalOp: &SimilarToOp{Escape: '\\'}, - Volatility: volatility.LeakProof, + Volatility: volatility.Leakproof, }, }, diff --git a/pkg/sql/sem/volatility/volatility.go b/pkg/sql/sem/volatility/volatility.go index 623d0259c76a..f07750a13633 100644 --- a/pkg/sql/sem/volatility/volatility.go +++ b/pkg/sql/sem/volatility/volatility.go @@ -25,24 +25,24 @@ import "github.com/cockroachdb/errors" type V int8 const ( - // LeakProof means that the operator cannot modify the database, the + // Leakproof means that the operator cannot modify the database, the // transaction state, or any other state. It cannot depend on configuration // settings and is guaranteed to return the same results given the same // arguments in any context. In addition, no information about the arguments // is conveyed except via the return value. Any function that might throw an - // error depending on the values of its arguments is not leak-proof. + // error depending on the values of its arguments is not leakproof. // // USE THIS WITH CAUTION! The optimizer might call operators that are leak // proof on inputs that they wouldn't normally be called on (e.g. pulling // expressions out of a CASE). In the future, they may even run on rows that // the user doesn't have permission to access. // - // Note: LeakProof is strictly stronger than Immutable. In - // principle it could be possible to have leak-proof stable or volatile + // Note: Leakproof is strictly stronger than Immutable. In + // principle it could be possible to have leakproof stable or volatile // functions (perhaps now()); but this is not useful in practice as very few - // operators are marked leak-proof. + // operators are marked leakproof. // Examples: integer comparison. - LeakProof V = 1 + iota + Leakproof V = 1 + iota // Immutable means that the operator cannot modify the database, the // transaction state, or any other state. It cannot depend on configuration // settings and is guaranteed to return the same results given the same @@ -64,8 +64,8 @@ const ( // String returns the byte representation of Volatility as a string. func (v V) String() string { switch v { - case LeakProof: - return "leak-proof" + case Leakproof: + return "leakproof" case Immutable: return "immutable" case Stable: @@ -77,11 +77,28 @@ func (v V) String() string { } } +// TitleString returns the byte representation of Volatility as a title-cased +// string. +func (v V) TitleString() string { + switch v { + case Leakproof: + return "Leakproof" + case Immutable: + return "Immutable" + case Stable: + return "Stable" + case Volatile: + return "Volatile" + default: + return "Invalid" + } +} + // ToPostgres returns the postgres "provolatile" string ("i" or "s" or "v") and // the "proleakproof" flag. func (v V) ToPostgres() (provolatile string, proleakproof bool) { switch v { - case LeakProof: + case Leakproof: return "i", true case Immutable: return "i", false @@ -100,7 +117,7 @@ func FromPostgres(provolatile string, proleakproof bool) (V, error) { switch provolatile { case "i": if proleakproof { - return LeakProof, nil + return Leakproof, nil } return Immutable, nil case "s":