Skip to content

Commit dd05cf1

Browse files
Merge branch 'latest' into 4634-feedback-page-docsself-hostedlatestupgradesminor-upgrade
2 parents 84981de + 3d00693 commit dd05cf1

File tree

8 files changed

+245
-16
lines changed

8 files changed

+245
-16
lines changed

_partials/_livesync-terminal.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ instance to a $SERVICE_LONG:
175175
As you run the $PG_CONNECTOR continuously, best practice is to run it as a Docker daemon.
176176

177177
```shell
178-
docker run -d --rm --name livesync timescale/live-sync:v0.4.0 run \
178+
docker run -d --rm --name livesync timescale/live-sync:v0.7.0 run \
179179
--publication <publication_name> --subscription <subscription_name> \
180180
--source $SOURCE --target $TARGET --table-map <table_map_as_json>
181181
```
@@ -330,7 +330,7 @@ EOF
330330
Use the `--drop` flag to remove the replication slots created by the $PG_CONNECTOR on the source database.
331331

332332
```shell
333-
docker run -it --rm --name livesync timescale/live-sync:v0.4.0 run \
333+
docker run -it --rm --name livesync timescale/live-sync:v0.7.0 run \
334334
--publication <publication_name> --subscription <subscription_name> \
335335
--source $SOURCE --target $TARGET \
336336
--drop

_partials/_since_0_4_0.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<Tag variant="hollow">Since [pg_textsearch v0.4.0](https://github.com/timescale/pg_textsearch/releases/tag/v0.4.0)</Tag>
File renamed without changes.

about/changelog.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,39 @@ products: [cloud]
99

1010
All the latest features and updates to $CLOUD_LONG.
1111

12+
## pg_textsearch improvements (v0.3.0 and v0.4.0)
13+
<Label type="date">January 16, 2026</Label>
14+
15+
Tiger Cloud now includes significant improvements to `pg_textsearch`, bringing major gains in query performance, index size, and scalability as we move toward GA.
16+
17+
**What’s new:**
18+
- **Block MAX-WAND ranked search (v0.3.0):**
19+
Introduces the Block MAX-WAND algorithm for ranked keyword search, delivering substantial performance improvements. Query performance is now competitive with the fastest Postgres-based search solutions, including ParadeDB.
20+
- **Posting-list compression (v0.4.0):**
21+
Reduces index sizes by **40% or more**, making `pg_textsearch` indexes smaller than ParadeDB in many cases.
22+
- **Improved partition handling (v0.4.0):**
23+
Fixes and stability improvements for indexes on tables with large numbers of partitions.
24+
25+
Additional optimizations, including block compression and parallel indexing, are in progress as `pg_textsearch` continues its sprint toward GA.
26+
27+
**Learn more:**
28+
- [pg_textsearch v0.3.0 release notes](https://github.com/timescale/pg_textsearch/releases/tag/v0.3.0)
29+
- [pg_textsearch v0.4.0 release notes](https://github.com/timescale/pg_textsearch/releases/tag/v0.4.0)
30+
31+
## Postgres 18 support
32+
<Label type="date">January 13, 2026</Label>
33+
34+
Tiger Cloud now supports **Postgres 18**. All new services are created with Postgres 18 by default, and existing services will be able to upgrade to Postgres 18 over the next few weeks.
35+
36+
**Postgres 18 highlights include:**
37+
- **Asynchronous I/O (AIO), including `io_uring` on Linux**, for significantly faster read-heavy workloads
38+
- **Faster, less disruptive major upgrades**, including improved `pg_upgrade` and the ability to **preserve planner statistics** across upgrades
39+
- **Virtual generated columns** (now the default for generated columns) and the **`uuidv7()`** function for better UUID indexing behavior
40+
- **Query performance improvements**, including expanded index usage (for example, skip-scan on multicolumn B-tree indexes) and **parallel GIN index builds**
41+
- **Security and operability enhancements**, including **OAuth 2.0 authentication support** and **page checksums enabled by default for new clusters**
42+
43+
For more details about Postgres 18, check the [official announcement](https://www.postgresql.org/about/news/postgresql-18-released-3142/)
44+
1245
## 🧱 Terraform Support for S3 Source Connectors and pg_textsearch update
1346
<Label type="date">January 09, 2026</Label>
1447

use-timescale/extensions/pg-textsearch.md

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@ products: [cloud, self_hosted]
88

99
import EA1125 from "versionContent/_partials/_early_access_11_25.mdx";
1010
import SINCE010 from "versionContent/_partials/_since_0_1_0.mdx";
11+
import SINCE040 from "versionContent/_partials/_since_0_4_0.mdx";
1112
import IntegrationPrereqs from "versionContent/_partials/_integration-prereqs.mdx";
1213

1314
# Optimize full text search with BM25
1415

15-
$PG full-text search at scale consistently hits a wall where performance degrades catastrophically.
16+
$PG full-text search at scale consistently hits a wall where performance degrades catastrophically.
1617
$COMPANY's [pg_textsearch][pg_textsearch-github-repo] brings modern [BM25][bm25-wiki]-based full-text search directly into $PG,
17-
with a memtable architecture for efficient indexing and ranking. `pg_textsearch` integrates seamlessly with SQL and
18-
provides better search quality and performance than the $PG built-in full-text search.
18+
with a memtable architecture for efficient indexing and ranking. `pg_textsearch` integrates seamlessly with SQL and
19+
provides better search quality and performance than the $PG built-in full-text search. With Block-Max WAND optimization,
20+
`pg_textsearch` delivers up to **4x faster top-k queries** compared to native BM25 implementations. Advanced compression
21+
using delta encoding and bitpacking reduces index sizes by **41%** while improving query performance by 10-20% for
22+
shorter queries.
1923

2024
BM25 scores in `pg_textsearch` are returned as negative values, where lower (more negative) numbers indicate better
2125
matches. `pg_textsearch` implements the following:
@@ -73,7 +77,7 @@ You have installed `pg_textsearch` on $CLOUD_LONG.
7377

7478
## Create BM25 indexes on your data
7579

76-
BM25 indexes provide modern relevance ranking that outperforms $PG's built-in ts_rank functions by using corpus
80+
BM25 indexes provide modern relevance ranking that outperforms $PG's built-in ts_rank functions by using corpus
7781
statistics and better algorithmic design.
7882
7983
To create a BM25 index with pg_textsearch:
@@ -109,21 +113,31 @@ To create a BM25 index with pg_textsearch:
109113
WITH (text_config='english');
110114
```
111115
112-
BM25 supports single-column indexes only.
116+
BM25 supports single-column indexes only. For optimal performance, load your data first, then create the index.
113117
114118
</Procedure>
115119
116120
You have created a BM25 index for full-text search.
117121
118122
## Optimize search queries for performance
119123
120-
Use efficient query patterns to leverage BM25 ranking and optimize search performance.
124+
Use efficient query patterns to leverage BM25 ranking and optimize search performance. The `<@>` operator provides
125+
BM25-based ranking scores as negative values, where lower (more negative) scores indicate better matches. In `ORDER BY`
126+
clauses, the index is automatically detected from the column. For `WHERE` clause filtering, use `to_bm25query()` with
127+
an explicit index name.
121128
122129
<Procedure>
123130
124131
1. **Perform ranked searches using the distance operator**
125132
126133
```sql
134+
-- Simplified syntax: index is automatically detected in ORDER BY
135+
SELECT name, description, description <@> 'ergonomic work' as score
136+
FROM products
137+
ORDER BY score
138+
LIMIT 3;
139+
140+
-- Alternative explicit syntax (works in all contexts)
127141
SELECT name, description, description <@> to_bm25query('ergonomic work', 'products_search_idx') as score
128142
FROM products
129143
ORDER BY score
@@ -142,6 +156,8 @@ Use efficient query patterns to leverage BM25 ranking and optimize search perfor
142156
143157
1. **Filter results by score threshold**
144158
159+
For filtering with WHERE clauses, use explicit index specification with `to_bm25query()`:
160+
145161
```sql
146162
SELECT name, description <@> to_bm25query('wireless', 'products_search_idx') as score
147163
FROM products
@@ -163,7 +179,7 @@ Use efficient query patterns to leverage BM25 ranking and optimize search perfor
163179
FROM products
164180
WHERE price < 500
165181
AND description <@> to_bm25query('ergonomic', 'products_search_idx') < -0.5
166-
ORDER BY description <@> to_bm25query('ergonomic', 'products_search_idx')
182+
ORDER BY score
167183
LIMIT 5;
168184
```
169185
@@ -342,17 +358,30 @@ Customize `pg_textsearch` behavior for your specific use case and data character
342358
threshold, it automatically flushes to a segment at transaction commit.
343359
344360
```sql
345-
-- Set memtable spill threshold (default 800000 posting entries, ~8MB segments)
346-
SET pg_textsearch.memtable_spill_threshold = 1000000;
361+
-- Set memtable spill threshold (default 32000000 posting entries, ~1M docs/segment)
362+
SET pg_textsearch.memtable_spill_threshold = 32000000;
347363
348364
-- Set bulk load spill threshold (default 100000 terms per transaction)
349365
SET pg_textsearch.bulk_load_threshold = 150000;
350366
351367
-- Set default query limit when no LIMIT clause is present (default 1000)
352368
SET pg_textsearch.default_limit = 5000;
369+
370+
-- Enable Block-Max WAND optimization for faster top-k queries (enabled by default)
371+
SET pg_textsearch.enable_bmw = true;
372+
373+
-- Log block skip statistics for debugging query performance (disabled by default)
374+
SET pg_textsearch.log_bmw_stats = false;
353375
```
354376
<SINCE010 />
355377
378+
```sql
379+
-- Enable segment compression using delta encoding and bitpacking (enabled by default)
380+
-- Reduces index size by ~41% with 10-20% query performance improvement for shorter queries
381+
SET pg_textsearch.compress_segments = on;
382+
```
383+
<SINCE040 />
384+
356385
1. **Configure language-specific text processing**
357386
358387
You can create multiple BM25 indexes on the same column with different language configurations:
@@ -387,11 +416,26 @@ Customize `pg_textsearch` behavior for your specific use case and data character
387416
WHERE indexrelid::regclass::text ~ 'bm25';
388417
```
389418
390-
- View detailed index information
419+
- View index summary with corpus statistics and memory usage
420+
```sql
421+
SELECT bm25_summarize_index('products_search_idx');
422+
```
423+
424+
- View detailed index structure (output is truncated for display)
391425
```sql
392426
SELECT bm25_dump_index('products_search_idx');
393427
```
394428
429+
- Export full index dump to a file for detailed analysis
430+
```sql
431+
SELECT bm25_dump_index('products_search_idx', '/tmp/index_dump.txt');
432+
```
433+
434+
- Force memtable spill to disk (useful for testing or memory management)
435+
```sql
436+
SELECT bm25_spill_index('products_search_idx');
437+
```
438+
395439
</Procedure>
396440
397441
You have configured `pg_textsearch` for optimal performance. For production applications, consider implementing result

use-timescale/schema-management/about-constraints.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ CREATE TABLE conditions (
3838
);
3939
```
4040

41-
<CreateHypertablePolicyNote />
42-
4341
This example also references values in another `locations` table using a foreign
4442
key constraint.
4543

@@ -50,7 +48,6 @@ Time columns used for partitioning must not allow `NULL` values. A
5048

5149
</Highlight>
5250

53-
For more information on how to manage constraints, see the
54-
[$PG docs][postgres-createconstraint].
51+
For more information on how to manage constraints, see the [$PG docs][postgres-createconstraint].
5552

5653
[postgres-createconstraint]: https://www.postgresql.org/docs/current/ddl-constraints.html

use-timescale/security/read-only-role.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ You can create a read-only user to provide limited access to your database.
3232
CREATE ROLE readaccess;
3333
```
3434

35+
1. Grant usage on the schema to allow access to objects within it:
36+
37+
```sql
38+
GRANT USAGE ON SCHEMA <SCHEMA_NAME> TO readaccess;
39+
```
40+
3541
1. Grant the appropriate permissions for the role, as required. For example, to
3642
grant `SELECT` permissions to a specific table, use:
3743

warp.md

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# WARP.md
2+
3+
This file provides guidance to WARP (warp.dev) when working with code in this repository.
4+
5+
## Repository Overview
6+
7+
This is the Tiger Data documentation repository, containing the source content for https://www.tigerdata.com/docs/. Tiger Data (formerly Timescale) is a modern Postgres data platform for time series, events, analytics, and vector search. The documentation is written in Markdown with custom components and is built separately in a private Gatsby-based repository.
8+
9+
## Development Workflow
10+
11+
### Link Checking
12+
Run link checker locally:
13+
```bash
14+
npx markdown-link-check <file.md> --config mlc_config.json
15+
```
16+
17+
### Linting Documentation
18+
The repository uses Vale for prose linting:
19+
```bash
20+
vale --glob='["_partials/**/*", "_troubleshooting/**/*", "about/**/*", "api/**/*", "getting-started/**/*", "mst/**/*", "navigation/**/*", "self-hosted/**/*", "tutorials/**/*", "use-timescale/**/*", "ai/**/*"]'
21+
```
22+
23+
Vale configuration is in `.vale.ini` and uses Vale + Google style guides.
24+
25+
### Markdown Linting
26+
Custom markdownlint rules are in `.vscode/markdownlint/` and configured via `.markdownlint.json` and `.markdownlint-cli2.jsonc`. These enforce documentation-specific patterns like:
27+
- Proper blank lines around `<Highlight>` blocks
28+
- Correct `<Procedure>` formatting
29+
- Proper frontmatter structure
30+
31+
### Creating Hyperfunction Documentation
32+
Use the template generator script for new two-step aggregate hyperfunction groups:
33+
```bash
34+
npm run template:hyperfunction
35+
```
36+
37+
This interactive script creates the directory structure and template files in `api/_hyperfunctions/`.
38+
39+
### Bulk Editing API Excerpts
40+
Helper scripts in `.helper-scripts/` for bulk frontmatter editing:
41+
```bash
42+
cd .helper-scripts
43+
./extract-excerpts.sh # Extract excerpts to single file
44+
# Edit extracted_excerpts.md
45+
./insert-excerpts.sh # Update original files
46+
```
47+
48+
## Architecture
49+
50+
### Navigation Hierarchy
51+
Navigation structure is governed by `page-index/page-index.js` files throughout the repository. The top-level `page-index/page-index.js` imports and combines all section-level navigation files.
52+
53+
**Page index structure:**
54+
- `href`: URL segment, must match markdown filename (without extension)
55+
- `title`: Page name in left TOC
56+
- `excerpt`: Short description (up to 100 chars) for page cards
57+
- `type`: Optional - `directory`, `placeholder`, `redirect-to-child-page`
58+
- `children`: Array of child pages
59+
- `pageComponents`: Display style for child pages - `['featured-cards']` or `['content-list']`
60+
- `index`: Specify alternative file if not `index.md`
61+
62+
Major documentation sections:
63+
- `getting-started/` - Getting started guides
64+
- `use-timescale/` - Product usage documentation
65+
- `api/` - API references and hyperfunctions
66+
- `tutorials/` - Step-by-step tutorials
67+
- `integrations/` - Integration guides
68+
- `self-hosted/` - Self-hosted deployment docs
69+
- `mst/` - Timescale MST documentation
70+
- `ai/` - AI and vector search features
71+
- `migrate/` - Migration guides
72+
- `about/` - Company and product information
73+
74+
### Content Organization
75+
76+
**Partials (`_partials/`):** Reusable content snippets. Create files starting with underscore. Import into target `.mdx` pages.
77+
78+
**Troubleshooting (`_troubleshooting/`):** Individual troubleshooting entries (not full pages). Each file contains frontmatter with:
79+
- `title`: Entry title
80+
- `section`: Must be `troubleshooting`
81+
- `products` and/or `topics`: Where entry appears (at least one required)
82+
- `errors`: Optional error display with `language` and `message`
83+
- `keywords`: Displayed at bottom, link to related pages
84+
- `tags`: Affect related page calculations (not displayed)
85+
86+
Troubleshooting pages are programmatically assembled during build. If page doesn't exist, add entry in page-index with `type: "placeholder"`.
87+
88+
**API Documentation (`api/`):** Function references include:
89+
- Function name with empty parentheses if takes arguments
90+
- Brief description with warnings
91+
- Usage samples demonstrating argument syntax
92+
- Argument table: `Name`, `Type`, `Default`, `Required`, `Description`
93+
- Return table: `Column`, `Type`, `Description`
94+
95+
Hyperfunctions are organized in `api/_hyperfunctions/` with subdirectories for two-step aggregation pattern functions.
96+
97+
### Custom Components
98+
99+
Available formatting beyond standard Markdown:
100+
- `<Procedure>`: Step-by-step instructions with bold step summaries
101+
- `<Highlight>`: Note/warning/caution blocks (use sparingly)
102+
- Tabs: Multi-option content display
103+
- Multi-tab code blocks
104+
- Tags
105+
106+
See `_partials/_formatting_examples.md` for syntax and examples.
107+
108+
### Variables
109+
Documentation uses variables for product names and UI elements with syntax `$VARIABLE_NAME`. Variables don't work in:
110+
- Page frontmatter
111+
- HTML tables and tabs
112+
113+
Internal links: use `:currentVersion:` instead of `latest` in URLs, no need for full domain `https://www.tigerdata.com/docs`.
114+
115+
## Style Guidelines
116+
117+
Follow [Google Developer Documentation Style Guide](https://developers.google.com/style) with exceptions:
118+
- Do NOT capitalize first word after a colon
119+
- Use code font (backticks) for UI elements instead of semi-bold
120+
121+
### SEO Optimization
122+
Include at top of pages:
123+
- `title`: Up to 60 characters, variation of page title
124+
- `excerpt`: Under 200 characters, variation of intro
125+
126+
Summarize paragraph content in first sentence. Include main keywords in meta tags, page title, first header, and intro.
127+
128+
## Deployment
129+
130+
### Preview Builds
131+
PRs from this repository automatically trigger preview builds (allow 10 minutes). Preview URLs follow pattern: `https://docs-dev.timescale.com/docs-<branch-name-with-hyphens>`
132+
133+
Build occurs in private `timescale/web-documentation` repository using Gatsby.
134+
135+
### Production
136+
Production deployment triggered by changes to appropriate branch.
137+
138+
## Git Workflow
139+
140+
Branch from `latest` for all changes. PRs target `latest` branch.
141+
142+
## Important Notes
143+
144+
- Only commit when explicitly asked by user
145+
- Never include secrets or sensitive information in documentation
146+
- Sign CLA on first PR (automated)
147+
- Large codebases can be excluded from indexing using `.warpindexingignore`
148+

0 commit comments

Comments
 (0)