Graph Management Query Syntax
ADD GRAPH <name> ON CONNECTOR <connector>
[GRAPH <remote_name>]
[MAPPING <mapping_name>]
[READ ONLY];
CREATE GRAPH <name>
[{ <gql_schema_body> } | ANY]
ON CONNECTOR <connector>;
UNADD GRAPH [IF EXISTS] <name>;
DROP GRAPH [IF EXISTS] <name>;
ALTER GRAPH <name> SET READ ONLY;
ALTER GRAPH <name> SET READ WRITE;
ALTER GRAPH <name> SET CONNECTOR <connector>;
ALTER GRAPH <name> SET GRAPH <remote_name>;
ALTER GRAPH <name> SET MAPPING <mapping_name>;
ALTER GRAPH <name> REMOVE MAPPING;-- Single graph
USE <graph> <query>;
-- Composite
USE <graph1> <query>
UNION | UNION ALL | INTERSECT | INTERSECT ALL | EXCEPT | EXCEPT ALL
USE <graph2> <query>;Configuration Reference
General
| Variable | Default | Description |
|---|---|---|
CONNECTOR_TYPE | memgraph | Connector to use (see table below) |
CONNECTION_TYPE | (none) | Alias for CONNECTOR_TYPE |
BOLT_LISTEN_ADDR | 127.0.0.1:7688 | Address the Bolt server binds to |
Logging
MemGQL writes log lines to the console (stdout/stderr) and, in parallel, to a log file. Both destinations are configured via CLI flags on the Bolt server binary.
CLI Flags
| Flag | Default | Description |
|---|---|---|
--log-level=<LEVEL> | info | Console logging verbosity (see levels below) |
--log-file=<PATH> | bolt_server.log | File to mirror all log output to (always written, regardless of --log-level) |
Log Levels
| Level | Console output |
|---|---|
info | Full logging: connections, incoming queries, transpiled output, results, state changes |
info-queries-only | Only the incoming GQL query and its transpiled output (Cypher / SQL) |
info is the most verbose level today. There is no debug or trace. The
RUST_LOG environment variable is not consulted.
The log file always receives every log line — including queries, errors, and
state changes — independent of the console --log-level. To silence the
console while keeping a full file record, use --log-level=info-queries-only
and tail the log file separately.
Enterprise License
| Variable | Default | Description |
|---|---|---|
MEMGQL_ENTERPRISE_LICENSE | (none) | License key (mglk-...) |
MEMGQL_ORGANIZATION_NAME | (none) | Organization name to verify against license |
When set, the license is decoded and verified against the organization name at startup. A valid enterprise license removes connector and connection limits. Without a license, community mode allows up to 2 connectors and 2 simultaneous connections.
Connector Types
| Connector | Translation | Backend |
|---|---|---|
memgraph | None (passthrough) | Memgraph |
memgraph-gql | GQL -> Cypher | Memgraph |
neo4j | None (passthrough) | Neo4j |
neo4j-gql | GQL -> Cypher | Neo4j |
postgres | GQL -> SQL | PostgreSQL |
mysql | GQL -> SQL | MySQL 8.0+ |
duckdb | GQL -> SQL | DuckDB (embedded) |
clickhouse | GQL -> SQL | ClickHouse |
iceberg | GQL -> SQL | Iceberg via Trino |
pinot | GQL -> SQL | Apache Pinot |
multi | Per-connector | Multiple backends simultaneously |
Memgraph (memgraph, memgraph-gql)
| Variable | Default | Description |
|---|---|---|
MEMGRAPH_URI | 127.0.0.1:7687 | Connection URI |
MEMGRAPH_USER | user | Username |
MEMGRAPH_PASS | pass | Password |
MEMGRAPH_DB | memgraph | Database name |
Neo4j (neo4j, neo4j-gql)
| Variable | Default | Description |
|---|---|---|
NEO4J_URI | 127.0.0.1:7687 | Connection URI |
NEO4J_USER | neo4j | Username |
NEO4J_PASS | password | Password |
NEO4J_DB | neo4j | Database name |
PostgreSQL (postgres)
| Variable | Default | Description |
|---|---|---|
POSTGRES_URL | host=localhost user=postgres password=postgres dbname=postgres | libpq connection string |
MAPPING_FILE | (none, uses built-in default) | Path to JSON mapping file |
MySQL (mysql)
| Variable | Default | Description |
|---|---|---|
MYSQL_URL | mysql://root:mysql@localhost:3306/test | MySQL connection URL (mysql://user:pass@host:port/database) |
MAPPING_FILE | (none, uses built-in default) | Path to JSON mapping file |
DuckDB (duckdb)
| Variable | Default | Description |
|---|---|---|
DUCKDB_PATH | :memory: | Path to DuckDB file |
MAPPING_FILE | (none, uses built-in default) | Path to JSON mapping file |
ClickHouse (clickhouse)
| Variable | Default | Description |
|---|---|---|
CLICKHOUSE_URL | http://localhost:8123 | ClickHouse HTTP API URL |
CLICKHOUSE_USER | default | ClickHouse user |
CLICKHOUSE_PASS | (none) | ClickHouse password |
CLICKHOUSE_DB | default | ClickHouse database |
MAPPING_FILE | (none, uses built-in default) | Path to JSON mapping file |
Apache Pinot (pinot)
| Variable | Default | Description |
|---|---|---|
PINOT_URL | http://localhost:8099 | Pinot broker base URL or full SQL endpoint |
PINOT_QUERY_OPTIONS | useMultistageEngine=true | Query options sent with broker SQL requests |
MAPPING_FILE | (none, uses built-in default) | Path to JSON mapping file |
Iceberg (iceberg)
| Variable | Default | Description |
|---|---|---|
TRINO_URL | http://localhost:8080 | Trino REST API URL |
TRINO_USER | trino | Trino user |
TRINO_CATALOG | iceberg | Trino catalog |
TRINO_SCHEMA | default | Trino schema |
MAPPING_FILE | (none, uses built-in default) | Path to JSON mapping file |