Skip to content

Commit e36054b

Browse files
craig[bot]asg0451paulniziolek
committed
149710: changefeedccl: database-level changefeeds: tableset watcher r=aerfrei,andyyang890 a=asg0451 This is a new package that implements a watcher for database-level changefeeds. It is used to watch for changes to the set of watched tables, so that the feed coordinator may react to them. Fixes: #148836 Fixes: #148829 Release note: None 151439: sql: add LTREE datum with valueside encoding r=paulniziolek a=paulniziolek #### sql: add LTREE datum with basic functionality and pgwire encoding The ltree type LTREE is recognized as valid types by the parser, but is still mostly featureless. LTREE is supported as a table column and value, as they are parsed into *DLTree datums. An LTREE row is represented by a dot-separated Path of string labels, with some constraints on length and characters accepted. For example, `'Top.Middle.Bottom'::LTREE` and `'foo-bar.baz_bop'` are valid LTREE Paths. Informs: #44657 Epic: CRDB-148 Release note: None #### sql: add LTREE valueside encoding LTREE datums are valueside encoded by their byte representation including path separators. Informs: #44657 Epic: CRDB-148 Release note: None Co-authored-by: Miles Frankel <[email protected]> Co-authored-by: Paul Niziolek <[email protected]>
3 parents 06444d3 + 8cfa71b + c55d33b commit e36054b

File tree

79 files changed

+1930
-45
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1930
-45
lines changed

docs/generated/sql/aggregates.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@
7373
</span></td><td>Immutable</td></tr>
7474
<tr><td><a name="array_agg"></a><code>array_agg(arg1: jsonb[]) &rarr; jsonb[][]</code></td><td><span class="funcdesc"><p>Aggregates the selected values into an array.</p>
7575
</span></td><td>Immutable</td></tr>
76+
<tr><td><a name="array_agg"></a><code>array_agg(arg1: ltree) &rarr; ltree[]</code></td><td><span class="funcdesc"><p>Aggregates the selected values into an array.</p>
77+
</span></td><td>Immutable</td></tr>
78+
<tr><td><a name="array_agg"></a><code>array_agg(arg1: ltree[]) &rarr; ltree[][]</code></td><td><span class="funcdesc"><p>Aggregates the selected values into an array.</p>
79+
</span></td><td>Immutable</td></tr>
7680
<tr><td><a name="array_agg"></a><code>array_agg(arg1: oid) &rarr; oid[]</code></td><td><span class="funcdesc"><p>Aggregates the selected values into an array.</p>
7781
</span></td><td>Immutable</td></tr>
7882
<tr><td><a name="array_agg"></a><code>array_agg(arg1: oid[]) &rarr; oid[][]</code></td><td><span class="funcdesc"><p>Aggregates the selected values into an array.</p>
@@ -133,6 +137,8 @@
133137
</span></td><td>Immutable</td></tr>
134138
<tr><td><a name="array_cat_agg"></a><code>array_cat_agg(arg1: jsonb[]) &rarr; jsonb[]</code></td><td><span class="funcdesc"><p>Unnests the selected arrays into elements that are then aggregated into a single array.</p>
135139
</span></td><td>Immutable</td></tr>
140+
<tr><td><a name="array_cat_agg"></a><code>array_cat_agg(arg1: ltree[]) &rarr; ltree[]</code></td><td><span class="funcdesc"><p>Unnests the selected arrays into elements that are then aggregated into a single array.</p>
141+
</span></td><td>Immutable</td></tr>
136142
<tr><td><a name="array_cat_agg"></a><code>array_cat_agg(arg1: oid[]) &rarr; oid[]</code></td><td><span class="funcdesc"><p>Unnests the selected arrays into elements that are then aggregated into a single array.</p>
137143
</span></td><td>Immutable</td></tr>
138144
<tr><td><a name="array_cat_agg"></a><code>array_cat_agg(arg1: pg_lsn[]) &rarr; pg_lsn[]</code></td><td><span class="funcdesc"><p>Unnests the selected arrays into elements that are then aggregated into a single array.</p>
@@ -275,6 +281,8 @@
275281
</span></td><td>Immutable</td></tr>
276282
<tr><td><a name="max"></a><code>max(arg1: jsonb) &rarr; jsonb</code></td><td><span class="funcdesc"><p>Identifies the maximum selected value.</p>
277283
</span></td><td>Immutable</td></tr>
284+
<tr><td><a name="max"></a><code>max(arg1: ltree) &rarr; ltree</code></td><td><span class="funcdesc"><p>Identifies the maximum selected value.</p>
285+
</span></td><td>Immutable</td></tr>
278286
<tr><td><a name="max"></a><code>max(arg1: oid) &rarr; oid</code></td><td><span class="funcdesc"><p>Identifies the maximum selected value.</p>
279287
</span></td><td>Immutable</td></tr>
280288
<tr><td><a name="max"></a><code>max(arg1: pg_lsn) &rarr; pg_lsn</code></td><td><span class="funcdesc"><p>Identifies the maximum selected value.</p>
@@ -321,6 +329,8 @@
321329
</span></td><td>Immutable</td></tr>
322330
<tr><td><a name="min"></a><code>min(arg1: jsonb) &rarr; jsonb</code></td><td><span class="funcdesc"><p>Identifies the minimum selected value.</p>
323331
</span></td><td>Immutable</td></tr>
332+
<tr><td><a name="min"></a><code>min(arg1: ltree) &rarr; ltree</code></td><td><span class="funcdesc"><p>Identifies the minimum selected value.</p>
333+
</span></td><td>Immutable</td></tr>
324334
<tr><td><a name="min"></a><code>min(arg1: oid) &rarr; oid</code></td><td><span class="funcdesc"><p>Identifies the minimum selected value.</p>
325335
</span></td><td>Immutable</td></tr>
326336
<tr><td><a name="min"></a><code>min(arg1: pg_lsn) &rarr; pg_lsn</code></td><td><span class="funcdesc"><p>Identifies the minimum selected value.</p>

docs/generated/sql/functions.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
</span></td><td>Immutable</td></tr>
4040
<tr><td><a name="array_append"></a><code>array_append(array: jsonb[], elem: jsonb) &rarr; jsonb[]</code></td><td><span class="funcdesc"><p>Appends <code>elem</code> to <code>array</code>, returning the result.</p>
4141
</span></td><td>Immutable</td></tr>
42+
<tr><td><a name="array_append"></a><code>array_append(array: ltree[], elem: ltree) &rarr; ltree[]</code></td><td><span class="funcdesc"><p>Appends <code>elem</code> to <code>array</code>, returning the result.</p>
43+
</span></td><td>Immutable</td></tr>
4244
<tr><td><a name="array_append"></a><code>array_append(array: oid[], elem: oid) &rarr; oid[]</code></td><td><span class="funcdesc"><p>Appends <code>elem</code> to <code>array</code>, returning the result.</p>
4345
</span></td><td>Immutable</td></tr>
4446
<tr><td><a name="array_append"></a><code>array_append(array: pg_lsn[], elem: pg_lsn) &rarr; pg_lsn[]</code></td><td><span class="funcdesc"><p>Appends <code>elem</code> to <code>array</code>, returning the result.</p>
@@ -87,6 +89,8 @@
8789
</span></td><td>Immutable</td></tr>
8890
<tr><td><a name="array_cat"></a><code>array_cat(left: jsonb[], right: jsonb[]) &rarr; jsonb[]</code></td><td><span class="funcdesc"><p>Appends two arrays.</p>
8991
</span></td><td>Immutable</td></tr>
92+
<tr><td><a name="array_cat"></a><code>array_cat(left: ltree[], right: ltree[]) &rarr; ltree[]</code></td><td><span class="funcdesc"><p>Appends two arrays.</p>
93+
</span></td><td>Immutable</td></tr>
9094
<tr><td><a name="array_cat"></a><code>array_cat(left: oid[], right: oid[]) &rarr; oid[]</code></td><td><span class="funcdesc"><p>Appends two arrays.</p>
9195
</span></td><td>Immutable</td></tr>
9296
<tr><td><a name="array_cat"></a><code>array_cat(left: pg_lsn[], right: pg_lsn[]) &rarr; pg_lsn[]</code></td><td><span class="funcdesc"><p>Appends two arrays.</p>
@@ -175,6 +179,10 @@
175179
</span></td><td>Immutable</td></tr>
176180
<tr><td><a name="array_position"></a><code>array_position(array: jsonb[], elem: jsonb, start: <a href="int.html">int</a>) &rarr; <a href="int.html">int</a></code></td><td><span class="funcdesc"><p>Return the index of the first occurrence of <code>elem</code> in <code>array</code>, with the search begins at <code>start</code> index.</p>
177181
</span></td><td>Immutable</td></tr>
182+
<tr><td><a name="array_position"></a><code>array_position(array: ltree[], elem: ltree) &rarr; <a href="int.html">int</a></code></td><td><span class="funcdesc"><p>Return the index of the first occurrence of <code>elem</code> in <code>array</code>.</p>
183+
</span></td><td>Immutable</td></tr>
184+
<tr><td><a name="array_position"></a><code>array_position(array: ltree[], elem: ltree, start: <a href="int.html">int</a>) &rarr; <a href="int.html">int</a></code></td><td><span class="funcdesc"><p>Return the index of the first occurrence of <code>elem</code> in <code>array</code>, with the search begins at <code>start</code> index.</p>
185+
</span></td><td>Immutable</td></tr>
178186
<tr><td><a name="array_position"></a><code>array_position(array: oid[], elem: oid) &rarr; <a href="int.html">int</a></code></td><td><span class="funcdesc"><p>Return the index of the first occurrence of <code>elem</code> in <code>array</code>.</p>
179187
</span></td><td>Immutable</td></tr>
180188
<tr><td><a name="array_position"></a><code>array_position(array: oid[], elem: oid, start: <a href="int.html">int</a>) &rarr; <a href="int.html">int</a></code></td><td><span class="funcdesc"><p>Return the index of the first occurrence of <code>elem</code> in <code>array</code>, with the search begins at <code>start</code> index.</p>
@@ -235,6 +243,8 @@
235243
</span></td><td>Immutable</td></tr>
236244
<tr><td><a name="array_positions"></a><code>array_positions(array: jsonb[], elem: jsonb) &rarr; <a href="int.html">int</a>[]</code></td><td><span class="funcdesc"><p>Returns an array of indexes of all occurrences of <code>elem</code> in <code>array</code>.</p>
237245
</span></td><td>Immutable</td></tr>
246+
<tr><td><a name="array_positions"></a><code>array_positions(array: ltree[], elem: ltree) &rarr; <a href="int.html">int</a>[]</code></td><td><span class="funcdesc"><p>Returns an array of indexes of all occurrences of <code>elem</code> in <code>array</code>.</p>
247+
</span></td><td>Immutable</td></tr>
238248
<tr><td><a name="array_positions"></a><code>array_positions(array: oid[], elem: oid) &rarr; <a href="int.html">int</a>[]</code></td><td><span class="funcdesc"><p>Returns an array of indexes of all occurrences of <code>elem</code> in <code>array</code>.</p>
239249
</span></td><td>Immutable</td></tr>
240250
<tr><td><a name="array_positions"></a><code>array_positions(array: pg_lsn[], elem: pg_lsn) &rarr; <a href="int.html">int</a>[]</code></td><td><span class="funcdesc"><p>Returns an array of indexes of all occurrences of <code>elem</code> in <code>array</code>.</p>
@@ -283,6 +293,8 @@
283293
</span></td><td>Immutable</td></tr>
284294
<tr><td><a name="array_prepend"></a><code>array_prepend(elem: jsonb, array: jsonb[]) &rarr; jsonb[]</code></td><td><span class="funcdesc"><p>Prepends <code>elem</code> to <code>array</code>, returning the result.</p>
285295
</span></td><td>Immutable</td></tr>
296+
<tr><td><a name="array_prepend"></a><code>array_prepend(elem: ltree, array: ltree[]) &rarr; ltree[]</code></td><td><span class="funcdesc"><p>Prepends <code>elem</code> to <code>array</code>, returning the result.</p>
297+
</span></td><td>Immutable</td></tr>
286298
<tr><td><a name="array_prepend"></a><code>array_prepend(elem: oid, array: oid[]) &rarr; oid[]</code></td><td><span class="funcdesc"><p>Prepends <code>elem</code> to <code>array</code>, returning the result.</p>
287299
</span></td><td>Immutable</td></tr>
288300
<tr><td><a name="array_prepend"></a><code>array_prepend(elem: pg_lsn, array: pg_lsn[]) &rarr; pg_lsn[]</code></td><td><span class="funcdesc"><p>Prepends <code>elem</code> to <code>array</code>, returning the result.</p>
@@ -331,6 +343,8 @@
331343
</span></td><td>Immutable</td></tr>
332344
<tr><td><a name="array_remove"></a><code>array_remove(array: jsonb[], elem: jsonb) &rarr; jsonb[]</code></td><td><span class="funcdesc"><p>Remove from <code>array</code> all elements equal to <code>elem</code>.</p>
333345
</span></td><td>Immutable</td></tr>
346+
<tr><td><a name="array_remove"></a><code>array_remove(array: ltree[], elem: ltree) &rarr; ltree[]</code></td><td><span class="funcdesc"><p>Remove from <code>array</code> all elements equal to <code>elem</code>.</p>
347+
</span></td><td>Immutable</td></tr>
334348
<tr><td><a name="array_remove"></a><code>array_remove(array: oid[], elem: oid) &rarr; oid[]</code></td><td><span class="funcdesc"><p>Remove from <code>array</code> all elements equal to <code>elem</code>.</p>
335349
</span></td><td>Immutable</td></tr>
336350
<tr><td><a name="array_remove"></a><code>array_remove(array: pg_lsn[], elem: pg_lsn) &rarr; pg_lsn[]</code></td><td><span class="funcdesc"><p>Remove from <code>array</code> all elements equal to <code>elem</code>.</p>
@@ -379,6 +393,8 @@
379393
</span></td><td>Immutable</td></tr>
380394
<tr><td><a name="array_replace"></a><code>array_replace(array: jsonb[], toreplace: jsonb, replacewith: jsonb) &rarr; jsonb[]</code></td><td><span class="funcdesc"><p>Replace all occurrences of <code>toreplace</code> in <code>array</code> with <code>replacewith</code>.</p>
381395
</span></td><td>Immutable</td></tr>
396+
<tr><td><a name="array_replace"></a><code>array_replace(array: ltree[], toreplace: ltree, replacewith: ltree) &rarr; ltree[]</code></td><td><span class="funcdesc"><p>Replace all occurrences of <code>toreplace</code> in <code>array</code> with <code>replacewith</code>.</p>
397+
</span></td><td>Immutable</td></tr>
382398
<tr><td><a name="array_replace"></a><code>array_replace(array: oid[], toreplace: oid, replacewith: oid) &rarr; oid[]</code></td><td><span class="funcdesc"><p>Replace all occurrences of <code>toreplace</code> in <code>array</code> with <code>replacewith</code>.</p>
383399
</span></td><td>Immutable</td></tr>
384400
<tr><td><a name="array_replace"></a><code>array_replace(array: pg_lsn[], toreplace: pg_lsn, replacewith: pg_lsn) &rarr; pg_lsn[]</code></td><td><span class="funcdesc"><p>Replace all occurrences of <code>toreplace</code> in <code>array</code> with <code>replacewith</code>.</p>

docs/generated/sql/operators.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@
195195
<tr><td><a href="interval.html">interval</a> <code><</code> <a href="interval.html">interval</a></td><td><a href="bool.html">bool</a></td></tr>
196196
<tr><td><a href="interval.html">interval[]</a> <code><</code> <a href="interval.html">interval[]</a></td><td><a href="bool.html">bool</a></td></tr>
197197
<tr><td>jsonb <code><</code> jsonb</td><td><a href="bool.html">bool</a></td></tr>
198+
<tr><td>ltree <code><</code> ltree</td><td><a href="bool.html">bool</a></td></tr>
198199
<tr><td>oid <code><</code> <a href="int.html">int</a></td><td><a href="bool.html">bool</a></td></tr>
199200
<tr><td>oid <code><</code> oid</td><td><a href="bool.html">bool</a></td></tr>
200201
<tr><td>pg_lsn <code><</code> pg_lsn</td><td><a href="bool.html">bool</a></td></tr>
@@ -273,6 +274,7 @@
273274
<tr><td><a href="interval.html">interval</a> <code><=</code> <a href="interval.html">interval</a></td><td><a href="bool.html">bool</a></td></tr>
274275
<tr><td><a href="interval.html">interval[]</a> <code><=</code> <a href="interval.html">interval[]</a></td><td><a href="bool.html">bool</a></td></tr>
275276
<tr><td>jsonb <code><=</code> jsonb</td><td><a href="bool.html">bool</a></td></tr>
277+
<tr><td>ltree <code><=</code> ltree</td><td><a href="bool.html">bool</a></td></tr>
276278
<tr><td>oid <code><=</code> <a href="int.html">int</a></td><td><a href="bool.html">bool</a></td></tr>
277279
<tr><td>oid <code><=</code> oid</td><td><a href="bool.html">bool</a></td></tr>
278280
<tr><td>pg_lsn <code><=</code> pg_lsn</td><td><a href="bool.html">bool</a></td></tr>
@@ -345,6 +347,7 @@
345347
<tr><td><a href="interval.html">interval</a> <code>=</code> <a href="interval.html">interval</a></td><td><a href="bool.html">bool</a></td></tr>
346348
<tr><td><a href="interval.html">interval[]</a> <code>=</code> <a href="interval.html">interval[]</a></td><td><a href="bool.html">bool</a></td></tr>
347349
<tr><td>jsonb <code>=</code> jsonb</td><td><a href="bool.html">bool</a></td></tr>
350+
<tr><td>ltree <code>=</code> ltree</td><td><a href="bool.html">bool</a></td></tr>
348351
<tr><td>oid <code>=</code> <a href="int.html">int</a></td><td><a href="bool.html">bool</a></td></tr>
349352
<tr><td>oid <code>=</code> oid</td><td><a href="bool.html">bool</a></td></tr>
350353
<tr><td>pg_lsn <code>=</code> pg_lsn</td><td><a href="bool.html">bool</a></td></tr>
@@ -429,6 +432,7 @@
429432
<tr><td><a href="int.html">int</a> <code>IN</code> tuple</td><td><a href="bool.html">bool</a></td></tr>
430433
<tr><td><a href="interval.html">interval</a> <code>IN</code> tuple</td><td><a href="bool.html">bool</a></td></tr>
431434
<tr><td>jsonb <code>IN</code> tuple</td><td><a href="bool.html">bool</a></td></tr>
435+
<tr><td>ltree <code>IN</code> tuple</td><td><a href="bool.html">bool</a></td></tr>
432436
<tr><td>oid <code>IN</code> tuple</td><td><a href="bool.html">bool</a></td></tr>
433437
<tr><td>pg_lsn <code>IN</code> tuple</td><td><a href="bool.html">bool</a></td></tr>
434438
<tr><td>refcursor <code>IN</code> tuple</td><td><a href="bool.html">bool</a></td></tr>
@@ -480,6 +484,7 @@
480484
<tr><td><a href="interval.html">interval[]</a> <code>IS NOT DISTINCT FROM</code> <a href="interval.html">interval[]</a></td><td><a href="bool.html">bool</a></td></tr>
481485
<tr><td>jsonb <code>IS NOT DISTINCT FROM</code> jsonb</td><td><a href="bool.html">bool</a></td></tr>
482486
<tr><td>jsonpath <code>IS NOT DISTINCT FROM</code> jsonpath</td><td><a href="bool.html">bool</a></td></tr>
487+
<tr><td>ltree <code>IS NOT DISTINCT FROM</code> ltree</td><td><a href="bool.html">bool</a></td></tr>
483488
<tr><td>oid <code>IS NOT DISTINCT FROM</code> <a href="int.html">int</a></td><td><a href="bool.html">bool</a></td></tr>
484489
<tr><td>oid <code>IS NOT DISTINCT FROM</code> oid</td><td><a href="bool.html">bool</a></td></tr>
485490
<tr><td>pg_lsn <code>IS NOT DISTINCT FROM</code> pg_lsn</td><td><a href="bool.html">bool</a></td></tr>
@@ -586,6 +591,8 @@
586591
<tr><td><a href="interval.html">interval[]</a> <code>||</code> <a href="interval.html">interval[]</a></td><td><a href="interval.html">interval[]</a></td></tr>
587592
<tr><td>jsonb <code>||</code> jsonb</td><td>jsonb</td></tr>
588593
<tr><td>jsonb <code>||</code> <a href="string.html">string</a></td><td><a href="string.html">string</a></td></tr>
594+
<tr><td>ltree <code>||</code> ltree</td><td>ltree</td></tr>
595+
<tr><td>ltree <code>||</code> <a href="string.html">string</a></td><td><a href="string.html">string</a></td></tr>
589596
<tr><td>oid <code>||</code> oid</td><td>oid</td></tr>
590597
<tr><td>oid <code>||</code> <a href="string.html">string</a></td><td><a href="string.html">string</a></td></tr>
591598
<tr><td>pg_lsn <code>||</code> pg_lsn</td><td>pg_lsn</td></tr>
@@ -603,6 +610,7 @@
603610
<tr><td><a href="string.html">string</a> <code>||</code> <a href="int.html">int</a></td><td><a href="string.html">string</a></td></tr>
604611
<tr><td><a href="string.html">string</a> <code>||</code> <a href="interval.html">interval</a></td><td><a href="string.html">string</a></td></tr>
605612
<tr><td><a href="string.html">string</a> <code>||</code> jsonb</td><td><a href="string.html">string</a></td></tr>
613+
<tr><td><a href="string.html">string</a> <code>||</code> ltree</td><td><a href="string.html">string</a></td></tr>
606614
<tr><td><a href="string.html">string</a> <code>||</code> oid</td><td><a href="string.html">string</a></td></tr>
607615
<tr><td><a href="string.html">string</a> <code>||</code> pg_lsn</td><td><a href="string.html">string</a></td></tr>
608616
<tr><td><a href="string.html">string</a> <code>||</code> refcursor</td><td><a href="string.html">string</a></td></tr>

0 commit comments

Comments
 (0)