Genezzo

 view release on metacpan or  search on metacpan

TODO  view on Meta::CPAN

    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 )