Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
811205d
initial commit
tdrz Jun 18, 2025
3385c69
bug fixes; cleanup; most pglite tests pass
tdrz Jun 18, 2025
8718b1f
Merge branch 'main' into tdrz/cbDataTransport
tdrz Jun 18, 2025
d2f112c
update submodule
tdrz Jun 18, 2025
6c8775c
Merge branch 'main' into tdrz/cbDataTransport
tdrz Jun 18, 2025
8db8172
Merge branch 'main' into tdrz/cbDataTransport
tdrz Jul 7, 2025
c6c0bb5
Merge branch 'main' into tdrz/cbDataTransport
tdrz Jul 7, 2025
5c41321
cleanup
tdrz Jul 8, 2025
f6c512c
style
tdrz Jul 8, 2025
34eff39
change buffer size expansion strategy
tdrz Jul 15, 2025
da19cf0
fixes #657
tdrz Sep 23, 2025
30a1397
changeset
tdrz Sep 23, 2025
b607f50
update submodule
tdrz Sep 24, 2025
dfb571b
Merge branch 'main' into tdrz/pglite-ccoderefactoring
tdrz Sep 24, 2025
e258375
update submodule
tdrz Sep 24, 2025
61af32a
update submodule
tdrz Sep 24, 2025
b8dba43
remove get_buffer_size and get_buffer_addr"
tdrz Sep 24, 2025
e9047f2
update submodule
tdrz Sep 24, 2025
4598daa
update submodule
tdrz Sep 24, 2025
5494735
update submodule
tdrz Sep 24, 2025
ef11f15
update submodule
tdrz Sep 24, 2025
1c917ad
update submodule
tdrz Sep 24, 2025
6d9a963
update submodule
tdrz Sep 24, 2025
c52ae19
update submodule
tdrz Sep 24, 2025
61d9dba
try again
tdrz Sep 28, 2025
d6a55a1
update submodule
tdrz Sep 29, 2025
415e62c
submodule
tdrz Sep 29, 2025
a962996
submodule
tdrz Sep 29, 2025
c9e7dda
more tests; updated submodules
tdrz Sep 30, 2025
cd69a27
improvements
tdrz Oct 1, 2025
6753533
submodule
tdrz Oct 1, 2025
d4f4cbb
add final result messages
tdrz Oct 2, 2025
5563e0e
update submodule
tdrz Oct 2, 2025
7b07596
renaming; prettify
tdrz Oct 2, 2025
28817bc
test update
tdrz Oct 2, 2025
365b236
run sync after getting types from db
tdrz Oct 2, 2025
261c3f8
add results returned by sync
Oct 3, 2025
2c57d38
style
Oct 3, 2025
2b97c3b
submodule; improved build command
tdrz Oct 3, 2025
b76e71c
submodule
tdrz Oct 3, 2025
7a68dab
postgis tests
tdrz Oct 3, 2025
e260de3
submodule
tdrz Oct 3, 2025
dbae0ff
submodule
tdrz Oct 3, 2025
b2b9d40
submodule
tdrz Oct 4, 2025
dff5727
submodule
tdrz Oct 4, 2025
b7709a3
submodule
tdrz Oct 5, 2025
14d406c
merge tdrz/ccoderefactoring; update submodule
tdrz Oct 5, 2025
aea919f
a more complex postgis test; update submodule;
tdrz Oct 5, 2025
9bb972b
cleanup; update submodule
tdrz Oct 6, 2025
bda4b68
cleanupof additional syncs; update submodule
tdrz Oct 6, 2025
43ea96c
update submodule
tdrz Oct 6, 2025
5515bbf
Merge branch 'tdrz/pglite-ccoderefactoring' into tdrz/frontend-try-po…
tdrz Oct 6, 2025
f95eb51
Revert "update submodule"
tdrz Oct 6, 2025
6bb2061
revert submodule update
tdrz Oct 6, 2025
dba962b
update submodule
tdrz Oct 6, 2025
c5af87d
stylecheck
tdrz Oct 6, 2025
1b953e4
undo
tdrz Oct 6, 2025
0045c96
Merge branch 'tdrz/pglite-ccoderefactoring' into tdrz/frontend-try-po…
tdrz Oct 6, 2025
cddcf79
update submodule
tdrz Oct 6, 2025
31f7b7c
stylecheck
tdrz Oct 6, 2025
28b2ae8
comment out complex1 postgis test
tdrz Oct 6, 2025
f850e9e
style
tdrz Oct 6, 2025
2c91499
merge upstream
tdrz Nov 7, 2025
7546a11
reenable failing tests
tdrz Nov 7, 2025
cbf1654
update submodule
tdrz Nov 7, 2025
deafe66
style
tdrz Nov 7, 2025
93f8d38
update submodule
tdrz Nov 7, 2025
451639b
simple area tests
tdrz Nov 8, 2025
e4e2cef
topology test
tdrz Nov 8, 2025
fbbc50c
test desc
tdrz Nov 8, 2025
2a84e38
add postgis to REPL
tdrz Nov 8, 2025
a2650e1
postgis description in docs extensions
tdrz Nov 9, 2025
de5ecbb
update submodule
tdrz Nov 9, 2025
0621fe6
submodule
tdrz Nov 9, 2025
d9edecf
merge main
tdrz Jan 6, 2026
8f4f902
update submodule
tdrz Jan 6, 2026
ec2201c
moved postgis extension to new npm package
tdrz Jan 6, 2026
548c2c9
moved postgis extension to new npm package 2
tdrz Jan 6, 2026
dcbea30
update submodule
tdrz Jan 6, 2026
2e12816
udpate submodule
tdrz Jan 6, 2026
4a7d4d6
Merge remote-tracking branch 'origin/main' into tdrz/postgis-bak
tdrz Jan 6, 2026
f73d659
update CI
tdrz Jan 6, 2026
a8d8f20
update submodule
tdrz Jan 6, 2026
647c87e
update submodule
tdrz Jan 6, 2026
14bff07
update submodule
tdrz Jan 7, 2026
6162e78
update submodule
tdrz Jan 7, 2026
bd85583
update workflow
tdrz Jan 7, 2026
7d863a6
update submodule
tdrz Jan 7, 2026
47abdb1
update submodule
tdrz Jan 7, 2026
4c27eb6
allow extensions to be loaded in pglite-socket
tdrz Jan 7, 2026
c9b8010
update submodule
tdrz Jan 8, 2026
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
52 changes: 51 additions & 1 deletion .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,15 @@ jobs:
- name: Typecheck pglite
working-directory: ${{ github.workspace }}/packages/pglite
run: pnpm typecheck

- name: Test pglite
working-directory: ${{ github.workspace }}/packages/pglite
run: pnpm test

- name: Test pglite-postgis
working-directory: ${{ github.workspace }}/packages/pglite-postgis
run: pnpm test

- name: Upload PGlite Interim to Github artifacts
id: upload-pglite-interim-build-files
uses: actions/upload-artifact@v4
Expand All @@ -84,6 +89,14 @@ jobs:
path: ./packages/pglite-tools/release/**
retention-days: 60

- name: Upload pglite-postgis build artifacts to Github artifacts
id: upload-pglite-postgis-release-files
uses: actions/upload-artifact@v4
with:
name: pglite-postgis-release-files-node-v20.x
path: ./packages/pglite-postgis/release/**
retention-days: 60

build-and-test-pglite:
name: Build and Test packages/pglite
runs-on: blacksmith-32vcpu-ubuntu-2204
Expand Down Expand Up @@ -118,6 +131,12 @@ jobs:
name: pglite-tools-release-files-node-v20.x
path: ./packages/pglite-tools/release

- name: Download pglite-postgis build artifacts
uses: actions/download-artifact@v4
with:
name: pglite-postgis-release-files-node-v20.x
path: ./packages/pglite-postgis/release

- name: Install dependencies
run: |
pnpm install --frozen-lockfile
Expand Down Expand Up @@ -203,6 +222,12 @@ jobs:
with:
name: pglite-tools-release-files-node-v20.x
path: ./packages/pglite-tools/release/

- name: Download pglite-postgis build artifacts
uses: actions/download-artifact@v4
with:
name: pglite-postgis-release-files-node-v20.x
path: ./packages/pglite-postgis/release/

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand All @@ -224,7 +249,14 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: pglite-tools-dist-node-v${{ matrix.node }}
path: ./packages/pglite-tools/dist/*
path: ./packages/pglite-tools/dist/*

- name: Upload pglite-postgis distribution artifact
id: upload-pglite-postgis-dist
uses: actions/upload-artifact@v4
with:
name: pglite-postgis-dist-node-v${{ matrix.node }}
path: ./packages/pglite-postgis/dist/*

publish-website-with-demos:
name: Publish website with demos
Expand Down Expand Up @@ -253,12 +285,24 @@ jobs:
name: pglite-tools-release-files-node-v20.x
path: ./packages/pglite-tools/release

- name: Download pglite-postgis build artifacts
uses: actions/download-artifact@v4
with:
name: pglite-postgis-release-files-node-v20.x
path: ./packages/pglite-postgis/release/

- name: Download PGlite build artifacts
uses: actions/download-artifact@v4
with:
name: pglite-dist-node-v20.x
path: ./packages/pglite/dist/

- name: Download pglite-postgis dist artifacts
uses: actions/download-artifact@v4
with:
name: pglite-postgis-dist-node-v20.x
path: ./packages/pglite-postgis/dist/

- name: Install dependencies
run: pnpm install --frozen-lockfile

Expand Down Expand Up @@ -366,6 +410,12 @@ jobs:
name: pglite-tools-release-files-node-v20.x
path: ./packages/pglite-tools/release/

- name: Download pglite-postgis build artifacts
uses: actions/download-artifact@v4
with:
name: pglite-postgis-release-files-node-v20.x
path: ./packages/pglite-postgis/release/

- run: pnpm install --frozen-lockfile
- run: pnpm --filter "./packages/**" build
- name: Create Release Pull Request or Publish
Expand Down
14 changes: 14 additions & 0 deletions docs/extensions/extensions.data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,20 @@ const baseExtensions: Extension[] = [
importName: 'pgtap',
size: 239428,
},
{
name: 'postgis',
description: `
PostGIS extends the capabilities of the PostgreSQL relational database by adding
support for storing, indexing, and querying geospatial data.
*No GDAL support atm.
`,
shortDescription: 'Storing, indexing, and querying geospatial data.',
docs: 'postgis.net',
tags: ['postgres extension'],
importPath: '@electric-sql/pglite-postgis',
importName: 'postgis',
size: 7901736,
},
{
name: 'pg_uuidv7',
description: `
Expand Down
1 change: 1 addition & 0 deletions docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"dependencies": {
"@electric-sql/pglite": "workspace:*",
"@electric-sql/pglite-repl": "workspace:*",
"@electric-sql/pglite-postgis": "workspace:*",
"@uiw/codemirror-theme-github": "^4.23.0",
"dedent": "^1.5.3"
}
Expand Down
1 change: 1 addition & 0 deletions docs/repl/allExtensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export { pg_visibility } from '@electric-sql/pglite/contrib/pg_visibility'
export { pg_walinspect } from '@electric-sql/pglite/contrib/pg_walinspect'
export { pgcrypto } from '@electric-sql/pglite/contrib/pgcrypto'
export { pgtap } from '@electric-sql/pglite/pgtap'
export { postgis } from '@electric-sql/pglite-postgis'
export { seg } from '@electric-sql/pglite/contrib/seg'
export { tablefunc } from '@electric-sql/pglite/contrib/tablefunc'
export { tcn } from '@electric-sql/pglite/contrib/tcn'
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@
"ci:publish": "pnpm changeset publish",
"ts:build": "pnpm -r --filter \"./packages/**\" build",
"ts:build:debug": "DEBUG=true pnpm ts:build",
"wasm:copy-postgis": "mkdir -p ./packages/pglite-postgis/release && cp ./postgres-pglite/dist/extensions/postgis/postgis.tar.gz ./packages/pglite-postgis/release",
"wasm:copy-pgdump": "mkdir -p ./packages/pglite-tools/release && cp ./postgres-pglite/dist/bin/pg_dump.* ./packages/pglite-tools/release",
"wasm:copy-pglite": "mkdir -p ./packages/pglite/release/ && cp ./postgres-pglite/dist/bin/pglite.* ./packages/pglite/release/ && cp ./postgres-pglite/dist/extensions/*.tar.gz ./packages/pglite/release/",
"wasm:build": "cd postgres-pglite && ./build-with-docker.sh && cd .. && pnpm wasm:copy-pglite && pnpm wasm:copy-pgdump",
"wasm:build": "cd postgres-pglite && ./build-with-docker.sh && cd .. && pnpm wasm:copy-pglite && pnpm wasm:copy-pgdump && pnpm wasm:copy-postgis",
"wasm:build:debug": "DEBUG=true pnpm wasm:build",
"build:all": "pnpm wasm:build && pnpm ts:build",
"build:all:debug": "DEBUG=true pnpm build:all"
Expand Down
2 changes: 2 additions & 0 deletions packages/pglite-postgis/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
release/*
dist
7 changes: 7 additions & 0 deletions packages/pglite-postgis/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# @electric-sql/pglite-postgis

## 0.0.1

- Initial release
- PostGIS extension extracted from `@electric-sql/pglite`

50 changes: 50 additions & 0 deletions packages/pglite-postgis/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# @electric-sql/pglite-postgis

PostGIS extension for [PGlite](https://pglite.dev).

## Installation

```bash
npm install @electric-sql/pglite-postgis
```

## Usage

```typescript
import { PGlite } from '@electric-sql/pglite'
import { postgis } from '@electric-sql/pglite-postgis'

const pg = new PGlite({
extensions: {
postgis,
},
})

await pg.exec('CREATE EXTENSION IF NOT EXISTS postgis;')

// Create a table with geometry columns
await pg.exec(`
CREATE TABLE cities (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
location GEOMETRY(Point, 4326)
);
`)

// Insert data
await pg.query(`
INSERT INTO cities (name, location)
VALUES ('New York', ST_GeomFromText('POINT(-74.0060 40.7128)', 4326))
`)

// Query with spatial functions
const result = await pg.query(`
SELECT name, ST_AsText(location) as location
FROM cities
`)
```

## License

Apache-2.0

22 changes: 22 additions & 0 deletions packages/pglite-postgis/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import globals from 'globals'
import rootConfig from '../../eslint.config.js'

export default [
...rootConfig,
{
ignores: ['release/**/*', 'dist/**/*'],
},
{
languageOptions: {
globals: {
...globals.browser,
...globals.node,
},
},
rules: {
...rootConfig.rules,
'@typescript-eslint/no-explicit-any': 'off',
},
},
]

66 changes: 66 additions & 0 deletions packages/pglite-postgis/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"name": "@electric-sql/pglite-postgis",
"version": "0.0.1",
"description": "PostGIS extension for PGlite",
"author": "Electric DB Limited",
"homepage": "https://pglite.dev",
"license": "Apache-2.0",
"keywords": [
"postgres",
"sql",
"database",
"wasm",
"pglite",
"postgis",
"gis",
"geospatial"
],
"private": false,
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"import": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
},
"require": {
"types": "./dist/index.d.cts",
"default": "./dist/index.cjs"
}
}
},
"files": [
"dist"
],
"repository": {
"type": "git",
"url": "git+https://github.com/electric-sql/pglite.git",
"directory": "packages/pglite-postgis"
},
"scripts": {
"build": "tsup",
"check:exports": "attw . --pack --profile node16",
"lint": "eslint ./src ./tests --report-unused-disable-directives --max-warnings 0",
"format": "prettier --write ./src ./tests",
"typecheck": "tsc",
"stylecheck": "pnpm lint && prettier --check ./src ./tests",
"test": "vitest",
"prepublishOnly": "pnpm check:exports"
},
"devDependencies": {
"@arethetypeswrong/cli": "^0.18.1",
"@electric-sql/pglite": "workspace:*",
"@types/node": "^20.16.11",
"vitest": "^2.1.2"
},
"peerDependencies": {
"@electric-sql/pglite": "workspace:0.3.14"
}
}

17 changes: 17 additions & 0 deletions packages/pglite-postgis/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type {
Extension,
ExtensionSetupResult,
PGliteInterface,
} from '@electric-sql/pglite'

const setup = async (_pg: PGliteInterface, emscriptenOpts: any) => {
return {
emscriptenOpts,
bundlePath: new URL('../release/postgis.tar.gz', import.meta.url),
} satisfies ExtensionSetupResult
}

export const postgis = {
name: 'postgis',
setup,
} satisfies Extension
Loading