- define regular expression of tokens (as part of the grammar)
- implement tokens
- implement lexical analysis and tokenization
- provide lexer tests
- unit tests
- integration tests
- define grammar
- expressions
- clauses
- statements
-
CREATE
-
SELECT
-
INSERT
-
UPDATE
-
DELETE
-
- implement abstract syntax tree (AST)
- provide parser tests
- unit tests tests
- integration tests
- SQL types
- boolean type
BOOL
- character strings
CHAR(N)
andVARCHAR(N)
- numeric types
- integers
INT(1)
toINT(8)
- floating point
FLOAT
(32 bit) andDOUBLE
(64 bit) DECIMAL(p, s)
type with p decimal digits and a decimal dot left of the s rightmost digits
- integers
- boolean type
- define rules of the SQL type system
- implement SQL type system
- implement semantic analysis
- conjunctive normal form
- implement CNF representation and operations
- CNF unit tests
- design IR
- implement IR
- translate expression AST to CNF
- test IR
- implement join graph representation
- rewrite rules on the join graph
- push-down rules
- de-correlation
- unnesting
- define internal type system
- define and implement Schema
- define core components of a catalog
- schema
- tables
- index structures
- statistics
- workload
- data
- which kind of storage to provide
- memory-only non-persistent storage
- in-memory row store
- in-memory columnar store
- disk-based persistent storage
- memory-only non-persistent storage
- which data layouts to provide
- row-major layout
- column-major layout
- partition across (PAX)
- define interface for access
- by query interpreter
- by query compiler
- AI Planning
- beam search
- track in
StateTracker
whether a state made it to thebeam_Q
. if not, and it is part of a beam, add it to thebeam_Q
no matter its cost
- track in
- beam search
- gather statistics to aid query planning/compilation
- statistics about data
- statistics about workload
- document every class with at least 1-3 sentences
- document interface functions (most public's)
- document non-trivial functions/code
- automatically run tests locally before every push (to master) (commit?)