Skip to content

Commit

Permalink
Merge pull request #819 from Jo0/pg17-support
Browse files Browse the repository at this point in the history
WIP: Pg17
  • Loading branch information
philkra authored Oct 23, 2024
2 parents beac6d5 + cdcc660 commit e81df26
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 36 deletions.
17 changes: 13 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
fail-fast: false
max-parallel: 12
matrix:
pgversion: [13, 14, 15, 16]
pgversion: [14, 15, 16, 17]
container:
- os: rockylinux
version: "9"
Expand Down Expand Up @@ -69,7 +69,6 @@ jobs:
version: "22.04"
image: ubuntu-22.04-amd64
schedule: ${{ inputs.all-platforms || ( github.event_name == 'schedule' && github.event.schedule == '0 6 * * 1-4' ) }}

exclude:
- container:
skip: true
Expand All @@ -80,17 +79,27 @@ jobs:
os: centos
version: "7"
pgversion: 16
include:
# TimescaleDB as of 2.12.0 no longer supports PostgreSQL 12.
# To allow us to do run CI against PostgreSQL 12, we therefore explicitly
# remove all CI's, except if we are run against the latest supported TimescaleDB
# version for PostgreSQL 12, which is 2.11.2
include:
- pgversion: 12
container:
image: debian-11-amd64
os: debian
version: "11"
tsdb_commit: 2.11.2
# TimescaleDB as of 2.16.0 no longer supports PostgreSQL 13.
# To allow us to do run CI against PostgreSQL 13, we therefore explicitly
# remove all CI's, except if we are run against the latest supported TimescaleDB
# version for PostgreSQL 13, which is 2.15.3
- pgversion: 13
container:
image: debian-11-amd64
os: debian
version: "11"
tsdb_commit: 2.15.3
env:
# TODO Why? Cargo default is to pass `-C incremental` to rustc; why don't we want that?
# https://doc.rust-lang.org/rustc/codegen-options/index.html#incremental
Expand Down Expand Up @@ -124,7 +133,7 @@ jobs:

- name: Build and install TimescaleDB
if: ${{ (github.event_name == 'schedule' && github.event.schedule == '0 8 * * 1-4') || inputs.tsdb-commit != '' }}
run: ./tools/install-timescaledb '${{ matrix.pgversion }}' '${{ matrix.tsdb_commit || inputs.tsdb-repo || 'https://github.com/timescale/timescaledb.git' }}' '${{ inputs.tsdb-commit == '' && 'main' || matrix.tsdb_commit || inputs.tsdb-commit }}'
run: ./tools/install-timescaledb '${{ matrix.pgversion }}' '${{ inputs.tsdb-repo || 'https://github.com/timescale/timescaledb.git' }}' '${{ inputs.tsdb-commit == '' && 'main' || matrix.tsdb_commit || inputs.tsdb-commit }}'

# TODO After the container image contains a primed target dir, is this still worth it?
# Only possible advantage is this one is per-pg-version but what's the impact?
Expand Down
34 changes: 19 additions & 15 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
[![CI](https://github.com/timescale/timescaledb-toolkit/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/timescale/timescaledb-toolkit/actions/workflows/ci.yml)


# TimescaleDB Toolkit #
# TimescaleDB Toolkit

This repository is the home of the TimescaleDB Toolkit team. Our mission is to
ease all things analytics when using TimescaleDB, with a particular focus on
Expand All @@ -14,16 +13,15 @@ Documentation for this version of the TimescaleDB Toolkit extension can be found
in this repository at [`docs`](https://github.com/timescale/timescaledb-toolkit/tree/main/docs).
The release history can be found on this repo's [GitHub releases](https://github.com/timescale/timescaledb-toolkit/releases).

## 🖥 Try It Out

## 🖥 Try It Out ##

The extension comes pre-installed on all [Timescale Cloud](https://www.timescale.com/products#timescale-cloud) instances and also on our full-featured [`timescale/timescaledb-ha` docker image](https://hub.docker.com/r/timescale/timescaledb-ha).
The extension comes pre-installed on all [Timescale Cloud](https://www.timescale.com/products#timescale-cloud) instances and also on our full-featured [`timescale/timescaledb-ha` docker image](https://hub.docker.com/r/timescale/timescaledb-ha).

If DEB and RPM packages are a better fit for your situation, refer to the [Install Toolkit on self-hosted TimescaleDB](https://docs.timescale.com/self-hosted/latest/tooling/install-toolkit/#install-toolkit-on-self-hosted-timescaledb) how-to guide for further instructions on installing the extension via your package manager.

All versions of the extension contain experimental features in the `toolkit_experimental` schema. See [our docs section on experimental features](/docs/README.md#tag-notes) for more details.

## 💿 Installing From Source ##
## 💿 Installing From Source

### Supported platforms

Expand All @@ -34,24 +32,28 @@ The engineering team regularly tests the extension on the following platforms:
- x86_64-apple-darwin (MacOS 12) (tested frequently on eng workstation)
- aarch64-apple-darwin (MacOS 12) (tested frequently on eng workstation)

As for other platforms: patches welcome!
As for other platforms: patches welcome!

### 🔧 Tools Setup ###
### 🔧 Tools Setup

Building the extension requires valid [rust](https://www.rust-lang.org/) (we build and test on 1.65), [rustfmt](https://github.com/rust-lang/rustfmt), and clang installs, along with the postgres headers for whichever version of postgres you are running, and pgrx.
We recommend installing rust using the [official instructions](https://www.rust-lang.org/tools/install):

```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

and build tools, the postgres headers, in the preferred manner for your system. You may also need to install OpenSSl.
For Ubuntu you can follow the [postgres install instructions](https://www.postgresql.org/download/linux/ubuntu/) then run

```bash
sudo apt-get install make gcc pkg-config clang postgresql-server-dev-14 libssl-dev
```

Next you need [cargo-pgrx](https://github.com/tcdi/pgrx), which can be installed with

```bash
cargo install --version '=0.10.2' --force cargo-pgrx
cargo install --version '=0.12.6' --force cargo-pgrx
```

You must reinstall cargo-pgrx whenever you update your Rust compiler, since cargo-pgrx needs to be built with the same compiler as Toolkit.
Expand All @@ -62,28 +64,31 @@ Finally, setup the pgrx development environment with
cargo pgrx init --pg14 pg_config
```


Installing from source is also available on macOS and requires the same set of prerequisites and set up commands listed above.

### 💾 Building and Installing the extension ###
### 💾 Building and Installing the extension

Download or clone this repository, and switch to the `extension` subdirectory, e.g.

```bash
git clone https://github.com/timescale/timescaledb-toolkit && \
cd timescaledb-toolkit/extension
```

Then run

```
cargo pgrx install --release && \
cargo run --manifest-path ../tools/post-install/Cargo.toml -- pg_config
```

To initialize the extension after installation, enter the following into `psql`:

```
CREATE EXTENSION timescaledb_toolkit;
```

## ✏️ Get Involved ##
## ✏️ Get Involved

The TimescaleDB Toolkit project is still in the initial planning stage as we
decide our priorities and what to implement first. As such, now is a great time
Expand All @@ -92,17 +97,16 @@ to help shape the project's direction! Have a look at the
and feel free to comment on the features, expand the list, or
hop on the [Discussions forum](https://github.com/timescale/timescaledb-toolkit/discussions) for more in-depth discussions.

### 🔨 Testing ###
### 🔨 Testing

See above for prerequisites and installation instructions.

You can run tests against a postgres version `pg12`, `pg13`, `pg14`, `pg15` or `pg16` using
You can run tests against a postgres version `pg12`, `pg13`, `pg14`, `pg15`, `pg16` or `pg17` using

```
cargo pgrx test ${postgres_version}
```


## 🐯 About TimescaleDB

**[TimescaleDB](https://github.com/timescale/timescaledb)** is a
Expand Down
10 changes: 6 additions & 4 deletions bors.toml
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
status = [
"Clippy/rustfmt Test",
"Test Postgres (12, debian, 11, debian-11-amd64)",
"Test Postgres (12, rockylinux, 9, rockylinux-9-x86_64)",
"Test Postgres (12, centos, 7, centos-7-x86_64)",
"Test Postgres (13, debian, 11, debian-11-amd64)",
"Test Postgres (13, rockylinux, 9, rockylinux-9-x86_64)",
"Test Postgres (13, centos, 7, centos-7-x86_64)",
"Test Postgres (14, debian, 11, debian-11-amd64)",
"Test Postgres (14, rockylinux, 9, rockylinux-9-x86_64)",
"Test Postgres (14, centos, 7, centos-7-x86_64)",
"Test Postgres (15, debian, 11, debian-11-amd64)",
"Test Postgres (15, rockylinux, 9, rockylinux-9-x86_64)",
"Test Postgres (15, centos, 7, centos-7-x86_64)",
"Test Postgres (16, debian, 11, debian-11-amd64)",
"Test Postgres (16, rockylinux, 9, rockylinux-9-x86_64)",
"Test Postgres (16, centos, 7, centos-7-x86_64)",
"Test Postgres (17, debian, 11, debian-11-amd64)",
"Test Postgres (17, rockylinux, 9, rockylinux-9-x86_64)",
"Test Postgres (17, centos, 7, centos-7-x86_64)",
]
delete-merged-branches = true
timeout_sec = 3600 # 60 min
6 changes: 3 additions & 3 deletions docker/ci/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ if $privileged; then
centos | rockylinux)
case $OS_VERSION in
7)
export PG_VERSIONS="13 14 15"
export TSDB_PG_VERSIONS="13 14 15"
export PG_VERSIONS="13 14 15 16 17"
export TSDB_PG_VERSIONS="13 14 15 16 17"
# Postgresql packages require both
# - llvm-toolset-7-clang from centos-release-scl-rh
# - llvm5.0-devel from epel-release
Expand Down Expand Up @@ -151,7 +151,7 @@ EOF
debian | ubuntu)
# TimescaleDB does not have packages for Debian 12
if [ $OS_VERSION -ge 12 ]; then
export TSDB_PG_VERSIONS="13 14 15"
export TSDB_PG_VERSIONS="13 14 15 16 17"
fi

# Image comes in with no package lists so we have to start with this.
Expand Down
11 changes: 6 additions & 5 deletions extension/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,21 @@ edition = "2021"
crate-type = ["cdylib"]

[features]
default = ["pg15"]
default = ["pg16"]
pg12 = ["pgrx/pg12", "pgrx-tests/pg12"]
pg13 = ["pgrx/pg13", "pgrx-tests/pg13"]
pg14 = ["pgrx/pg14", "pgrx-tests/pg14"]
pg15 = ["pgrx/pg15", "pgrx-tests/pg15"]
pg16 = ["pgrx/pg16", "pgrx-tests/pg16"]
pg17 = ["pgrx/pg17", "pgrx-tests/pg17"]
pg_test = ["approx"]

[dependencies]
# Keep synchronized with `cargo install --version N.N.N cargo-pgrx` in Readme.md and docker/ci/Dockerfile
# Also `pgrx-tests` down below in `dev-dependencies`.
pgrx = "=0.10.2"
pgrx-macros = "=0.10.2"
pgrx-sql-entity-graph = "=0.10.2"
pgrx = "=0.12.6"
pgrx-macros = "=0.12.6"
pgrx-sql-entity-graph = "=0.12.6"
encodings = {path="../crates/encodings"}
flat_serialize = {path="../crates/flat_serialize/flat_serialize"}
flat_serialize_macro = {path="../crates/flat_serialize/flat_serialize_macro"}
Expand Down Expand Up @@ -57,5 +58,5 @@ spfunc = "0.1.0"
statrs = "0.15.0"

[dev-dependencies]
pgrx-tests = "=0.10.2"
pgrx-tests = "=0.12.6"
approx = "0.4.0"
2 changes: 1 addition & 1 deletion tools/build
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ usage() {
}

require_pg_version() {
[ -n "$pg_version" ] || die 'specify one of -pg12 | -pg13 | -pg14 | -pg15 | -pg16'
[ -n "$pg_version" ] || die 'specify one of -pg12 | -pg13 | -pg14 | -pg15 | -pg16 | -pg17'
}

find_pg_config() {
Expand Down
8 changes: 4 additions & 4 deletions tools/dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
# All our automation scripts read this, so at least we're not duplicating this
# information across all those.

PG_VERSIONS='12 13 14 15 16'
PG_VERSIONS='12 13 14 15 16 17'
# TODO: extend this with 16 this once TimescaleDB supports PostgreSQL 16: issue #5752
TSDB_PG_VERSIONS='12 13 14 15'
TSDB_PG_VERSIONS='12 13 14 15 16 17'

CARGO_EDIT=0.11.2

# Keep synchronized with extension/Cargo.toml and `cargo install --version N.N.N cargo-pgrx` in Readme.md .
PGRX_VERSION=0.10.2
PGRX_VERSION=0.12.6

RUST_TOOLCHAIN=1.70.0
RUST_TOOLCHAIN=1.76.0
RUST_PROFILE=minimal
RUST_COMPONENTS=clippy,rustfmt

Expand Down

0 comments on commit e81df26

Please sign in to comment.