Skip to content

Query Engines

Marcus Henriksson edited this page Apr 2, 2026 · 1 revision

Query Engines

Queryeer supports multiple query engines through a plugin architecture. Each engine connects to a different type of data source and may expose its own catalog metadata, completion items, and output actions.


Available Engines

Engine Type Details
JDBC Relational databases Any JDBC-compatible database. Dialect-specific support for SQL Server, Oracle, and Presto.
Payloadbuilder Multi-source query engine Built-in engine with catalogs for Elasticsearch, local filesystem, and HTTP endpoints.

How Engines Are Selected

Each query file is associated with a query engine and a connection/catalog. You can switch the engine for the current file from the toolbar selector at the top of the editor. The available engines are those discovered from the plugins/ directory plus any built-in engines.


Extension Architecture

Query engines are implemented as plugins via the IQueryEngine interface from queryeer-api. The interface defines:

  • Execution — run a query string and return results as a stream of rows
  • Cancellation — signal the engine to stop an in-progress query
  • Metadata — expose table/column metadata for code completion
  • Configuration — provide a settings component shown in the Options dialog
  • Actions — register toolbar or context-menu actions specific to the engine

To add a new engine, implement IQueryEngine, package it as a JAR with its dependencies, and place it in the plugins/ folder. Queryeer discovers and loads it automatically on the next startup.


Shared Concepts

Connections and Catalogs

Each engine typically manages one or more named connections or catalogs. A connection holds the configuration needed to reach a data source (host, credentials, etc.). Multiple connections to the same engine type can be configured simultaneously.

Metadata & Completion Integration

When a connection is active, the engine's metadata (tables, columns, functions) is made available to the editor's code completion engine. Metadata may be loaded eagerly on connection or lazily on first use, depending on the engine.

Output Routing

Results from any engine flow through the same output pipeline. The active output component (Table, Text, Query Plan, Graph) receives the result rows regardless of which engine produced them. See Output Components.

Error Reporting

Engines report errors by throwing a QueryEngineException. The error message and optional stack trace are displayed in the output panel and written to the Logs dialog.

Clone this wiki locally