Brian Aker: Fun with Table Functions

I just about have all of the INFORMATION_SCHEMA replaced with Table Functions!

The big wins:
  • One Execution path (less bugs)
  • Simple interface, which means more langauges
  • Zero materialization happening
  • Less Code. This allows us to remove a lot of code (and single shot passes for particular use cases).

    The data dictionary operates entirely off the proto system, so what you see is what we have. We use the table names stored within the proto so no translation ever happens. This is pretty handy for filesystems which do not preserve case (and we don't have to do anything to support them any longer).

    You can also type "SELECT * FROM DATA_DICTIONARY.SCHEMAS".

    There is no longer a "SCHEMATA" tables, just SCHEMAS. Want INDEXES? SELECT FROM INDEXES.

    drizzle> use data_dictionary;
    Database changed
    
    drizzle> select * from plugins;
    +-------------------------------------------+-----------------------+-----------+-------------+
    | PLUGIN_NAME                               | PLUGIN_TYPE           | IS_ACTIVE | MODULE_NAME |
    +-------------------------------------------+-----------------------+-----------+-------------+
    | ARCHIVE                                   | StorageEngine         | TRUE      | TRUE        | 
    | ascii                                     | Function              | TRUE      | TRUE        | 
    | benchmark                                 | Function              | TRUE      | TRUE        | 
    | BLACKHOLE                                 | StorageEngine         | TRUE      | TRUE        | 
    | char_length                               | Function              | TRUE      | TRUE        | 
    | character_length                          | Function              | TRUE      | TRUE        | 
    | CHARACTER_SETS                            | TableFunction         | TRUE      | TRUE        | 
    | COLLATIONS                                | TableFunction         | TRUE      | TRUE        | 
    | COLUMNS                                   | TableFunction         | TRUE      | TRUE        | 
    | compress                                  | Function              | TRUE      | TRUE        | 
    | connection_id                             | Function              | TRUE      | TRUE        | 
    | console                                   | Listen                | TRUE      | TRUE        | 
    | crc32                                     | Function              | TRUE      | TRUE        | 
    | CSV                                       | StorageEngine         | TRUE      | TRUE        | 
    | default_replicator                        | TransactionReplicator | TRUE      | TRUE        | 
    | drizzle_protocol                          | Listen                | TRUE      | TRUE        | 
    | Error_message_stderr                      | ErrorMessage          | TRUE      | TRUE        | 
    | FunctionEngine                            | StorageEngine         | TRUE      | TRUE        | 
    | GLOBAL_STATEMENTS                         | TableFunction         | TRUE      | TRUE        | 
    | GLOBAL_STATUS                             | TableFunction         | TRUE      | TRUE        | 
    | GLOBAL_VARIABLES                          | TableFunction         | TRUE      | TRUE        | 
    | hello_world                               | Function              | TRUE      | TRUE        | 
    | INDEX_PARTS                               | TableFunction         | TRUE      | TRUE        | 
    | INDEXES                                   | TableFunction         | TRUE      | TRUE        | 
    
    
  • URL: http://krow.livejournal.com/680925.html

    _______________________________________________
    Mailing list: https://launchpad.net/~drizzle-discuss
    Post to     : [email protected]
    Unsubscribe : https://launchpad.net/~drizzle-discuss
    More help   : https://help.launchpad.net/ListHelp
    

    Reply via email to