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

Changed in v0.001:

Konstantin Stepanov (189):
      spelling: indeces -> indices
      do not export inner fusefs functions
      added mapping functions to map path to/from object
      cleaned up basic package to continue
      FusqlFS::Base module refactored
      use class variables for cache & DB connection
      first prototype of package with new interface (for PostgreSQL)
      prototype refactored: use global connection, added common Interface package
      prototype: implemented map_path_to_obj($path) function
      prototype: added Entry package, which parses path and provides interface wrapper around filesystem object
      proto: rewrote mapping algorithm
      proto: test code update
      prototype: implemented basic fusefs interface
      prototype: getattr returns ENOENT on entry absence
      prototype: read fuse call implemented
      prototype: Tables::get() tests if given table exists
      prototype code moved into mainline code, splitted it into separate modules and cleaned up a little
      removed prototype code
      moved engine initialization into separate init() method, new() reserved for class construction in Base::Root class
      write implemented
      more robust file existance checks
      Base::Root::by_path() accepts second parameter: default value
      symlink implementation (WIP)
      renamed modules according common rules
      Entry::flush() flushes if entry is dirty only
      rewrote MySQL::Base according new interface
      FusqlFS::Base is a singleton
      handle arrays as dirs
      typo fixed
      FusqlFS::Base::clear_cache() accepts optional arg $deep_clear (defaults to false)
      Entry::store() supports "indirect" store
      dbg() rewrote to get data from caller() correctly
      new FusqlFS::Base::by_path_uncached() to get entry by path without cache checks
      PgSQL engine: index creation and storing implementation
      symlinks handling (WIP)
      FusqlFS::Base::drop() supports indirect drops
      unlink implemented
      mkdir & rmdir implemented
      clear_cache()'s 2nd param is depth to raise up to given path
      simplified the way of path parsing
      added Entry::depth() method to get tail's depth
      PgSQL engine: list uncreated indices as well
      unified indirect store/drop/create operations
      mknod implemented
      rename implemented (WIP)
      more robust checks in fuse-calls
      open implemented
      added Entry::isfile() method to check if the entry is regular file
      added Entry::height() method to get number of items in @names
      Entry::tailrel() now accepts two params: entry to modify (must be got from $pkg->get(@names), default to $self->entry()) and $data (defaults to $self->get())
      Entry::rename() supports indirect rename now
      rename support
      fsync support: clears cache
      clear cache on USR1 signal
      removed dbg() sub
      main program cleanup: use Carp and Pod::Usage, converted docs to pod
      base modules are not writable
      additional checks for existance & access permissions
      set directories link count correctly
      removed spare code
      added coderef support
      fixed "statement handle is still Active" warning
      views module implemented
      added Entry::name() function to get entry's name in file system
      moved detailed checks on rename into main interface module, Entry::rename() renamed to Entry::move()
      added limit option to limit number of table rows to list in tables/*/data dir
      PgSQL is the default DB engine
      Documentation updated
      return undef if object data (row/field) is absent
      use dot separator in complex /tables/*/data filenames
      Added some helper function into Interface package
      refactoring
      splitted PgSQL module into submodules
      PgSQL::Sequences module (WIP)
      added  param into one_row() and all_col()
      PgSQL::Sequences: check if sequence really exists and get basic sequence info if it is
      Interface: updated one_row, all_col, do, cdo interface
      Basic roles module implementation (WIP)
      go down last package if it's not directory
      PgSQL::Roles::Owner universal class, used for tables module
      utime() stub added
      removed PostgreSQL 8.3 incompatible code
      better type change handling, added optional using clause
      PgSQL roles store and rename support
      pgsql roles drop implemented
      added cache module: cleanup on cache threshold exceeded  strategy
      added --maxcached option to enable new cache strategy cleanup
      docs updated: --db option as --database synonym
      debug code removed
      docs update: more accurate cache stats info
      pgsql roles: grant & revoke roles implemented (roles subdirs now and can link from one to another)
      pgsql roles: pass additional params to alter role statement more freely
      pgsql roles: get() returns undef if role is absent
      pgsql sequences are dirs now
      renamed desc to struct
      pgsql sequences: rename and store support implemented
      pgsql sequences: create and drop support implemented
      moved all config vars from package level to instance level (dbh, loader, dumper, limit...)
      new Interface build() method
      cache system: disabled cleanup counter
      fixup new Interface build() method
      removed spare quotes
      pgsql: views and sequences have owner symlink now, views are tables now as well (select expression is in query.sql file now)
      fixed incorrect cache cleanup
      added Makefile with (un/re)mount targets and tests
      added lint test
      updated .PHONY target
      added test target to run all tests
      added test messages
      stripped of coderefs support as it will be totally special case
      reworked cache inheritance and initialization
      added FusqlFS::Cache::File stub
      cache: added is_needed() abstract class method used to define if this cache strategy can really be applied with given args
      cache: implemented filecache functionality
      added --cache and --cache-limit options, --maxcached deprecated
      clean-cache target to send -USR1 to all fusqlfs daemons available
      added test to check if fusqlfs.pl is running
      makefile: messages
      makefile: phony target update
      module file headers standardized
      moved cache code from Base into FusqlFS module, updated cache options handling in process
      more checks and error reporting
      makefile: test if fs is really mounted
      makefile: configure for file cache testing
      file cache class works at least
      gitignore update
      GPL v3 license added
      added readme file
      docs parts about cache updated
      pod errors fixed
      unexistant entries are undefined entries, not only false ones
      Interface::all_row() method to get arrayref of hashrefs with all data from query
      queries module implemented (WIP)
      fifo try
      pseodopipes: mark them as sticky files
      don't drop dirty data from cache
      pipe write special case
      pseudopipes can't be unlinked
      pseudopipes are normal files with length
      implemented separate in and out buffers for pseudopipes
      implemented queries via new pseudopipes interface
      experiment: reimplemented queries as simple pseudopipes
      refactored Entry package into subpackages by file type
      cache queries in Query module manually, not via cexpr
      PgSQL::Tables package ::get returns 0 on non-existant table
      don't cache non-existant entries
      removed debug carps
      don't allow unlink/rmdir of dir/notdir
      deeper cache cleanup on mknod call
      moved Entry code into separate module
      removed cache code from Base module
      abstracted entry read with Entry::read() method
      moved write() & flush() methods into concrete Entry implementations
      don't you ever write into dir
      Base::dump() returns undef if no data to dump
      pipes are files too
      rewrote queries with new pseudopipes interface
      moved input buffer logic a level higher into FusqlFS module
      removed spare returns
      pseudopipes special handling experiment
      refactored Entry package into subpackages by file type
      PgSQL::Tables package ::get returns 0 on non-existant table
      don't allow unlink/rmdir of dir/notdir
      deeper cache cleanup on mknod call
      moved Entry code into separate module
      removed cache code from Base module
      abstracted entry read with Entry::read() method
      moved write() & flush() methods into concrete Entry implementations
      don't you ever write into dir
      Base::dump() returns undef if no data to dump
      moved input buffer logic a level higher into FusqlFS module
      removed spare returns
      added --format=[yaml|xml] option
      NoAttr for XML::Simple parser
      --format=xml for test into Makefile
      JSON format support
      rewrote pseudopipes in a more simple synchronous way
      less special pseudopipes handling
      Merge branch 'pipes'
      documentation formatting update
      gitignore update: /mnt & /tags
      PgSQL: basic constraints implementation
      PgSQL: splitted Tables module into separate modules
      Restructered sources
      refactored Cache module
      added Backend wrapper module
      don't drop pipes from cache on flush
      distribution prepared
      rewrote Makefile to use Module::Build system


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