Repository navigation
M2: Connect and introspect #3
Copy link
Copy link
Open
Labels
area/catalogThe catalog, pg_catalog, information_schema and the statistics views.The catalog, pg_catalog, information_schema and the statistics views.area/sessionSessions, settings, pooling and the server runtime.Sessions, settings, pooling and the server runtime.area/sqlThe grammar, the lexer, the analyzer and the rewriter.The grammar, the lexer, the analyzer and the rewriter.area/typesTypes, type I/O, casts and collations.Types, type I/O, casts and collations.area/wireThe protocol, TLS, authentication and COPY.The protocol, TLS, authentication and COPY.gate/G1G1: 7 clients connect and show the schema (L1, L2).G1: 7 clients connect and show the schema (L1, L2).kind/milestoneA milestone from spec/23-milestones.md.A milestone from spec/23-milestones.md.priority/p0Stop other work. A wrong answer, a data loss, or a broken gate.Stop other work. A wrong answer, a data loss, or a broken gate.status/gateHas a numeric exit criterion that decides if the milestone is done.Has a numeric exit criterion that decides if the milestone is done.
Milestone
Description
Activity
Metadata
Metadata
Assignees
Labels
area/catalogThe catalog, pg_catalog, information_schema and the statistics views.The catalog, pg_catalog, information_schema and the statistics views.area/sessionSessions, settings, pooling and the server runtime.Sessions, settings, pooling and the server runtime.area/sqlThe grammar, the lexer, the analyzer and the rewriter.The grammar, the lexer, the analyzer and the rewriter.area/typesTypes, type I/O, casts and collations.Types, type I/O, casts and collations.area/wireThe protocol, TLS, authentication and COPY.The protocol, TLS, authentication and COPY.gate/G1G1: 7 clients connect and show the schema (L1, L2).G1: 7 clients connect and show the schema (L1, L2).kind/milestoneA milestone from spec/23-milestones.md.A milestone from spec/23-milestones.md.priority/p0Stop other work. A wrong answer, a data loss, or a broken gate.Stop other work. A wrong answer, a data loss, or a broken gate.status/gateHas a numeric exit criterion that decides if the milestone is done.Has a numeric exit criterion that decides if the milestone is done.
The third milestone of rupg, specified in
spec/23-milestones.mdsection 23.5. M2 lets a real client connect, authenticate, read the catalog and see the schema. It delivers protocols 3.0 and 3.2, TLS, SCRAM-SHA-256, the virtual catalog, and the text and binary forms of the types. Gate G1 closes here.Why
Connect before query. A client can test nothing until it connects. Many clients read the catalog before they send any user query, so the catalog comes with the connection. This is "follow the client" and "catalog before dialect" of the compatibility work of rudb.
G1 needs clients to read the catalog with SQL. So the SQL front, a first analyzer and a simple executor ship at M2, and M3 completes them (spec/24 §24.2, item C9). The parser is the full vendored grammar from the start, because the grammar is one file.
The work
Taken from spec/23 §23.5. The reference in brackets names the spec section that owns the detail. Change the list in the spec and copy it again. Do not edit it here.
rupg-wireandrupg-server: startup,NegotiateProtocolVersion, SSL negotiation, SCRAM, the simple and extended query flows, cancel, andParameterStatus(spec/06 §6.5, spec/06 §6.6, spec/06 §6.7, spec/06 §6.9.1, spec/06 §6.12)rupg-sessionwith the 438 settings,SET,SHOWandRESET(spec/06 §6.13)rupg-catalogandrupg-pgcatalog: the built-in objects with their OIDs, the 64 catalogs, the 86 system views and the 65information_schemaviews, as virtual tables (spec/07 §7.12, spec/07 §7.13, spec/07 §7.14)SELECTwith joins, subqueries,CASE, casts toregclassandregtype, and the functions that the 48 recorded traces call on the catalog, for exampleformat_type,pg_get_expr,pg_get_indexdefandpg_get_constraintdef(spec/23 §23.5, spec/07 §7.16, spec/07 §7.17)libpq_pipelinetests (spec/21 §21.4.1)pg_dumpround trip (spec/21 §21.4.1)wire_frontend,wire_startup,type_inputandtype_recvwith no open find (spec/21 §21.7)trustover a Unix socket and with SCRAM over TLS, against the oracle. The target is at least 10x the oracle (spec/06 §6.18)rupg-wire,rupg-catalog,rupg-pgcatalog,rupg-sql,rupg-analyze,rupg-plan,rupg-func,rupg-exec,rupg-sessionandrupg-server(spec/23 §23.2)Exit criterion
wire_frontend,wire_startup,type_inputandtype_recveach run 24 CPU hours with no open find.Open questions
These questions in spec/24 close at M2.
Harness work
Depends on
#2.
Spec