The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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