Skip to content

Conversation

@whummer
Copy link
Member

@whummer whummer commented Jan 27, 2026

LocalStack extension for ParadeDB (PostgreSQL-based search and analytics).

🤖 Note: The code was predominantly generated via Claude Code (with some small manual corrections), using the following prompt:

Create a LocalStack Extension for ParadeDB (using the paradedb/paradedb Docker image) to develop apps locally. Follow the existing layout of the TypeDB extension in this repo - lots of the code and structure for the ParadeDB extension can be used and copied from there.

Features:

  • Runs paradedb/paradedb Docker container
  • Exposes PostgreSQL port 5432 for direct connections
  • Configurable via PARADEDB_POSTGRES_USER/PASSWORD/DB env vars
  • Integration tests for basic SQL and pg_search BM25 functionality
  • CI workflow for automated testing

/cc @ankitml @philippemnoel

whummer and others added 2 commits January 27, 2026 10:18
LocalStack extension for ParadeDB (PostgreSQL-based search and analytics).
Features:
- Runs paradedb/paradedb Docker container
- Exposes PostgreSQL port 5432 for direct connections
- Configurable via PARADEDB_POSTGRES_USER/PASSWORD/DB env vars
- Integration tests for basic SQL and pg_search BM25 functionality
- CI workflow for automated testing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update tests to use the new ParadeDB v2 API:
- Use CREATE INDEX ... USING bm25 instead of CALL paradedb.create_bm25()
- Use ||| operator for disjunction (OR) search
- Use &&& operator for conjunction (AND) search
- Use pdb.score() for relevance scoring
- Use DROP INDEX instead of paradedb.drop_bm25()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
logging.basicConfig()


class DatabaseDockerContainerExtension(Extension):
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: This class is very similar to the existing ProxiedDockerContainerExtension - aiming to extract that into a reusable util package in a separate PR shortly. 👍

@whummer whummer marked this pull request as ready for review January 27, 2026 12:41
authors = [
{ name = "LocalStack team"}
]
keywords = ["LocalStack", "ParadeDB", "PostgreSQL"]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd add "Search" and "Analytics"


Once the extension is running, you can connect to ParadeDB using any PostgreSQL client with the following default credentials:

- **Host**: `localhost` (or the Docker host if running in a container)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd use different values than postgres here. See: https://docs.paradedb.com/documentation/getting-started/install

Comment on lines +42 to +44
- **pg_search**: Full-text search with BM25 ranking
- **pg_analytics**: DuckDB-powered analytics for OLAP workloads
- **pg_lakehouse**: Query data lakes (S3, Delta Lake, Iceberg) directly

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is incorect. AI? We only have one extension, pg_search, which does both search and analytics workloads

);

-- Search with BM25 scoring
SELECT * FROM products.search('description:electronics');

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is wrong

);

-- Create a BM25 search index
CALL paradedb.create_bm25(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is super wrong too. We have agents skills: https://docs.paradedb.com/welcome/ai-agents

I'd recommend importing this to your Claude and trying again.

Comment on lines +71 to +73
* `PARADEDB_POSTGRES_USER`: PostgreSQL username (default: `postgres`)
* `PARADEDB_POSTGRES_PASSWORD`: PostgreSQL password (default: `postgres`)
* `PARADEDB_POSTGRES_DB`: Default database name (default: `postgres`)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also wrong

Copy link

@philippemnoel philippemnoel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overall looks good to me. Relatively high-level, but it seems reasonable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants