Documentation Index
Fetch the complete documentation index at: https://mintlify.com/questdb/questdb/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Required Software
- Java 17 64-bit (strict requirement — no earlier, no later)
- Maven 3 (latest version recommended)
- Git (to clone the repository)
Optional for C/C++ Development
- C compiler (GCC, Clang, or MSVC)
- CMake 3.15+
- CLion IDE (recommended for C/C++ development)
Platform Support
- x86-64: Windows, Linux, FreeBSD, macOS
- ARM64: Linux, macOS (Apple Silicon)
Cloning the Repository
Setting up Java
Configuring JAVA_HOME
JAVA_HOME is required by Maven. Set it to point to Java 17:
C:\Users\me\dev\jdk-17), not the bin subdirectory.
Verifying Installation
Building the Database
Quick Build (Java Only)
Build a JAR without web console or tests (fastest option):core/target/questdb-<version>-SNAPSHOT.jar
Build with Web Console
To include the web console:core/src/main/resources/io/questdb/site/public.zip.
Build with Native Binaries
To build executable binaries (includes web console):Build Output
- JAR file:
core/target/questdb-<version>-SNAPSHOT.jar - Web console: Embedded in the JAR when using
-P build-web-console - Native libraries:
core/src/main/resources/io/questdb/bin/
Running QuestDB
After building with the web console, run QuestDB:Using the JAR Directly
If you built with-P build-binaries, you can also run:
Running Tests
QuestDB has over 4,000 tests that complete within 2-6 minutes (depending on your system).Run All Tests
mvn test commands in parallel — each invocation triggers a full build and they interfere with each other. Run test commands sequentially.
Run Specific Tests
Building Native C/C++ Libraries
QuestDB uses C/C++ for performance-critical operations (SIMD vectorization, memory management, platform-specific optimizations).Prerequisites
- C compiler (GCC, Clang, or MSVC)
- CMake 3.15 or later
JAVA_HOMEenvironment variable set
Build Commands
Output Location
Compiled binaries are copied to:Platform-Specific Binaries
Compiled binaries (for C libraries and Windows service wrapper) are committed to git to make the development process Java-centric and simpler. You only need to recompile native code if you’re modifying C/C++ sources.IDE Setup for C/C++ Development
We recommend CLion for C/C++ development. CLion understands CMake files and makes compilation easier. For more details, see core/CMAKE_README.md.Developing with the Java ILP Client
The QuestDB server tests use the Java ILP client for integration testing. By default, the client is resolved from Maven Central.Setup for Local Client Development
If you need to modify both the client and server simultaneously:- Initialize the git submodule:
- Build with the
local-clientprofile:
java-questdb-client/ first, then uses the locally built client (version 1.0.1-SNAPSHOT) for server tests.
IntelliJ IDEA Setup
To work on both client and server in IntelliJ:- Initialize the submodule (see above)
- Open File > Project Structure > Modules
- Click + (Add) > Import Module
- Select
java-questdb-client/core/pom.xmland click OK - Open the Maven tool window
- Expand Profiles and check
local-client - Click Reload All Maven Projects (circular arrows icon)
Workflow Tips
- Make changes to both
java-questdb-client/andcore/as needed - Run tests with
-P local-clientto verify everything works together - Commit changes to each repository separately
- Push client submodule changes to java-questdb-client repository
Frontend Development
The web console is located in a separate repository. Follow the instructions in that repository for frontend development. The frontend dev environment requires a QuestDB instance running in the background:- Run a development version from this repository (see Running QuestDB)
- Or run a published version with Docker (see README)
Debugging in IntelliJ IDEA
We recommend using IntelliJ IDEA for development and debugging. The repository includes run configurations in the.idea directory that you can use to start QuestDB with a debugger attached.
Run Configurations
- ServerMain — Starts the database with debugger
- Various test configurations — Run specific test suites with debugging
Build Profiles
Maven profiles control what gets built:| Profile | Description |
|---|---|
| (none) | Java-only build, no web console |
build-web-console | Includes web console in JAR |
build-binaries | Builds executable binaries |
local-client | Uses local Java ILP client from submodule |
maven-central-release | For releasing to Maven Central (maintainers only) |
Troubleshooting
Web Console Returns 404
If the server works but the UI returns 404 on localhost:9000, the web console artifacts are missing. Rebuild with:Tests Fail on Windows
Antivirus software may interfere with tests. Common symptoms:- Tests pass on CI but fail locally
- HTTP chunk size assertion failures
- Test timeouts
- JVM crashes
- Disable “application protocol content filtering”
- Add
127.0.0.1to “Excluded IP addresses” in advanced settings
Maven Build Fails
- Verify
JAVA_HOMEpoints to Java 17 (not 11, not 18) - Ensure
JAVA_HOMEpoints to the root directory, notbin/ - Check Maven version:
mvn --version
Native Library Compilation Fails
- Verify CMake version:
cmake --version(needs 3.15+) - Ensure C compiler is in PATH
- Check
JAVA_HOMEis set (required for JNI headers)