Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions docs.feldera.com/docs/sql/comparisons.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,17 @@ but always return a Boolean value (sometimes nullable):
<td>inclusive at both endpoints</td>
</tr>
<tr>
<td><a id="between"></a><code>BETWEEN SYMMETRIC ... AND ...</code></td>
<td><a id="notbetween"></a><code>NOT BETWEEN [ASYMMETRIC] ... AND ...</code></td>
<td>The <code>NOT</code> of the previous operator</td>
<td>not inclusive at either endpoints</td>
</tr>
<tr>
<td><a id="symmetric-between"></a><code>BETWEEN SYMMETRIC ... AND ...</code></td>
<td><code>x BETWEEN a AND b</code> is the same as <code>(a &lt;= x AND x &lt;= b) OR (b &lt;= x AND x &lt;= a)</code></td>
<td>inclusive at both endpoints; order of endpoints does not matter</td>
</tr>
<tr>
<td><a id="notbetween"></a><code>NOT BETWEEN ... AND ...</code></td>
<td><a id="symmetric-notbetween"></a><code>NOT BETWEEN SYMMETRIC ... AND ...</code></td>
<td>The <code>NOT</code> of the previous operator</td>
<td>not inclusive at either endpoint</td>
</tr>
Expand Down
16 changes: 8 additions & 8 deletions docs.feldera.com/docs/sql/datetime.md
Original file line number Diff line number Diff line change
Expand Up @@ -376,14 +376,14 @@ We support the following time period predicate operators:

| Operation | Syntax | Semantics | Example |
| ------------------------ | ---------------------------------------------------- |-------------------------------------| ----------------------------------------------------------------------------------------------------------- |
| **CONTAINS (value)** | `(Start1, End1) CONTAINS V` | `start1 <= V AND end1 >= V` | `(DATE '2020-06-24', DATE '2020-06-22') CONTAINS DATE '2020-06-21'` => FALSE |
| **CONTAINS (period)** | `(Start1, End1) CONTAINS (Start2, End2)` | `start1 <= start2 AND end1 >= end2` | `(DATE '2020-06-21', DATE '2020-06-25') CONTAINS (DATE '2020-06-22', DATE '2020-06-23')` => TRUE |
| **OVERLAPS** | `(Start1, End1) OVERLAPS (Start2, End2)` | `start1 <= end2 AND end1 >= start2` | `(DATE '2020-06-21', DATE '2020-06-23') OVERLAPS (DATE '2020-06-22', DATE '2020-06-24')` => TRUE |
| **EQUALS** | `(Start1, End1) EQUALS (Start2, End2)` | `start1 = start2 AND end1 = end2` | `(DATE '2020-06-21', DATE '2020-06-23') EQUALS (DATE '2020-06-21', DATE '2020-06-23')` => TRUE |
| **PRECEDES** | `(Start1, End1) PRECEDES (Start2, End2)` | `end1 <= start2` | `(DATE '2020-06-21', DATE '2020-06-22') PRECEDES (DATE '2020-06-24', DATE '2020-06-25')` => TRUE |
| **IMMEDIATELY PRECEDES** | `(Start1, End1) IMMEDIATELY PRECEDES (Start2, End2)` | `end1 = start2` | `(DATE '2020-06-21', DATE '2020-06-22') IMMEDIATELY PRECEDES (DATE '2020-06-22', DATE '2020-06-23')` => TRUE |
| **SUCCEEDS** | `(Start1, End1) SUCCEEDS (Start2, End2)` | `start1 >= end2` | `(DATE '2020-06-24', DATE '2020-06-25') SUCCEEDS (DATE '2020-06-21', DATE '2020-06-22')` => TRUE |
| **IMMEDIATELY SUCCEEDS** | `(Start1, End1) IMMEDIATELY SUCCEEDS (Start2, End2)` | `start1 = end2` | `(DATE '2020-06-24', DATE '2020-06-25') IMMEDIATELY SUCCEEDS (DATE '2020-06-23', DATE '2020-06-24')` => TRUE |
| <a id="contains"></a>**CONTAINS (value)** | `(Start1, End1) CONTAINS V` | `start1 <= V AND end1 >= V` | `(DATE '2020-06-24', DATE '2020-06-22') CONTAINS DATE '2020-06-21'` => FALSE |
| **CONTAINS (period)** | `(Start1, End1) CONTAINS (Start2, End2)` | `start1 <= start2 AND end1 >= end2` | `(DATE '2020-06-21', DATE '2020-06-25') CONTAINS (DATE '2020-06-22', DATE '2020-06-23')` => TRUE |
| <a id="overlaps"></a>**OVERLAPS** | `(Start1, End1) OVERLAPS (Start2, End2)` | `start1 <= end2 AND end1 >= start2` | `(DATE '2020-06-21', DATE '2020-06-23') OVERLAPS (DATE '2020-06-22', DATE '2020-06-24')` => TRUE |
| <a id="equals"></a> **EQUALS** | `(Start1, End1) EQUALS (Start2, End2)` | `start1 = start2 AND end1 = end2` | `(DATE '2020-06-21', DATE '2020-06-23') EQUALS (DATE '2020-06-21', DATE '2020-06-23')` => TRUE |
| <a id="precedes"></a>**PRECEDES** | `(Start1, End1) PRECEDES (Start2, End2)` | `end1 <= start2` | `(DATE '2020-06-21', DATE '2020-06-22') PRECEDES (DATE '2020-06-24', DATE '2020-06-25')` => TRUE |
| <a id="immediately-precedes"></a>**IMMEDIATELY PRECEDES** | `(Start1, End1) IMMEDIATELY PRECEDES (Start2, End2)` | `end1 = start2` | `(DATE '2020-06-21', DATE '2020-06-22') IMMEDIATELY PRECEDES (DATE '2020-06-22', DATE '2020-06-23')` => TRUE |
| <a id="succeeds"></a>**SUCCEEDS** | `(Start1, End1) SUCCEEDS (Start2, End2)` | `start1 >= end2` | `(DATE '2020-06-24', DATE '2020-06-25') SUCCEEDS (DATE '2020-06-21', DATE '2020-06-22')` => TRUE |
| <a id="immediately-succeeds"></a>**IMMEDIATELY SUCCEEDS** | `(Start1, End1) IMMEDIATELY SUCCEEDS (Start2, End2)` | `start1 = end2` | `(DATE '2020-06-24', DATE '2020-06-25') IMMEDIATELY SUCCEEDS (DATE '2020-06-23', DATE '2020-06-24')` => TRUE |


## Timezones
Expand Down
12 changes: 10 additions & 2 deletions docs.feldera.com/docs/sql/function-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
* `ATANH`: [float](float.md#atanh)
* `AVG` (aggregate): [aggregates](aggregates.md#avg), [aggregates](aggregates.md#window-avg)
* `BETWEEN`: [comparisons](comparisons.md#between), [operators](operators.md#between)
* `BETWEEN SYMMETRIC`: [comparisons](comparisons.md#symmetric-between)
* `BIN2UTF8`: [binary](binary.md#bin2utf8)
* `BIT_AND` (aggregate): [aggregates](aggregates.md#bit_and)
* `BIT_OR` (aggregate): [aggregates](aggregates.md#bit_or)
Expand All @@ -72,6 +73,7 @@
* `CONCAT`: [string](string.md#concat)
* `CONCAT_WS`: [string](string.md#concat_ws)
* `CONNECTOR_METADATA`: [grammar](grammar.md#connector_metadata)
* `CONTAINS`: [datetime](datetime.md#contains)
* `COS`: [float](float.md#cos)
* `COSH`: [float](float.md#cosh)
* `COT`: [float](float.md#cot)
Expand All @@ -95,6 +97,7 @@
* `DOW`: [datetime](datetime.md#date_dayofweek), [datetime](datetime.md#timestamp_dayofweek)
* `DOY`: [datetime](datetime.md#doy)
* `ELEMENT`: [array](array.md#element)
* `EQUALS`: [datetime](datetime.md#equals)
* `ESCAPE`: [string](string.md#like)
* `EVERY` (aggregate): [aggregates](aggregates.md#every)
* `EXCEPT`: [grammar](grammar.md#setop)
Expand All @@ -116,6 +119,8 @@
* `IFNULL`: [comparisons](comparisons.md#ifnull)
* `IGNORE NULLS`: [grammar](grammar.md#window-aggregates)
* `ILIKE`: [string](string.md#ilike)
* `IMMEDIATELY PRECEDES`: [datetime](datetime.md#immediately-precedes)
* `IMMEDIATELY SUCCEEDS`: [datetime](datetime.md#immediately-succeeds)
* `IN`: [comparisons](comparisons.md#in)
* `INITCAP`: [string](string.md#initcap)
* `INITCAP_SPACES`: [string](string.md#initcap_spaces)
Expand Down Expand Up @@ -161,6 +166,7 @@
* `MONTH`: [datetime](datetime.md#month)
* `NOT`: [boolean](boolean.md#not)
* `NOT BETWEEN`: [comparisons](comparisons.md#notbetween)
* `NOT BETWEEN SYMMETRIC`: [comparisons](comparisons.md#symmetric-notbetween)
* `NOT ILIKE`: [string](string.md#ilike)
* `NOT IN`: [comparisons](comparisons.md#in)
* `NOT LIKE`: [string](string.md#like)
Expand All @@ -172,7 +178,7 @@
* `OCTET_LENGTH`: [binary](binary.md#octet_length)
* `OR`: [boolean](boolean.md#or)
* `OVER`: [grammar](grammar.md#window-aggregates)
* `OVERLAPS`: [operators](operators.md#between)
* `OVERLAPS`: [datetime](datetime.md#overlaps)
* `OVERLAY`: [string](string.md#overlay), [binary](binary.md#overlay)
* `PARSE_DATE`: [datetime](datetime.md#date-parsing-and-formatting)
* `PARSE_JSON`: [json](json.md#parse_json)
Expand All @@ -181,6 +187,7 @@
* `PI`: [float](float.md#pi)
* `POSITION`: [string](string.md#position)
* `POWER`: [float](float.md#power)
* `PRECEDES`: [datetime](datetime.md#precedes)
* `QUARTER`: [datetime](datetime.md#quarter)
* `RADIANS`: [float](float.md#radians)
* `RANK` (aggregate): [aggregates](aggregates.md#rank)
Expand All @@ -190,7 +197,7 @@
* `RESPECT NULLS`: [grammar](grammar.md#window-aggregates)
* `RIGHT`: [string](string.md#right), [binary](binary.md#right)
* `RLIKE`: [string](string.md#rlike)
* `RLIKE`: [string](string.md#rlike)
* `RLIKE`: [string](string.md#rlike-function)
* `ROLLUP`: [grammar](grammar.md#cube)
* `ROUND`: [float](float.md#round), [float](float.md#round2), [decimal](decimal.md#round), [decimal](decimal.md#round2)
* `ROW`: [types](types.md#row_constructor)
Expand All @@ -214,6 +221,7 @@
* `STDDEV_SAMP` (aggregate): [aggregates](aggregates.md#stddev_samp)
* `SUBSTR`: [string](string.md#substr)
* `SUBSTRING`: [string](string.md#substring)
* `SUCCEEDS`: [datetime](datetime.md#succeeds)
* `SUM` (aggregate): [aggregates](aggregates.md#sum), [aggregates](aggregates.md#window-sum)
* `TABLE`: [table](table.md#syntax)
* `TAN`: [float](float.md#tan)
Expand Down
2 changes: 1 addition & 1 deletion docs.feldera.com/docs/sql/string.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ example.
<td><code>right('abcde', 2)</code> => <code>de</code></td>
</tr>
<tr>
<td><code>RLIKE(string, pattern)</code></td>
<td><a id="rlike-function"></a><code>RLIKE(string, pattern)</code></td>
<td>A function equivalent to the <code>RLIKE</code> operator above.</td>
<td><code>RLIKE('string', 's..i.*')</code> => <code>TRUE</code></td>
</tr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,14 +207,20 @@ record Func(SqlOperator function, String functionName, SqlLibrary library,
new Func(SqlStdOperatorTable.LATERAL, "LATERAL", SqlLibrary.STANDARD, "grammar#lateral", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.COLLECTION_TABLE, "TABLE", SqlLibrary.STANDARD, "grammar", FunctionDocumentation.NO_FILE, false),

new Func(SqlStdOperatorTable.OVERLAPS, "OVERLAPS", SqlLibrary.STANDARD, "operators#between", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.OVERLAPS, "OVERLAPS", SqlLibrary.STANDARD, "datetime#overlaps", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.PRECEDES, "PRECEDES", SqlLibrary.STANDARD, "datetime#precedes", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.SUCCEEDS, "SUCCEEDS", SqlLibrary.STANDARD, "datetime#succeeds", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.CONTAINS, "CONTAINS", SqlLibrary.STANDARD, "datetime#contains", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.PERIOD_EQUALS, "EQUALS", SqlLibrary.STANDARD, "datetime#equals", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.IMMEDIATELY_PRECEDES, "IMMEDIATELY PRECEDES", SqlLibrary.STANDARD, "datetime#immediately-precedes", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.IMMEDIATELY_SUCCEEDS, "IMMEDIATELY SUCCEEDS", SqlLibrary.STANDARD, "datetime#immediately-succeeds", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.BETWEEN, "BETWEEN", SqlLibrary.STANDARD, "comparisons#between,operators#between",
"runtime_aggtest/illarg_tests/test_cmp_operators.py", false),
new Func(SqlStdOperatorTable.NOT_BETWEEN, "NOT BETWEEN", SqlLibrary.STANDARD, "comparisons#notbetween",
"runtime_aggtest/illarg_tests/test_cmp_operators.py", false),
new Func(SqlStdOperatorTable.SYMMETRIC_BETWEEN, "BETWEEN", SqlLibrary.STANDARD, "operators#between",
new Func(SqlStdOperatorTable.SYMMETRIC_BETWEEN, "BETWEEN SYMMETRIC", SqlLibrary.STANDARD, "comparisons#symmetric-between",
"runtime_aggtest/illarg_tests/test_cmp_operators.py", false),
new Func(SqlStdOperatorTable.SYMMETRIC_NOT_BETWEEN, "NOT BETWEEN", SqlLibrary.STANDARD, "operators#between",
new Func(SqlStdOperatorTable.SYMMETRIC_NOT_BETWEEN, "NOT BETWEEN SYMMETRIC", SqlLibrary.STANDARD, "comparisons#symmetric-notbetween",
"runtime_aggtest/illarg_tests/test_cmp_operators.py", false),
new Func(SqlStdOperatorTable.VALUES, "VALUES", SqlLibrary.STANDARD, "grammar#values", FunctionDocumentation.NO_FILE, false),

Expand Down Expand Up @@ -311,6 +317,8 @@ record Func(SqlOperator function, String functionName, SqlLibrary library,
new Func(SqlStdOperatorTable.SCALAR_QUERY, "$SCALAR_QUERY", SqlLibrary.STANDARD, "", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.STRUCT_ACCESS, "$STRUCT_ACCESS", SqlLibrary.STANDARD, "", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.CARDINALITY, "CARDINALITY", SqlLibrary.STANDARD, "array#cardinality,map#cardinality", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.TUMBLE, "TUMBLE", SqlLibrary.STANDARD, "table#tumble", FunctionDocumentation.NO_FILE, false),
new Func(SqlStdOperatorTable.HOP, "HOP", SqlLibrary.STANDARD, "table#hop", FunctionDocumentation.NO_FILE, false),

// SqlLibraryOperators operators
// DATEADD is not implemented, but give a better error message
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ private RlikeFunction() {
SqlKind.RLIKE,
ReturnTypes.BOOLEAN_NULLABLE,
OperandTypes.STRING_STRING,
SqlFunctionCategory.STRING, "string#rlike", FunctionDocumentation.NO_FILE);
SqlFunctionCategory.STRING, "string#rlike-function", FunctionDocumentation.NO_FILE);
}
}

Expand Down
Loading