{
    "mode": "info",
    "parameter": "DBD::File::Roadmap",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/info/DBD%3A%3AFile%3A%3ARoadmap/json",
    "generated": "2026-07-05T13:43:46Z",
    "synopsis": "This document gives a high level overview of the future of the\nDBD::File DBI driver and groundwork for pure Perl DBI drivers.\nThe planned enhancements cover features, testing, performance,\nreliability, extensibility and more.",
    "sections": {
        "NAME": {
            "content": "DBD::File::Roadmap - Planned Enhancements for DBD::File and pure Perl\nDBD's\n\nJens Rehsack - May 2010\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "This document gives a high level overview of the future of the\nDBD::File DBI driver and groundwork for pure Perl DBI drivers.\n\nThe planned enhancements cover features, testing, performance,\nreliability, extensibility and more.\n",
            "subsections": []
        },
        "CHANGES AND ENHANCEMENTS": {
            "content": "Features\nThere are some features missing we would like to add, but there is no\ntime plan:\n\nLOCK TABLE\nThe newly implemented internal common table meta storage area would\nallow us to implement LOCK TABLE support based on file system\n\"flock ()\" support.\n\nTransaction support\nWhile DBD::AnyData recommends explicitly committing by importing\nand exporting tables, DBD::File might be enhanced in a future\nversion to allow transparent transactions using the temporary\ntables of SQL::Statement as shadow (dirty) tables.\n\nTransaction support will heavily rely on lock table support.\n\nData Dictionary Persistence\nSQL::Statement provides dictionary information when a \"CREATE TABLE\n...\"  statement is executed. This dictionary is preserved for some\nstatement handle attribute fetches (as \"NULLABLE\" or \"PRECISION\").\n\nIt is planned to extend DBD::File to support data dictionaries to\nwork on the tables in it. It is not planned to support one table in\ndifferent dictionaries, but you can have several dictionaries in\none directory.\n\nSQL Engine selecting on connect\nCurrently the SQL engine selected is chosen during the loading of\nthe module DBI::SQL::Nano. Ideally end users should be able to\nselect the engine used in \"DBI->connect ()\" with a special\nDBD::File attribute.\n\nOther points of view to the planned features (and more features for the\nSQL::Statement engine) are shown in SQL::Statement::Roadmap.\n\nTesting\nDBD::File and the dependent DBD::DBM requires a lot more automated\ntests covering API stability and compatibility with optional modules\nlike SQL::Statement.\n\nPerformance\nSeveral arguments for support of features like indexes on columns and\ncursors are made for DBD::CSV (which is a DBD::File based driver, too).\nSimilar arguments could be made for DBD::DBM, DBD::AnyData, DBD::RAM or\nDBD::PO etc.\n\nTo improve the performance of the underlying SQL engines, a clean re-\nimplementation seems to be required. Currently both engines are\nprematurely optimized and therefore it is not trivial to provide\nfurther optimization without the risk of breaking existing features.\n\nJoin the DBI developers IRC channel at <irc://irc.perl.org/dbi> to\nparticipate or post to the DBI Developers Mailing List.\n\nReliability\nDBD::File currently lacks the following points:\n\nduplicate table names\nIt is currently possible to access a table quoted with a relative\npath (a) and additionally using an absolute path (b). If (a) and\n(b) are the same file that is not recognized (except for flock\nprotection handled by the Operating System) and two independent\ntables are handled.\n\ninvalid table names\nThe current implementation does not prevent someone choosing a\ndirectory name as a physical file name for the table to open.\n\nExtensibility\nI (Jens Rehsack) have some (partially for example only) DBD's in mind:\n\nDBD::Sys\nDerive DBD::Sys from a common code base shared with DBD::File which\nhandles all the emulation DBI needs (as getinfo, SQL engine\nhandling, ...)\n\nDBD::Dir\nProvide a DBD::File derived to work with fixed table definitions\nthrough the file system to demonstrate how DBI / Pure Perl DBDs\ncould handle databases with hierarchical structures.\n\nDBD::Join\nProvide a DBI driver which is able to manage multiple connections\nto other Databases (as DBD::Multiplex), but allow them to point to\ndifferent data sources and allow joins between the tables of them:\n\n# Example\n# Let table 'lsof' being a table in DBD::Sys giving a list of open files using lsof utility\n# Let table 'dir' being a atable from DBD::Dir\n$sth = $dbh->prepare( \"select * from dir,lsof where path='/documents' and dir.entry = lsof.filename\" )\n$sth->execute(); # gives all open files in '/documents'\n...\n\n# Let table 'filesys' a DBD::Sys table of known file systems on current host\n# Let table 'applications' a table of your Configuration Management Database\n#  where current applications (relocatable, with mountpoints for filesystems)\n#  are stored\n$sth = dbh->prepare( \"select * from applications,filesys where \" .\n\"application.mountpoint = filesys.mountpoint and \".\n\"filesys.mounted is true\" );\n$sth->execute(); # gives all currently mounted applications on this host\n",
            "subsections": []
        },
        "PRIORITIES": {
            "content": "Our priorities are focused on current issues. Initially many new test\ncases for DBD::File and DBD::DBM should be added to the DBI test suite.\nAfter that some additional documentation on how to use the DBD::File\nAPI will be provided.\n\nAny additional priorities will come later and can be modified by\n(paying) users.\n",
            "subsections": []
        },
        "RESOURCES AND CONTRIBUTIONS": {
            "content": "See <http://dbi.perl.org/contributing> for how you can help.\n\nIf your company has benefited from DBI, please consider if it could\nmake a donation to The Perl Foundation \"DBI Development\" fund at\n<http://dbi.perl.org/donate> to secure future development.\n\nAlternatively, if your company would benefit from a specific new DBI\nfeature, please consider sponsoring it's development through the\noptions listed in the section \"Commercial Support from the Author\" on\n<http://dbi.perl.org/support/>.\n\nUsing such targeted financing allows you to contribute to DBI\ndevelopment and rapidly get something specific and directly valuable to\nyou in return.\n\nMy company also offers annual support contracts for the DBI, which\nprovide another way to support the DBI and get something specific in\nreturn. Contact me for details.\n\nThank you.\n\nperl v5.34.0                      2026-06-22           DBD::File::Roadmap(3pm)",
            "subsections": []
        }
    },
    "summary": "DBD::File::Roadmap - Planned Enhancements for DBD::File and pure Perl DBD's  Jens Rehsack - May 2010",
    "flags": [],
    "examples": [],
    "see_also": []
}