Genezzo
view release on metacpan or search on metacpan
back name/ref to execute function, since it may change depending on
argument types.
TODO lib/Genezzo/Index/bt2.pm
hkey/offset functions: should be able to convert between different
"place" formats (Array and Hash prefixes), like the common fetch
routine, or ASSERT that prefix matches.
add reverse scan to search/SQLFetch
support multicol keys, non-unique keys (via combo of key + rid as
unique)
support transaction unique constraints -- probably via treat key+rid as
unique, then turn on true unique key, and scan for duplicates?
find out why can't do pctfree=0
Work on RDBlk_NN support.
search with startkey/stopkey support, vs supplying compare/equal
methods. restricting the search api to straight "=","<" comparisons
means can try the estimation function
need to handle partial startkey/stopkey comparison in searchR/SQLFetch
for multi-col keys
semantics of nulls in multi-col keys -- sort low?
simplify _pack_row with splice and a supplied split position, something
like -1 for normal indexes (n-1 key cols, 1 val col, so pop the val) or
"N=?" for index-organized tables (N key cols, M val cols, so splice N)
reorganize along the lines of "GiST" Generalized Search Trees (Paul
Aoki, J. Hellerstein, UCB)
ecount support?
TODO lib/Genezzo/Index/bt3.pm
new: maybe a way to get blocksize from rstab/rsfile and pass to bt2,
versus passing it to each layer separately
getMainMeta from first block of tied hash, but no guarantee that space
management is nice enough to return blocks in allocation order. Should
store block address of leftmost leaf in index table.
spacecheck: space cache should simply be free extents allocated to the
index. Need to extend smfile to have multiple free extents in spacelist,
vs just used extents. Note still an issue for simultaneous inserts --
need lots of space for pathological case where each parallel insert
splits a separate subtree. That's why transactions were invented.
TODO lib/Genezzo/Index/btHash.pm
figure out whether should be a pushhash, hash, or rowsource
SQLPrepare/Execute/Fetch: clean up. Shouldn't need to manage a
distinction between using btHash as a row source and the old bt2 api.
bt2 is wrong - should only have one Fetch style. Should be able to use
the index start/stop key vs filtering.
NEXTKEY: broken in "dump tsidx" for case where create 2 tables, insert
some rows, then drop the first table (and don't COMMIT) and call dump
tsidx. Loops in NEXTKEY - never terminates for allfileused index.
Add ReadOnly mode so can view indexes, but not insert/update/delete.
TODO lib/Genezzo/Parse/SQL.pm
alter table (elcaro MODIFY column NOT NULL) vs (sql3 ALTER COLUMN)...
Support for DDL, ANSI Interval, Date, Timestamp, etc.
fix the extra array deref in join rules
error messages everywhere
ECOUNT reserved word issues
TRIM, UPPER, etc in standard function list?
use of negative lookahead in reserved_word regex?
table constraint, storage clause
constraint attributes - deferrable, disable
delete cascade referential action
maybe can collapse qualified join with qj_leftop?
table expr optional column list
"system" literals like USER, SYSDATE
better separation of strings and numbers (see concatenate)
leading NOT
double colon in function names?
TODO lib/Genezzo/Plan.pm
SQLWhere2: need to allow rownum in where clause, which means we need a
rownum rowsource [select * from dual where rownum < 10; ]
update pod
TODO lib/Genezzo/Plan/MakeAlgebra.pm
need additional work for non-query operations/special cases
TODO lib/Genezzo/Plan/QueryRewrite.pm
check for function existance in GenDBI and main namespaces
update pod
need to handle FROM clause subqueries -- some tricky column type issues.
check bool_op - AND purity if no OR's.
check relational operator (comp_op, relop)
handle ddl/dml (create, insert, delete etc with embedded queries) by
checking for query_block info -- look for hash with 'query_block' before
attempting table/col resolution. Need special type checking for these
functions.
refactor to common TreeWalker
_process_name_pieces: quoted string/case-insensitivity
handle all pseudo cols
most value expression stuff needs to migrate to XEval
TODO lib/Genezzo/Plan/TypeCheck.pm
need to generate stages to perform aggregate initialization and
intermediate aggregation
check for aggregates in WHERE clause
check for GROUPing/aggregates
check for final select list columns vs all projected columns in all
clauses
check args for all functions
check for function existance in GenDBI and main namespaces
update pod
need to handle FROM clause subqueries -- some tricky column type issues.
check for duplicate aliases/type mismatch in _FROM_subq_star_fixup ?
check bool_op - AND purity if no OR's.
check relational operator (comp_op, relop)
handle ddl/dml (create, insert, delete etc with embedded queries) by
checking for query_block info -- look for hash with 'query_block' before
attempting table/col resolution. Need special type checking for these
functions.
refactor to common TreeWalker
handle all pseudo cols
most value expression stuff needs to migrate to XEval
TODO lib/Genezzo/PushHash/HPHRowBlk.pm
fix synopsis
TODO lib/Genezzo/Row/RSExpr.pm
SQLPrepare/SQLFetch: requires ALIAS argument, which doesn't make sense
for rowsources like RSDual (see XEval). "Alias" is only necessary to
disambiguate named columns.
TODO lib/Genezzo/Row/RSFile.pm
( run in 1.114 second using v1.01-cache-2.11-cpan-fe3c2283af0 )