How google/googlesql works
GoogleSQL is a reusable SQL language, parser, and analyzer—not a database or query engine. The main workflow is SQL input → parsing → semantic analysis against an engine-provided catalog → a Resolved AST for the consuming engine. The repository also includes an optional reference execution path and an interactive query tool, plus Java APIs backed by a local RPC service. The graph emphasizes these documented product stages and sampled modules; unsampled subsystem links are omitted where their wiring is not established.
Main entry points: execute_query_tool.cc Query tool · analyzer_impl.cc Analysis coordinator · resolved_node.h Resolved AST · parser.cc SQL parser
Components 19
SQL language
- SQL parser
googlesql/parser/parser.cc - Parse tree
googlesql/parser/parse_tree.cc - SQL unparser
googlesql/parser/unparser.cc
Semantic analysis
- Analyzer API
googlesql/public/analyzer.cc - Analysis coordinator
googlesql/analyzer/analyzer_impl.cc - Statement resolver
googlesql/analyzer/resolver.cc - Query resolution
googlesql/analyzer/resolver_query.cc - Graph queries
googlesql/analyzer/graph_query_resolver.cc - Query context
googlesql/analyzer/query_resolver_helper.h - Engine catalog
googlesql/public/catalog.h - Resolved AST
googlesql/resolved_ast/resolved_node.h - AST rewrites
googlesql/analyzer/rewriters
Reference execution
- Reference execution
googlesql/reference_impl/algebrizer.cc
Tools and APIs
- Query tool
googlesql/tools/execute_query/execute_query_tool.cc - Web interface
googlesql/tools/execute_query/execute_query_web_handler.cc - Local RPC service
googlesql/local_service/local_service.cc - Java client
java/com/google/googlesql/Client.java - Prepared query
java/com/google/googlesql/PreparedQuery.java
Other components
- SQL consumer
Connections 21
- SQL consumer → SQL parser: submits SQL
README.md - SQL parser → Parse tree: builds tree
README.md - Analyzer API → Analysis coordinator: delegates analysis
- Analysis coordinator → Statement resolver: resolves statements
- Statement resolver → Query resolution: resolves queries
- Query resolution → Query context: uses context
googlesql/analyzer/query_resolver_helper.h - Query resolution → Graph queries: resolves graph SQL
googlesql/analyzer/graph_query_resolver.cc - Analysis coordinator → Engine catalog: looks up names
- Analysis coordinator → Resolved AST: produces AST
README.md - Resolved AST → AST rewrites: rewrites AST
googlesql/analyzer/rewriters/rewrite_subpipeline.cc - Resolved AST → SQL unparser: renders SQL
- Resolved AST → Reference execution: feeds execution
README.md - SQL consumer → Query tool: runs query
README.md - Query tool → SQL parser: parses query
googlesql/tools/execute_query/execute_query_tool.cc - Query tool → Analyzer API: analyzes query
googlesql/tools/execute_query/execute_query_tool.cc - Query tool → Reference execution: runs query
README.md - Web interface → Query tool: dispatches query
googlesql/tools/execute_query/execute_query_web_handler.cc - Prepared query → Java client: calls service
java/com/google/googlesql/PreparedQuery.java - Java client → Local RPC service: uses local RPC
README.md - Local RPC service → SQL parser: parses requests
googlesql/local_service/local_service.cc - Local RPC service → Analyzer API: analyzes requests
googlesql/local_service/local_service.cc