Changed in v0.002: Konstantin Stepanov (62): use parent instead of use base, removed spare uses Makefile: installdirs vendor fixed some uninitialized variables errors some fixes in file cache module fixed incorrect Interface::build behavior on empty binds options PgSQL: create role implemented PgSQL: incorrect role save fixed: wrong (inverse) boolean values handling File cache module: exists fix PgSQL::Views: get method returns undef if view doesn't exist PgSQL::Table::Struct: list method returns undef if table doesn't exist PgSQL::Table::Struct: store method: fixed order of modification applies to field definition placed all Makefile with tests into t/ subdir for beginning tests: index & table create & remove (WIP) added buildtests target utilizing Test::Inline module inline tests for basic FusqlFS initialization, cache interface & file cache added Makefile: buildtests target added added basic inline tests for PgSQL module initialization removed spare tests bail out if pgsql is unaccessable: no duplicate info no connect tests in base FusqlFS module inline role tests implemented Build.PL: generate tests into t, check count set to 2 to try best determining number of tests to run gitignore update: no build specific dirs & files, no autogenerated tests database cleanup dummy test Makefile: autogeneration specific targets inline tests for PgSQL tables module Build.PL: don't create t/auto removed deprecated test Makefile mysql backend package renamed to match common package names conventions added inline test plan for PgSQL::Table::Struct package inline tests for PgSQL::Tables::Data (WIP) avoid loading non scalar values via Interface::load() method: considered already parsed added testcover target into Makefile FusqlFS::Interface renamed to FusqlFS::Artifact Makefile: added lint target to test syntax added inline tests for PgSQL::Table::Indices implemented better inline tests framework turned off print errors & warns if --debug option is unset disabled carps in cache module for now added inline tests for PgSQL::Views module Test framework: set_up() method can force all tests skipped by returning false value added inline tests into PgSQL::Table::Struct module Artifact basic interface methods inline testing Covered edge case with empty strategy in Cache module renamed $testclass to $_tobj use is/isnt instead of ok defined Makefile lint target tests tests as well basic inline tests for PgSQL::Table::Constraints module added (WIP) gitignore update: exclude cover report db added inline tests for PgSQL::Queries + implemented rename for queries added inline tests for PgSQL::Sequences module added inline tests for Cache::Limited module Makefile: lint target renamed to testlint, run it before normal tests Build.PL: depend on B::Lint for building fixed Cache::Limited: FETCH returns undef if entry doesn't exist added stubs for PgSQL::Constraint mutation methods (WIP) moved common code for lazy artifact creation (on store call, not create) into FusqlFS::Artifact::Table::Lazy module PgSQL::Table::Constraints mutators production Makefile: test & testcover targets support T variable to run given test only Artifact::Table::Lazy create method returns true PgSQL::Table::Constraints: implemented mutation methods Version 0.002 Changed in v0.0021: Konstantin Stepanov (20): Build.PL: replace {_tpkg} with currently testing package in tests body Artifact::Table::Lazy: simple deep clone of template in create() method PgSQL::Table::Constraints: fixed constructor inheritance PgSQL::Table::Constraints: better tests for create() method Build.PL: custom test files formatter tests for Cache::Base don't call disconnect on object without disconnect speed up tests by disconnecting main fusqlfs object on tear down PgSQL::Table::Data: return data as single file if no primary key is found remember current dir to correct mount point position in case of demonization (which resets cwd to root) Makefile: mount, umount & remount targets for tests PgSQL::Functions implementation (WIP) fusqlfs: Getopt configured to not ignore options fusqlfs: one of database or mountpoint parameters can be given via options added basic inline tests for PgSQL::Functions fixed incorrect (deprecated) class names show all functions with the same name but with different in/out params, sorted by arguments, result version update MANIFEST.SKIP: exclude log files PgSQL::Functions: don't duplicate functions with the same names Changed in v0.003: Konstantin Stepanov (25): PgSQL::Table::Constraints: included struct file in creation template gitignore update: distribution files PgSQL::Functions: create/store implemention (WIP) Makefile: added changelog target, updated phony targets list Makefile: major cleanup before dist preparation Makefile: README.pod is autoupdated from fusqlfs PgSQL::Functions: put arguments into names debug option reimplemented Artifact: expose dbh via accessor PgSQL::Role::Owner: support function owners PgSQL::Functions: better Pg 8.3 support, new dir struct PgSQL::Functions: function owner PgSQL::Functions: more info about functions PgSQL::Functions: drop implemented PgSQL::Functions: create supports inplace args PgSQL::Functions: create implemented PgSQL::Functions: rename & store docs update: fixed special chars, TODO update docs update: links in README docs update: better debug options description docs update: fixed terms PgSQL::Functions: more robust checks in store FusqlFS: truncate operates on input cache now docs for FusqlFS & FusqlFS::Abstract (WIP) Version 0.003 Changed in v0.004: Konstantin Stepanov (28): FusqlFS: new module interface Standardized file names Makefile: mount target options Removed tabs Implemented --fnsep PgSQL::Table::Data: fixed crash on data select error Makefile: cpan compatible test target Makefile: cpan target PgSQL: some code rewrote shorter Makefile: mount target unmounts first Makefile: tags target (ctags) Makefile: better changelog generation FusqlFS::Languages: basic implementation Build.PL: use Test:Deep for tests PgSQL::Languages: other methods implemented Revert "FusqlFS: truncate operates on input cache now" PgSQL::Table::Triggers: basic implementation PgSQL::Functions: symlink with languages PgSQL::Functions: no "arguments" element in struct Tests: removed list_ok() in preference to cmp_set() PgSQL::Table::Triggers: fixed directory structure PgSQL::Table::Triggers: added documentation stub Build.PL: don't crush if Test::Inline is not installed PgSQL::Table::Triggers: other methods implemented PgSQL::Table::Triggers: basic tests Tests environment: fine control of DBI debug ouput Tests environment: create plperl language & dummy trigger function Version 0.004 Changed in v0.005: Konstantin Stepanov (65): Artifact: added simple validation framework PgSQL::Table::Triggers: fixed template gitignore update: ignore debian subdir Artifact: simplified build() call Tests: create dummy trigger function correctly MANIFEST.SKIP update gitignore update: ignore MYMETA.yml Makefile: remove MYMETA.yml on realclean FusqlFS: symlink() passes full target path to backend PgSQL: symlinked paths are absolute Backend: use absolute symlinks More cache cleanups Version 0.0041 Removed depth from PgSQL::Role::Owner FusqlFS::Artifact: documentation PgSQL::Table::Indices: removed spare branching Artifact::Table::Lazy: documentation Artifact::Table::Lazy: implemented store() Entry: documentation Entry: simplification Removed trailing spaces Backend::Base: documentation Cache: documentation Cache strategies documentation updated PgSQL::Tables: documentation PgSQL: first level packages documentation PgSQL::Role::Owner: moved the package into separate file Artifact: hprintf function FusqlFS: updated synopsis according new interface FusqlFS: fixed bug in cache deep cleanup FusqlFS: better cache cleanup PgSQL::Role::Owner: documentation PgSQL::Role::Permissions: moved into separate file PgSQL::Role::Permissions: basic implementation Artifact: adiff function PgSQL::Roles: rewrote store() in a more secure way PgSQL::Tables: plugged in permissions module PgSQL::Role::Permissions: turned permissions from inside out PgSQL::Role::Permissions: documentation renamed PgSQL::Role::Permissions to PgSQL::Role::Acl PgSQL::Sequences: typo in doc fixed PgSQL::Sequences: plugged in Acl module PgSQL::Tables: docs updated PgSQL::Role::Acl: usage perm char fixed PgSQL::Functions: plugged in acl module PgSQL::Role::Acl: execute perm char fixed PgSQL::Role::Acl: function names handling PgSQL::Role::Acl: special default role '%' handling PgSQL::Role::Acl: use "my @list = reverse @_;" idiom PgSQL::Role::Acl: rename implemented PgSQL::Role::Acl: better SQL standard compliance PgSQL::Role::Acl: special 'public' role handling PgSQL::Role::Acl: updated acl map data PgSQL::Role::Owned: documentation PgSQL::Role::Base: abstract complexity PgSQL::Role::Owned: implementation PgSQL::Roles: plugged in PgSQL::Role::Owned module PgSQL::Role:*: correct handling of functions Separated initialization method from constructor PgSQL::Role::Base: renamed parameter `kindc' to `filter' PgSQL::Role::Base: documentation update & code cleanup PgSQL::Role*: fixed incorrect validate() rules Artifact: validate(): optional keys keep undefs on validation fail FusqlFS: fixed incorrect cache cleanup Version 0.005 Changed in v0.007: Konstantin Stepanov (66): FusqlFS::Entry: typo in docs fixed Avoid v-string as not so portable thing PgSQL::Table::Data: dot-files don't exist MySQL::Tables: basic methods implemented MySQL::Table:Struct: view table struct MySQL::Table:Struct: create/rename/drop fields MySQL::Table:Struct: change column (WIP) Artifact::validate() now works around native "undef" values correctly Artifact::validate() is exceptions based now MySQL: stub backend modules added Backend::MySQL: basic tables module implementation Artifact: added one_col() method Backend::MySQL: handle charset parameter MySQL::Table::Indices: basic implementation MySQL::Table::Indices: use MySQL 5's extended show statement Artifact: $max_chunks argument added to asplit() MySQL::Table::Indices: mutation implemented dynamic load of chosen backend named MySQL::Table::Struct tests MySQL::Data module reconnect on HUP signal Backend: new connection control methods documented Artifact: abstracted pairs() method to build a set of field pairs for UPDATE/WHERE clauses Make use of new pairs() method + some fixes and make use of placeholders in MySQL background Table-driven configuration for formatters Factored out Backend::*::Table::Data module common parts into Artifact::Table::Data module Clear directory cache on file unlink Backend::MySQL: users package (WIP) Backend::MySQL: rename user method Backend::Base: use require instead of use to load loaders/dumpers in runtime MySQL::Users: fixed query templates Merge branch 'mysql' autounmount on QUIT/INT/TERM signal with fusermount if found MySQL::Users: privileges control implemented FusqlFS: new --namemap option to map tables to field names for tables w/o primary keys MANIFEST.SKIP update Fix documentation links README update MySQL::Table::Triggers module implemented fusqlfs: Getopt::ArgvFile support README update: ArgvFile usage README: author email update Backend::Base: fix minor error (undefined hash key) Tests update to work with new PostgreSQL and Perl FusqlFS::Version package to store common version MySQL::Table::Struct: create.sql SQLite: tables and indices FusqlFS: mkdir/rmdir clear cache deeper FusqlFS::Backend: add sqlite engine into list MySQL::Table::Triggers: some cleanup and fixes Build: add SQLite driver into requirements Build: Pg driver is recommended only now MySQL::Table::Triggers: fix trigger creation MySQL::Procedures implemented PgSQL::Functions: code cleanup MySQL::Functions implemented MySQL validators fix MySQL::Functions, MySQL::Procedures: fixes MySQL::Variables implemented Backend: 'native' format support MySQL::Functions & MySQL::Procedures: fix error on empty parameters Entry: simplify design, table driven subclass resolution MySQL::Variables: support native format SQLite: fixes Entry: fix undefined value error Version 0.007 Changed in v0.008: Konstantin Stepanov (9): SQLite::Table::Indices: remove excess '1;' from module footer PKGBUILD for ArchLinux FusqlFS::Formatter abstraction for loader/dumper initialization FusqlFS::Formatter subclasses Default output format is native, YAML::Tiny is recommended only README files update to mention new formatters system and new formatters version 0.008 Tests update Templates made format agnostic Changed in v0.009: Konstantin Stepanov (32): PKGBUILD: MD5 hash update Build: update author email SQLite::Table::Data implemented SQLite::Struct implemented Artifact::autopackages() method to automate subpackages initialization SQLite::Tables: mutation implemented (TODO: table creation) PgSQL::Tables: fix incorrect autopackages() call context Artifact::autopackages always returns hashref Code format: remove unnecessary `()` from constant subroutines Formatter::Html and Formatter::Htmltable bugfix: incorrect subroutine recursive call Formatters tests closes #15 SQLite::Tables: tests and documentation (WIP) Backend::Base: sane error message on connection failure Backend::Base: more verbose error message on connection errors fusqlfs: parse namemap after basic options sanity checks FusqlFS: synposis code fixes Add another debug level to show full stacks Formatter: smart fallback from any to YAML and then to native Add --config option Add --mkdir option Add --rmdir option Move all mkdir/rmdir logic into FusqlFS module, handle signals immediately Remove dir on --rmdir after directory correctly unmounted README update Rename --config option to -r (i.e. 'read') Add debug level to show SQL statements MySQL::Struct: fix setting default to NULL MySQL::Struct: don't put default statement into common column definition MySQL: fix charset default setting Formatter: fix built-in formatter loading Tests: use native formatter Version 0.009