| ... | ... | 
                  @@ -1,260 +1,262 @@  | 
              
| 1 | 
                  +0.1649  | 
              |
| 2 | 
                  + - DBIx::Custom::Model select() think about relation attirbute  | 
              |
| 1 | 3 | 
                  0.1648  | 
              
| 2 | 
                  - add experimental DBIx::Custom::Model relation() attribute  | 
              |
| 3 | 
                  - add experimental update_at(), delete_at(), select_at()  | 
              |
| 4 | 
                  - add experimental setup_model()  | 
              |
| 5 | 
                  - add experimental DBIx::Custom::Model columns attirbute  | 
              |
| 6 | 
                  - add experimental DBIx::Custom::Model foreign_key() attribute  | 
              |
| 7 | 
                  - add experimental models() attribute  | 
              |
| 4 | 
                  + - add experimental DBIx::Custom::Model relation() attribute  | 
              |
| 5 | 
                  + - add experimental update_at(), delete_at(), select_at()  | 
              |
| 6 | 
                  + - add experimental setup_model()  | 
              |
| 7 | 
                  + - add experimental DBIx::Custom::Model columns attirbute  | 
              |
| 8 | 
                  + - add experimental DBIx::Custom::Model foreign_key() attribute  | 
              |
| 9 | 
                  + - add experimental models() attribute  | 
              |
| 8 | 10 | 
                  0.1647  | 
              
| 9 | 
                  - add default_dbi_option()  | 
              |
| 11 | 
                  + - add default_dbi_option()  | 
              |
| 10 | 12 | 
                  0.1646  | 
              
| 11 | 
                  - add feture. all model class in namespace is included by include_model  | 
              |
| 12 | 
                  - rename experimental include_table to include_model  | 
              |
| 13 | 
                  - rename experimental table to model  | 
              |
| 14 | 
                  - rename experimental DBIx::Custom::Table to DBIx::Custom::Model  | 
              |
| 15 | 
                  - remame experimental DBIx::Custom::Table::name() to DBIx::Custom::Model::table();  | 
              |
| 13 | 
                  + - add feture. all model class in namespace is included by include_model  | 
              |
| 14 | 
                  + - rename experimental include_table to include_model  | 
              |
| 15 | 
                  + - rename experimental table to model  | 
              |
| 16 | 
                  + - rename experimental DBIx::Custom::Table to DBIx::Custom::Model  | 
              |
| 17 | 
                  + - remame experimental DBIx::Custom::Table::name() to DBIx::Custom::Model::table();  | 
              |
| 16 | 18 | 
                  0.1645  | 
              
| 17 | 
                  - removed experimental base_table() for class expandability.  | 
              |
| 18 | 
                  - experimental table() can't set table object any more.  | 
              |
| 19 | 
                  - added experimental include_table().  | 
              |
| 19 | 
                  + - removed experimental base_table() for class expandability.  | 
              |
| 20 | 
                  + - experimental table() can't set table object any more.  | 
              |
| 21 | 
                  + - added experimental include_table().  | 
              |
| 20 | 22 | 
                  0.1644  | 
              
| 21 | 
                  - update pod  | 
              |
| 23 | 
                  + - update pod  | 
              |
| 22 | 24 | 
                  0.1643  | 
              
| 23 | 
                  - add experimental selection option to select()  | 
              |
| 24 | 
                  - add experimental table tag  | 
              |
| 25 | 
                  - fix bug : filter can't overwirite undef value.  | 
              |
| 26 | 
                  - add experimental feature to apply_filter(). you can apply end filter.  | 
              |
| 27 | 
                  - add experimental feature to apply_filter(). TABLE__COLUMN is filterded now.  | 
              |
| 25 | 
                  + - add experimental selection option to select()  | 
              |
| 26 | 
                  + - add experimental table tag  | 
              |
| 27 | 
                  + - fix bug : filter can't overwirite undef value.  | 
              |
| 28 | 
                  + - add experimental feature to apply_filter(). you can apply end filter.  | 
              |
| 29 | 
                  + - add experimental feature to apply_filter(). TABLE__COLUMN is filterded now.  | 
              |
| 28 | 30 | 
                  0.1642  | 
              
| 29 | 
                  - removed experimental DBIx::Custom::Table base() method  | 
              |
| 30 | 
                  - table created by tabled method can call base_$method correponding to base_table's one  | 
              |
| 31 | 
                  + - removed experimental DBIx::Custom::Table base() method  | 
              |
| 32 | 
                  + - table created by tabled method can call base_$method correponding to base_table's one  | 
              |
| 31 | 33 | 
                  0.1641  | 
              
| 32 | 
                  - select() where can't receive array reference to prevend SQL injection easily(not backward compatible. sorry. use where() instead)  | 
              |
| 33 | 
                  - added experimental safety_column_name attribute  | 
              |
| 34 | 
                  - fix SQL injection security hole about column name  | 
              |
| 34 | 
                  + - select() where can't receive array reference to prevend SQL injection easily(not backward compatible. sorry. use where() instead)  | 
              |
| 35 | 
                  + - added experimental safety_column_name attribute  | 
              |
| 36 | 
                  + - fix SQL injection security hole about column name  | 
              |
| 35 | 37 | 
                  0.1640  | 
              
| 36 | 
                  - autoload DBI method  | 
              |
| 37 | 
                  - removed experimental expand  | 
              |
| 38 | 
                  + - autoload DBI method  | 
              |
| 39 | 
                  + - removed experimental expand  | 
              |
| 38 | 40 | 
                  0.1639  | 
              
| 39 | 
                  - improved delete() and update() where option. you can use DBIx::Custom::Where object  | 
              |
| 40 | 
                  - added experimental not_exists()  | 
              |
| 41 | 
                  + - improved delete() and update() where option. you can use DBIx::Custom::Where object  | 
              |
| 42 | 
                  + - added experimental not_exists()  | 
              |
| 41 | 43 | 
                  0.1638  | 
              
| 42 | 
                  - table object call dbi object method if not found method.  | 
              |
| 43 | 
                  - added experimental base_table attribute and removed experimental table_class attribute  | 
              |
| 44 | 
                  - renamed helper to method.  | 
              |
| 45 | 
                  - added experimental DBIx::Custom::Result::stash()  | 
              |
| 46 | 
                  - renamed experimental DBIx::Custom::Table helper to method  | 
              |
| 44 | 
                  + - table object call dbi object method if not found method.  | 
              |
| 45 | 
                  + - added experimental base_table attribute and removed experimental table_class attribute  | 
              |
| 46 | 
                  + - renamed helper to method.  | 
              |
| 47 | 
                  + - added experimental DBIx::Custom::Result::stash()  | 
              |
| 48 | 
                  + - renamed experimental DBIx::Custom::Table helper to method  | 
              |
| 47 | 49 | 
                  0.1637  | 
              
| 48 | 
                  - renamed dbi_options to dbi_option. dbi_options is available, but deprecated.  | 
              |
| 49 | 
                  - renamed DBIx::Custom::TagProcessor to DBIx::Custom::Tag, and function names is cleanuped.  | 
              |
| 50 | 
                  - renamed register_tag_processor to register_tag. register_tag_processor is available, but deprecated.  | 
              |
| 51 | 
                  - renamed tag_processors to tags. tag_prosessors is available, but deprecated.  | 
              |
| 52 | 
                  - improved error message  | 
              |
| 53 | 
                  - build all clause if param is undefined.  | 
              |
| 54 | 
                  - each_column callback receive self as first argument.  | 
              |
| 55 | 
                  - removed experimental txn_scope  | 
              |
| 50 | 
                  + - renamed dbi_options to dbi_option. dbi_options is available, but deprecated.  | 
              |
| 51 | 
                  + - renamed DBIx::Custom::TagProcessor to DBIx::Custom::Tag, and function names is cleanuped.  | 
              |
| 52 | 
                  + - renamed register_tag_processor to register_tag. register_tag_processor is available, but deprecated.  | 
              |
| 53 | 
                  + - renamed tag_processors to tags. tag_prosessors is available, but deprecated.  | 
              |
| 54 | 
                  + - improved error message  | 
              |
| 55 | 
                  + - build all clause if param is undefined.  | 
              |
| 56 | 
                  + - each_column callback receive self as first argument.  | 
              |
| 57 | 
                  + - removed experimental txn_scope  | 
              |
| 56 | 58 | 
                  0.1636  | 
              
| 57 | 
                  - added tests and cleanup  | 
              |
| 59 | 
                  + - added tests and cleanup  | 
              |
| 58 | 60 | 
                  0.1635  | 
              
| 59 | 
                  - renamed iterate_all_columns to each_column  | 
              |
| 61 | 
                  + - renamed iterate_all_columns to each_column  | 
              |
| 60 | 62 | 
                  0.1634  | 
              
| 61 | 
                  - became more useful where method  | 
              |
| 62 | 
                  - changed DBIx::Custom::Where greatly  | 
              |
| 63 | 
                  + - became more useful where method  | 
              |
| 64 | 
                  + - changed DBIx::Custom::Where greatly  | 
              |
| 63 | 65 | 
                  0.1633  | 
              
| 64 | 
                  - fixed test  | 
              |
| 66 | 
                  + - fixed test  | 
              |
| 65 | 67 | 
                  0.1632  | 
              
| 66 | 
                  - added experimental where method  | 
              |
| 67 | 
                  - added experimental DBIx::Custom::Where.  | 
              |
| 68 | 
                  - removed DBIx::Custom::Or  | 
              |
| 68 | 
                  + - added experimental where method  | 
              |
| 69 | 
                  + - added experimental DBIx::Custom::Where.  | 
              |
| 70 | 
                  + - removed DBIx::Custom::Or  | 
              |
| 69 | 71 | 
                  0.1631  | 
              
| 70 | 
                  - added experimental DBIx::Custom::Result end_filter method  | 
              |
| 71 | 
                  - experimental extended select method's where option  | 
              |
| 72 | 
                  - fix select method empty where failed bug  | 
              |
| 73 | 
                  - added experimental suger method query option  | 
              |
| 74 | 
                  - added experimental or method  | 
              |
| 72 | 
                  + - added experimental DBIx::Custom::Result end_filter method  | 
              |
| 73 | 
                  + - experimental extended select method's where option  | 
              |
| 74 | 
                  + - fix select method empty where failed bug  | 
              |
| 75 | 
                  + - added experimental suger method query option  | 
              |
| 76 | 
                  + - added experimental or method  | 
              |
| 75 | 77 | 
                  0.1630  | 
              
| 76 | 
                  - fix test bug  | 
              |
| 78 | 
                  + - fix test bug  | 
              |
| 77 | 79 | 
                  0.1629  | 
              
| 78 | 
                  - renamed auto_filter to apply_filter  | 
              |
| 79 | 
                  - changed apply_filter method arguments  | 
              |
| 80 | 
                  - deprecated cache_method  | 
              |
| 80 | 
                  + - renamed auto_filter to apply_filter  | 
              |
| 81 | 
                  + - changed apply_filter method arguments  | 
              |
| 82 | 
                  + - deprecated cache_method  | 
              |
| 81 | 83 | 
                  0.1628  | 
              
| 82 | 
                  - remove DBIx::Custom::Model  | 
              |
| 83 | 
                  - move table method and table_class attribute to DBIx::Custom  | 
              |
| 84 | 
                  - added examples  | 
              |
| 85 | 
                  - fixed connect method bug  | 
              |
| 84 | 
                  + - remove DBIx::Custom::Model  | 
              |
| 85 | 
                  + - move table method and table_class attribute to DBIx::Custom  | 
              |
| 86 | 
                  + - added examples  | 
              |
| 87 | 
                  + - fixed connect method bug  | 
              |
| 86 | 88 | 
                  0.1627  | 
              
| 87 | 
                  - added insert, update, update_all, delete, delete_all, select method to DBIx::Custom::Table  | 
              |
| 88 | 
                  - added experimental txn_scope  | 
              |
| 89 | 
                  + - added insert, update, update_all, delete, delete_all, select method to DBIx::Custom::Table  | 
              |
| 90 | 
                  + - added experimental txn_scope  | 
              |
| 89 | 91 | 
                  0.1626  | 
              
| 90 | 
                  - simplified DBIx::Custom::Model and DBIx::Custom::Table  | 
              |
| 92 | 
                  + - simplified DBIx::Custom::Model and DBIx::Custom::Table  | 
              |
| 91 | 93 | 
                  0.1625  | 
              
| 92 | 
                  - added experimental DBIx::Custom::Model and DBIx::Custom::Table  | 
              |
| 94 | 
                  + - added experimental DBIx::Custom::Model and DBIx::Custom::Table  | 
              |
| 93 | 95 | 
                  0.1624  | 
              
| 94 | 
                  - added experimental iterate_all_columns method.  | 
              |
| 96 | 
                  + - added experimental iterate_all_columns method.  | 
              |
| 95 | 97 | 
                  0.1623  | 
              
| 96 | 
                  - added experimental auto_filter method  | 
              |
| 97 | 
                  - deprecated default_bind_filter and default_fetch_filter because these are global effect.  | 
              |
| 98 | 
                  - changed defautl_bind_filter and default_fetch_filter attributes to methods.  | 
              |
| 99 | 
                  - changed DBIx::Custom::Result default_filter attribute to method  | 
              |
| 100 | 
                  - changed DBIx::Custom::Result filter attribute to method.  | 
              |
| 101 | 
                  - filter_check is always done for usability  | 
              |
| 98 | 
                  + - added experimental auto_filter method  | 
              |
| 99 | 
                  + - deprecated default_bind_filter and default_fetch_filter because these are global effect.  | 
              |
| 100 | 
                  + - changed defautl_bind_filter and default_fetch_filter attributes to methods.  | 
              |
| 101 | 
                  + - changed DBIx::Custom::Result default_filter attribute to method  | 
              |
| 102 | 
                  + - changed DBIx::Custom::Result filter attribute to method.  | 
              |
| 103 | 
                  + - filter_check is always done for usability  | 
              |
| 102 | 104 | 
                  0.1622  | 
              
| 103 | 
                  - deprecated DBIx::Custom::SQLite and DBIx::Custom::MySQL  | 
              |
| 104 | 
                  - added dbi_options attribute  | 
              |
| 105 | 
                  - checked attributes passed to connect method  | 
              |
| 105 | 
                  + - deprecated DBIx::Custom::SQLite and DBIx::Custom::MySQL  | 
              |
| 106 | 
                  + - added dbi_options attribute  | 
              |
| 107 | 
                  + - checked attributes passed to connect method  | 
              |
| 106 | 108 | 
                  0.1621  | 
              
| 107 | 
                  - cleanup (removed undocumented features)  | 
              |
| 109 | 
                  + - cleanup (removed undocumented features)  | 
              |
| 108 | 110 | 
                  0.1620  | 
              
| 109 | 
                  - updated document  | 
              |
| 111 | 
                  + - updated document  | 
              |
| 110 | 112 | 
                  0.1619  | 
              
| 111 | 
                  - updated document  | 
              |
| 112 | 
                  - added experimental expand method  | 
              |
| 113 | 
                  + - updated document  | 
              |
| 114 | 
                  + - added experimental expand method  | 
              |
| 113 | 115 | 
                  0.1618  | 
              
| 114 | 
                  - added helper method  | 
              |
| 115 | 
                  - added begin_work, commit, and rollback method  | 
              |
| 116 | 
                  + - added helper method  | 
              |
| 117 | 
                  + - added begin_work, commit, and rollback method  | 
              |
| 116 | 118 | 
                  0.1617  | 
              
| 117 | 
                  - L<DBIx::Custom> is now stable. APIs keep backword compatible in the feature.  | 
              |
| 119 | 
                  + - L<DBIx::Custom> is now stable. APIs keep backword compatible in the feature.  | 
              |
| 118 | 120 | 
                  0.1616  | 
              
| 119 | 
                  - removed experimental register_method(), and methods attribute, because it is too magical  | 
              |
| 121 | 
                  + - removed experimental register_method(), and methods attribute, because it is too magical  | 
              |
| 120 | 122 | 
                  0.1615  | 
              
| 121 | 
                  - fixed DBIx::Custom::QueryBuilder build_query() bug  | 
              |
| 122 | 
                  - required Perl 5.008001 to use @CARP_NOT  | 
              |
| 123 | 
                  + - fixed DBIx::Custom::QueryBuilder build_query() bug  | 
              |
| 124 | 
                  + - required Perl 5.008001 to use @CARP_NOT  | 
              |
| 123 | 125 | 
                  0.1614  | 
              
| 124 | 
                  - removed DBIx::Custom::Query start_tag and end tag attributes  | 
              |
| 125 | 
                  -  enable escaping '{' and '}' in the source of SQL
                 | 
              |
| 126 | 
                  - fixed Carp Carp trust relationship  | 
              |
| 126 | 
                  + - removed DBIx::Custom::Query start_tag and end tag attributes  | 
              |
| 127 | 
                  +    - enable escaping '{' and '}' in the source of SQL
                 | 
              |
| 128 | 
                  + - fixed Carp Carp trust relationship  | 
              |
| 127 | 129 | 
                  0.1613  | 
              
| 128 | 
                  - added experimental register_method() method  | 
              |
| 129 | 
                  - added experimental methods attribute  | 
              |
| 130 | 
                  + - added experimental register_method() method  | 
              |
| 131 | 
                  + - added experimental methods attribute  | 
              |
| 130 | 132 | 
                  0.1612  | 
              
| 131 | 
                  - added tests  | 
              |
| 132 | 
                  - updated document  | 
              |
| 133 | 
                  - removed DBIx::Custom::SQLite last_insert_rawid() mehtod(not backword compatible)  | 
              |
| 134 | 
                  - removed DBIx::Custom::MySQL last_insert_id() method(not backword compatible)  | 
              |
| 133 | 
                  + - added tests  | 
              |
| 134 | 
                  + - updated document  | 
              |
| 135 | 
                  + - removed DBIx::Custom::SQLite last_insert_rawid() mehtod(not backword compatible)  | 
              |
| 136 | 
                  + - removed DBIx::Custom::MySQL last_insert_id() method(not backword compatible)  | 
              |
| 135 | 137 | 
                  0.1611  | 
              
| 136 | 
                  - renamed update tag to update_param  | 
              |
| 137 | 
                  - renamed insert tag to insert_param  | 
              |
| 138 | 
                  - renamed sql_builder to query_builder  | 
              |
| 138 | 
                  + - renamed update tag to update_param  | 
              |
| 139 | 
                  + - renamed insert tag to insert_param  | 
              |
| 140 | 
                  + - renamed sql_builder to query_builder  | 
              |
| 139 | 141 | 
                  0.1610  | 
              
| 140 | 
                  - added filter_check attribute.  | 
              |
| 142 | 
                  + - added filter_check attribute.  | 
              |
| 141 | 143 | 
                  0.1609  | 
              
| 142 | 
                  - updated document.  | 
              |
| 144 | 
                  + - updated document.  | 
              |
| 143 | 145 | 
                  0.1608  | 
              
| 144 | 
                  - update document  | 
              |
| 145 | 
                  - renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible)  | 
              |
| 146 | 
                  + - update document  | 
              |
| 147 | 
                  + - renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible)  | 
              |
| 146 | 148 | 
                  0.1607  | 
              
| 147 | 
                  - where argument of select() method can specify array(string, paramters)  | 
              |
| 148 | 
                  - renamed build_query() to create_query()(not backword compatible)  | 
              |
| 149 | 
                  + - where argument of select() method can specify array(string, paramters)  | 
              |
| 150 | 
                  + - renamed build_query() to create_query()(not backword compatible)  | 
              |
| 149 | 151 | 
                  0.1606  | 
              
| 150 | 
                  - fix testing bug  | 
              |
| 152 | 
                  + - fix testing bug  | 
              |
| 151 | 153 | 
                  0.1605  | 
              
| 152 | 
                  - remove DBIx::Custom::QueryBuilder::tag_syntax() (not backword compatible)  | 
              |
| 153 | 
                  - renamed DBIx::Custom::TagProcessor to DBIx::Custom::TagProcessors (not backword compatible)  | 
              |
| 154 | 
                  - changed arguments of tag processor(not backword compatible)  | 
              |
| 155 | 
                  - renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible)  | 
              |
| 154 | 
                  + - remove DBIx::Custom::QueryBuilder::tag_syntax() (not backword compatible)  | 
              |
| 155 | 
                  + - renamed DBIx::Custom::TagProcessor to DBIx::Custom::TagProcessors (not backword compatible)  | 
              |
| 156 | 
                  + - changed arguments of tag processor(not backword compatible)  | 
              |
| 157 | 
                  + - renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible)  | 
              |
| 156 | 158 | 
                  0.1604  | 
              
| 157 | 
                  - changed argument of tag processor(not backword compatible)  | 
              |
| 158 | 
                  - renamed default_query_filter to default_bind_filter(not backword compatible)  | 
              |
| 159 | 
                  - renamed DBIx::Custom::SQLTemplate to DBIx::Custom::SQLBuilder(not backword compatible)  | 
              |
| 160 | 
                  - renamed create_query to build_query(not backword compatible)  | 
              |
| 161 | 
                  - renamed sql_template to sql_builder(not backword compatible)  | 
              |
| 162 | 
                  - removed DESTROY method(not backword compatible)  | 
              |
| 163 | 
                  - removed disconnect method(not backword compatible)  | 
              |
| 164 | 
                  - fixed DBIx::Custom::MySQL connect_memory  | 
              |
| 159 | 
                  + - changed argument of tag processor(not backword compatible)  | 
              |
| 160 | 
                  + - renamed default_query_filter to default_bind_filter(not backword compatible)  | 
              |
| 161 | 
                  + - renamed DBIx::Custom::SQLTemplate to DBIx::Custom::SQLBuilder(not backword compatible)  | 
              |
| 162 | 
                  + - renamed create_query to build_query(not backword compatible)  | 
              |
| 163 | 
                  + - renamed sql_template to sql_builder(not backword compatible)  | 
              |
| 164 | 
                  + - removed DESTROY method(not backword compatible)  | 
              |
| 165 | 
                  + - removed disconnect method(not backword compatible)  | 
              |
| 166 | 
                  + - fixed DBIx::Custom::MySQL connect_memory  | 
              |
| 165 | 167 | 
                  0.1603  | 
              
| 166 | 
                  - removed DBIx::Custom commit method (not backword compatible)  | 
              |
| 167 | 
                  - removed DBIx::Custom rollback method (not backword compatible)  | 
              |
| 168 | 
                  - removed DBIx::Custom auto_commit method (not backword compatible)  | 
              |
| 168 | 
                  + - removed DBIx::Custom commit method (not backword compatible)  | 
              |
| 169 | 
                  + - removed DBIx::Custom rollback method (not backword compatible)  | 
              |
| 170 | 
                  + - removed DBIx::Custom auto_commit method (not backword compatible)  | 
              |
| 169 | 171 | 
                  0.1602  | 
              
| 170 | 
                  - added cache_method attribute  | 
              |
| 172 | 
                  + - added cache_method attribute  | 
              |
| 171 | 173 | 
                  0.1601  | 
              
| 172 | 
                  - added cache attribute  | 
              |
| 173 | 
                  - select, insert, update, update_all, delete, delete_all, execute only receive hash argument(not backword compatible)  | 
              |
| 174 | 
                  + - added cache attribute  | 
              |
| 175 | 
                  + - select, insert, update, update_all, delete, delete_all, execute only receive hash argument(not backword compatible)  | 
              |
| 174 | 176 | 
                  0.1503  | 
              
| 175 | 
                  - removed reconnect method  | 
              |
| 176 | 
                  - removed connected method  | 
              |
| 177 | 
                  - removed reconnect_memroy method  | 
              |
| 178 | 
                  - renamed fetch_single to fetch_first  | 
              |
| 179 | 
                  - renamed fetch_hash_single to fetch_hash_first  | 
              |
| 180 | 
                  - updated document  | 
              |
| 177 | 
                  + - removed reconnect method  | 
              |
| 178 | 
                  + - removed connected method  | 
              |
| 179 | 
                  + - removed reconnect_memroy method  | 
              |
| 180 | 
                  + - renamed fetch_single to fetch_first  | 
              |
| 181 | 
                  + - renamed fetch_hash_single to fetch_hash_first  | 
              |
| 182 | 
                  + - updated document  | 
              |
| 181 | 183 | 
                  0.1502  | 
              
| 182 | 
                  - added commit method  | 
              |
| 183 | 
                  - added rollback method  | 
              |
| 184 | 
                  - changed select argument, added relation option  | 
              |
| 185 | 
                  - moved host attribute to DBIx::Custom::MySQL  | 
              |
| 186 | 
                  - moved port attribute to DBIx::Custom::MySQL  | 
              |
| 187 | 
                  - moved database attribute to DBIx::Custom::MySQL and DBIx::Custom::SQLite  | 
              |
| 184 | 
                  + - added commit method  | 
              |
| 185 | 
                  + - added rollback method  | 
              |
| 186 | 
                  + - changed select argument, added relation option  | 
              |
| 187 | 
                  + - moved host attribute to DBIx::Custom::MySQL  | 
              |
| 188 | 
                  + - moved port attribute to DBIx::Custom::MySQL  | 
              |
| 189 | 
                  + - moved database attribute to DBIx::Custom::MySQL and DBIx::Custom::SQLite  | 
              |
| 188 | 190 | 
                  0.1501  | 
              
| 189 | 
                  - removed register_format()  | 
              |
| 190 | 
                  - removed formats()  | 
              |
| 191 | 
                  - removed run_transaction()  | 
              |
| 192 | 
                  - removed create_table()  | 
              |
| 193 | 
                  - removed drop_table()  | 
              |
| 194 | 
                  - changed select() arguments  | 
              |
| 195 | 
                  - changed insert() arguments  | 
              |
| 196 | 
                  - changed update() arguments  | 
              |
| 197 | 
                  - changed update_all() arguments  | 
              |
| 198 | 
                  - changed delete() arguments  | 
              |
| 199 | 
                  - changed delete_all() arguments  | 
              |
| 200 | 
                  - changed execute() arguments  | 
              |
| 191 | 
                  + - removed register_format()  | 
              |
| 192 | 
                  + - removed formats()  | 
              |
| 193 | 
                  + - removed run_transaction()  | 
              |
| 194 | 
                  + - removed create_table()  | 
              |
| 195 | 
                  + - removed drop_table()  | 
              |
| 196 | 
                  + - changed select() arguments  | 
              |
| 197 | 
                  + - changed insert() arguments  | 
              |
| 198 | 
                  + - changed update() arguments  | 
              |
| 199 | 
                  + - changed update_all() arguments  | 
              |
| 200 | 
                  + - changed delete() arguments  | 
              |
| 201 | 
                  + - changed delete_all() arguments  | 
              |
| 202 | 
                  + - changed execute() arguments  | 
              |
| 201 | 203 | 
                  0.1402  | 
              
| 202 | 
                  - remove finish(), error()  | 
              |
| 203 | 
                  - can receive code ref to filter()  | 
              |
| 204 | 
                  - renamed resist to register  | 
              |
| 204 | 
                  + - remove finish(), error()  | 
              |
| 205 | 
                  + - can receive code ref to filter()  | 
              |
| 206 | 
                  + - renamed resist to register  | 
              |
| 205 | 207 | 
                  0.1401  | 
              
| 206 | 
                  - renamed fetch_rows to fetch_multi  | 
              |
| 207 | 
                  - renamed fetch_hash_rows to fetch_hash_multi  | 
              |
| 208 | 
                  + - renamed fetch_rows to fetch_multi  | 
              |
| 209 | 
                  + - renamed fetch_hash_rows to fetch_hash_multi  | 
              |
| 208 | 210 | 
                  0.1301  | 
              
| 209 | 
                  - Changed many(not backword compatible)  | 
              |
| 211 | 
                  + - Changed many(not backword compatible)  | 
              |
| 210 | 212 | 
                  0.1201  | 
              
| 211 | 
                  - Changed many(not backword compatible)  | 
              |
| 213 | 
                  + - Changed many(not backword compatible)  | 
              |
| 212 | 214 | 
                  0.1101  | 
              
| 213 | 
                  - rename DBIx::Custom::SQLite last_insert_id to last_insert_rowid  | 
              |
| 215 | 
                  + - rename DBIx::Custom::SQLite last_insert_id to last_insert_rowid  | 
              |
| 214 | 216 | 
                  0.1001  | 
              
| 215 | 
                  - remove run_transaction().  | 
              |
| 216 | 
                  - add transaction() and DBIx::Custom::Transaction  | 
              |
| 217 | 
                  - rename fetch_first to fetch_single  | 
              |
| 218 | 
                  - rename fetch_hash_first to fetch_hash_single  | 
              |
| 217 | 
                  + - remove run_transaction().  | 
              |
| 218 | 
                  + - add transaction() and DBIx::Custom::Transaction  | 
              |
| 219 | 
                  + - rename fetch_first to fetch_single  | 
              |
| 220 | 
                  + - rename fetch_hash_first to fetch_hash_single  | 
              |
| 219 | 221 | 
                  0.0906  | 
              
| 220 | 
                  - fix some bug  | 
              |
| 222 | 
                  + - fix some bug  | 
              |
| 221 | 223 | 
                  0.0905  | 
              
| 222 | 
                  - catch up with Object::Simple update  | 
              |
| 224 | 
                  + - catch up with Object::Simple update  | 
              |
| 223 | 225 | 
                  0.0904  | 
              
| 224 | 
                  - cleanup  | 
              |
| 226 | 
                  + - cleanup  | 
              |
| 225 | 227 | 
                  0.0903  | 
              
| 226 | 
                  - catch up with Object::Simple update  | 
              |
| 228 | 
                  + - catch up with Object::Simple update  | 
              |
| 227 | 229 | 
                  0.0902  | 
              
| 228 | 
                  - cleanup  | 
              |
| 230 | 
                  + - cleanup  | 
              |
| 229 | 231 | 
                  0.0901  | 
              
| 230 | 
                  - DBIx::Basic filter 'encode_utf8' utf8::upgrade process is deleted  | 
              |
| 232 | 
                  + - DBIx::Basic filter 'encode_utf8' utf8::upgrade process is deleted  | 
              |
| 231 | 233 | 
                  0.0801  | 
              
| 232 | 
                  - add 'create_table', 'drop_table' methods  | 
              |
| 234 | 
                  + - add 'create_table', 'drop_table' methods  | 
              |
| 233 | 235 | 
                  0.0701  | 
              
| 234 | 
                  - rename sql_template to sql_tmpl (not backword compatible)  | 
              |
| 235 | 
                  - rename dbi_options to options (not backword compatible)  | 
              |
| 236 | 
                  + - rename sql_template to sql_tmpl (not backword compatible)  | 
              |
| 237 | 
                  + - rename dbi_options to options (not backword compatible)  | 
              |
| 236 | 238 | 
                  0.0605  | 
              
| 237 | 
                  - fix encode_utf8 filter  | 
              |
| 239 | 
                  + - fix encode_utf8 filter  | 
              |
| 238 | 240 | 
                  0.0604  | 
              
| 239 | 
                  - fix timeformat tests  | 
              |
| 241 | 
                  + - fix timeformat tests  | 
              |
| 240 | 242 | 
                  0.0603  | 
              
| 241 | 
                  - fix cache system bug  | 
              |
| 243 | 
                  + - fix cache system bug  | 
              |
| 242 | 244 | 
                  0.0602  | 
              
| 243 | 
                  - update document  | 
              |
| 245 | 
                  + - update document  | 
              |
| 244 | 246 | 
                  0.0601  | 
              
| 245 | 
                  - bind_filter argument is changed to ($value, $key, $dbi, $infos) (not backword compatible)  | 
              |
| 246 | 
                  - fetch_filter argument is changed to ($value, $key, $dbi, $infos) (not backword compatible)  | 
              |
| 247 | 
                  - run_transaction argument is changed to ($dbi)  | 
              |
| 247 | 
                  + - bind_filter argument is changed to ($value, $key, $dbi, $infos) (not backword compatible)  | 
              |
| 248 | 
                  + - fetch_filter argument is changed to ($value, $key, $dbi, $infos) (not backword compatible)  | 
              |
| 249 | 
                  + - run_transaction argument is changed to ($dbi)  | 
              |
| 248 | 250 | 
                  0.0502  | 
              
| 249 | 
                  - update document  | 
              |
| 251 | 
                  + - update document  | 
              |
| 250 | 252 | 
                  0.0501  | 
              
| 251 | 
                  - packaging DBIx::Custom::Result DBIx::Custom::Query DBIx::Custom::MySQL DBIx::Custom::SQLite DBIx::Custom::SQL::Template  | 
              |
| 253 | 
                  + - packaging DBIx::Custom::Result DBIx::Custom::Query DBIx::Custom::MySQL DBIx::Custom::SQLite DBIx::Custom::SQL::Template  | 
              |
| 252 | 254 | 
                  0.0401  | 
              
| 253 | 
                  - catch up with DBIx::Custom::Result version up  | 
              |
| 255 | 
                  + - catch up with DBIx::Custom::Result version up  | 
              |
| 254 | 256 | 
                  0.0301  | 
              
| 255 | 
                  - exchange filter argument 'key', 'value' (not backword compatible)  | 
              |
| 257 | 
                  + - exchange filter argument 'key', 'value' (not backword compatible)  | 
              |
| 256 | 258 | 
                  0.0201  | 
              
| 257 | 
                  - rename tranzaction to transaction  | 
              |
| 258 | 
                  - add filter_off  | 
              |
| 259 | 
                  + - rename tranzaction to transaction  | 
              |
| 260 | 
                  + - add filter_off  | 
              |
| 259 | 261 | 
                  0.0101  | 
              
| 260 | 
                  - First release  | 
              |
| 262 | 
                  + - First release  | 
              
| ... | ... | 
                  @@ -1,6 +1,6 @@  | 
              
| 1 | 1 | 
                  package DBIx::Custom;  | 
              
| 2 | 2 | 
                   | 
              
| 3 | 
                  -our $VERSION = '0.1648';  | 
              |
| 3 | 
                  +our $VERSION = '0.1649';  | 
              |
| 4 | 4 | 
                   | 
              
| 5 | 5 | 
                  use 5.008001;  | 
              
| 6 | 6 | 
                  use strict;  | 
              
| ... | ... | 
                  @@ -552,12 +552,12 @@ sub select {
                 | 
              
| 552 | 552 | 
                       my $columns   = $args{column} || [];
                 | 
              
| 553 | 553 | 
                       my $selection = $args{selection} || '';
                 | 
              
| 554 | 554 | 
                       my $where     = $args{where} || {};
                 | 
              
| 555 | 
                  -    my $relation  = $args{relation};
                 | 
              |
| 555 | 
                  +    my $relation  = $args{relation} || {};
                 | 
              |
| 556 | 556 | 
                       my $append    = $args{append};
                 | 
              
| 557 | 557 | 
                       my $filter    = $args{filter};
                 | 
              
| 558 | 558 | 
                   | 
              
| 559 | 
                  - # Relation table  | 
              |
| 560 | 
                  -    if (!$selection && $relation) {
                 | 
              |
| 559 | 
                  + # Relation  | 
              |
| 560 | 
                  +    if (!$selection && keys %$relation) {
                 | 
              |
| 561 | 561 | 
                           foreach my $rcolumn (keys %$relation) {
                 | 
              
| 562 | 562 | 
                  my $table1 = (split (/\./, $rcolumn))[0];  | 
              
| 563 | 563 | 
                               my $table2 = (split (/\./, $relation->{$rcolumn}))[0];
                 | 
              
| ... | ... | 
                  @@ -568,8 +568,8 @@ sub select {
                 | 
              
| 568 | 568 | 
                  $table1_exists = 1 if $table eq $table1;  | 
              
| 569 | 569 | 
                  $table2_exists = 1 if $table eq $table2;  | 
              
| 570 | 570 | 
                  }  | 
              
| 571 | 
                  - push @$tables, $table1 unless $table1_exists;  | 
              |
| 572 | 
                  - push @$tables, $table2 unless $table2_exists;  | 
              |
| 571 | 
                  + unshift @$tables, $table1 unless $table1_exists;  | 
              |
| 572 | 
                  + unshift @$tables, $table2 unless $table2_exists;  | 
              |
| 573 | 573 | 
                  }  | 
              
| 574 | 574 | 
                  }  | 
              
| 575 | 575 | 
                   | 
              
| ... | ... | 
                  @@ -624,7 +624,7 @@ sub select {
                 | 
              
| 624 | 624 | 
                  push @sql, $swhere;  | 
              
| 625 | 625 | 
                   | 
              
| 626 | 626 | 
                  # Relation  | 
              
| 627 | 
                  -    if (!$selection && $relation) {
                 | 
              |
| 627 | 
                  +    if (!$selection && keys %$relation) {
                 | 
              |
| 628 | 628 | 
                  push @sql, $swhere eq '' ? 'where' : 'and';  | 
              
| 629 | 629 | 
                           foreach my $rcolumn (keys %$relation) {
                 | 
              
| 630 | 630 | 
                  my $table1 = (split (/\./, $rcolumn))[0];  | 
              
| ... | ... | 
                  @@ -671,6 +671,10 @@ sub select_at {
                 | 
              
| 671 | 671 | 
                       my $primary_keys = delete $args{primary_key};
                 | 
              
| 672 | 672 | 
                  $primary_keys = [$primary_keys] unless ref $primary_keys;  | 
              
| 673 | 673 | 
                   | 
              
| 674 | 
                  + # Table  | 
              |
| 675 | 
                  +    croak qq{"table" option must be specified} unless $args{table};
                 | 
              |
| 676 | 
                  +    my $table = ref $args{table} ? $args{table}->[-1] : $args{table};
                 | 
              |
| 677 | 
                  +  | 
              |
| 674 | 678 | 
                  # Where clause  | 
              
| 675 | 679 | 
                       my $where = {};
                 | 
              
| 676 | 680 | 
                       if (exists $args{where}) {
                 | 
              
| ... | ... | 
                  @@ -678,7 +682,7 @@ sub select_at {
                 | 
              
| 678 | 682 | 
                  $where_columns = [$where_columns] unless ref $where_columns;  | 
              
| 679 | 683 | 
                   | 
              
| 680 | 684 | 
                           for(my $i = 0; $i < @$primary_keys; $i ++) {
                 | 
              
| 681 | 
                  -           $where->{$primary_keys->[$i]} = $where_columns->[$i];
                 | 
              |
| 685 | 
                  +           $where->{$table . '.' . $primary_keys->[$i]} = $where_columns->[$i];
                 | 
              |
| 682 | 686 | 
                  }  | 
              
| 683 | 687 | 
                  }  | 
              
| 684 | 688 | 
                       elsif (exists $args{param}) {
                 | 
              
| ... | ... | 
                  @@ -313,7 +313,7 @@ Following SQL is executed.  | 
              
| 313 | 313 | 
                  Next example.  | 
              
| 314 | 314 | 
                   | 
              
| 315 | 315 | 
                  my $result = $dbi->select(  | 
              
| 316 | 
                  - table => ['book', 'rental'],  | 
              |
| 316 | 
                  + table => 'book',  | 
              |
| 317 | 317 | 
                           where    => {'book.name' => 'Perl'},
                 | 
              
| 318 | 318 | 
                           relation => {'book.id' => 'rental.book_id'}
                 | 
              
| 319 | 319 | 
                  );  | 
              
| ... | ... | 
                  @@ -317,7 +317,7 @@ C<column>は列名、C<where>は条件です。  | 
              
| 317 | 317 | 
                  次のサンプルです。  | 
              
| 318 | 318 | 
                   | 
              
| 319 | 319 | 
                  my $result = $dbi->select(  | 
              
| 320 | 
                  - table => ['book', 'rental'],  | 
              |
| 320 | 
                  + table => 'book',  | 
              |
| 321 | 321 | 
                           where    => {book.name => 'Perl'},
                 | 
              
| 322 | 322 | 
                           relation => {'book.id' => 'rental.book_id'}
                 | 
              
| 323 | 323 | 
                  );  | 
              
| ... | ... | 
                  @@ -51,12 +51,39 @@ sub method {
                 | 
              
| 51 | 51 | 
                  return $self;  | 
              
| 52 | 52 | 
                  }  | 
              
| 53 | 53 | 
                   | 
              
| 54 | 
                  -sub insert     { my $self = shift; $self->dbi->insert(table => $self->table, @_) }
                 | 
              |
| 55 | 
                  -sub update     { my $self = shift; $self->dbi->update(table => $self->table, @_) }
                 | 
              |
| 56 | 
                  -sub update_all { my $self = shift; $self->dbi->update_all(table => $self->table, @_) }
                 | 
              |
| 57 | 
                  -sub delete     { my $self = shift; $self->dbi->delete(table => $self->table, @_) }
                 | 
              |
| 58 | 
                  -sub delete_all { my $self = shift; $self->dbi->delete_all(table => $self->table, @_) }
                 | 
              |
| 59 | 
                  -sub select     { my $self = shift; $self->dbi->select(table => $self->table, @_) }
                 | 
              |
| 54 | 
                  +sub insert {
                 | 
              |
| 55 | 
                  + my $self = shift;  | 
              |
| 56 | 
                  + $self->dbi->insert(table => $self->table, @_);  | 
              |
| 57 | 
                  +}  | 
              |
| 58 | 
                  +  | 
              |
| 59 | 
                  +sub update {
                 | 
              |
| 60 | 
                  + my $self = shift;  | 
              |
| 61 | 
                  + $self->dbi->update(table => $self->table, @_)  | 
              |
| 62 | 
                  +}  | 
              |
| 63 | 
                  +  | 
              |
| 64 | 
                  +sub update_all {
                 | 
              |
| 65 | 
                  + my $self = shift;  | 
              |
| 66 | 
                  + $self->dbi->update_all(table => $self->table, @_);  | 
              |
| 67 | 
                  +}  | 
              |
| 68 | 
                  +  | 
              |
| 69 | 
                  +sub delete {
                 | 
              |
| 70 | 
                  + my $self = shift;  | 
              |
| 71 | 
                  + $self->dbi->delete(table => $self->table, @_);  | 
              |
| 72 | 
                  +}  | 
              |
| 73 | 
                  +  | 
              |
| 74 | 
                  +sub delete_all {
                 | 
              |
| 75 | 
                  + my $self = shift;  | 
              |
| 76 | 
                  + $self->dbi->delete_all(table => $self->table, @_);  | 
              |
| 77 | 
                  +}  | 
              |
| 78 | 
                  +  | 
              |
| 79 | 
                  +sub select {
                 | 
              |
| 80 | 
                  + my $self = shift;  | 
              |
| 81 | 
                  + $self->dbi->select(  | 
              |
| 82 | 
                  + table => $self->table,  | 
              |
| 83 | 
                  + relation => $self->relation,  | 
              |
| 84 | 
                  + @_  | 
              |
| 85 | 
                  + );  | 
              |
| 86 | 
                  +}  | 
              |
| 60 | 87 | 
                   | 
              
| 61 | 88 | 
                   sub update_at {
                 | 
              
| 62 | 89 | 
                  my $self = shift;  | 
              
| ... | ... | 
                  @@ -84,9 +111,9 @@ sub select_at {
                 | 
              
| 84 | 111 | 
                  return $self->dbi->select_at(  | 
              
| 85 | 112 | 
                  table => $self->table,  | 
              
| 86 | 113 | 
                  primary_key => $self->primary_key,  | 
              
| 114 | 
                  + relation => $self->relation,  | 
              |
| 87 | 115 | 
                  @_  | 
              
| 88 | 116 | 
                  );  | 
              
| 89 | 
                  - return $self;  | 
              |
| 90 | 117 | 
                  }  | 
              
| 91 | 118 | 
                   | 
              
| 92 | 119 | 
                   sub DESTROY { }
                 | 
              
| ... | ... | 
                  @@ -1558,3 +1558,28 @@ $row = $result->fetch_hash_first;  | 
              
| 1558 | 1558 | 
                   is($row->{key1}, 1);
                 | 
              
| 1559 | 1559 | 
                   is($row->{key2}, 2);
                 | 
              
| 1560 | 1560 | 
                   is($row->{key3}, 3);
                 | 
              
| 1561 | 
                  +  | 
              |
| 1562 | 
                  +  | 
              |
| 1563 | 
                  +test 'model select relation';  | 
              |
| 1564 | 
                  +{
                 | 
              |
| 1565 | 
                  + package MyDBI7;  | 
              |
| 1566 | 
                  +  | 
              |
| 1567 | 
                  + use base 'DBIx::Custom';  | 
              |
| 1568 | 
                  +  | 
              |
| 1569 | 
                  +    sub connect {
                 | 
              |
| 1570 | 
                  + my $self = shift->SUPER::connect(@_);  | 
              |
| 1571 | 
                  +  | 
              |
| 1572 | 
                  +        $self->include_model('MyModel6');
                 | 
              |
| 1573 | 
                  +  | 
              |
| 1574 | 
                  + return $self;  | 
              |
| 1575 | 
                  + }  | 
              |
| 1576 | 
                  +}  | 
              |
| 1577 | 
                  +$dbi = MyDBI7->connect($NEW_ARGS->{0});
                 | 
              |
| 1578 | 
                  +$dbi->execute($CREATE_TABLE->{0});
                 | 
              |
| 1579 | 
                  +$dbi->execute($CREATE_TABLE->{2});
                 | 
              |
| 1580 | 
                  +$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
                 | 
              |
| 1581 | 
                  +$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
                 | 
              |
| 1582 | 
                  +$result = $dbi->model('table1')->select(column => ['key3'], where => {'table1.key1' => 1});
                 | 
              |
| 1583 | 
                  +is($result->fetch_hash_first->{key3}, 3);
                 | 
              |
| 1584 | 
                  +$result = $dbi->model('table1')->select_at(column => ['key3'], where => [1]);
                 | 
              |
| 1585 | 
                  +is($result->fetch_hash_first->{key3}, 3);
                 | 
              
| ... | ... | 
                  @@ -0,0 +1,5 @@  | 
              
| 1 | 
                  +package MyModel6;  | 
              |
| 2 | 
                  +  | 
              |
| 3 | 
                  +use base 'DBIx::Custom::Model';  | 
              |
| 4 | 
                  +  | 
              |
| 5 | 
                  +1;  | 
              
| ... | ... | 
                  @@ -0,0 +1,14 @@  | 
              
| 1 | 
                  +package MyModel6::table1;  | 
              |
| 2 | 
                  +  | 
              |
| 3 | 
                  +use base 'MyModel6';  | 
              |
| 4 | 
                  +  | 
              |
| 5 | 
                  +__PACKAGE__->attr(  | 
              |
| 6 | 
                  +    relation => sub {
                 | 
              |
| 7 | 
                  +        {
                 | 
              |
| 8 | 
                  + 'table1.key1' => 'table2.key1'  | 
              |
| 9 | 
                  + }  | 
              |
| 10 | 
                  + },  | 
              |
| 11 | 
                  +    primary_key => sub { ['key1'] }
                 | 
              |
| 12 | 
                  +);  | 
              |
| 13 | 
                  +  | 
              |
| 14 | 
                  +1;  | 
              
| ... | ... | 
                  @@ -0,0 +1,5 @@  | 
              
| 1 | 
                  +package MyModel6::table2;  | 
              |
| 2 | 
                  +  | 
              |
| 3 | 
                  +use base 'MyModel6';  | 
              |
| 4 | 
                  +  | 
              |
| 5 | 
                  +1;  |