| ... | ... | 
                  @@ -24,9 +24,9 @@ sub parse {
                 | 
              
| 24 | 24 | 
                   | 
              
| 25 | 25 | 
                  # Parse  | 
              
| 26 | 26 | 
                  ($key || '') =~ /^(?:(.+?)\.)?(.+?)(?:@(.+))?$/;  | 
              
| 27 | 
                  - $self->table($1);  | 
              |
| 28 | 
                  - $self->column($2);  | 
              |
| 29 | 
                  - $self->id($3);  | 
              |
| 27 | 
                  + $self->table($1 || '');  | 
              |
| 28 | 
                  + $self->column($2 || '');  | 
              |
| 29 | 
                  + $self->id($3 || '');  | 
              |
| 30 | 30 | 
                   | 
              
| 31 | 31 | 
                  return $self;  | 
              
| 32 | 32 | 
                  }  | 
              
| ... | ... | 
                  @@ -177,7 +177,7 @@ sub _build_query {
                 | 
              
| 177 | 177 | 
                   | 
              
| 178 | 178 | 
                  # Expand tag using tag processor  | 
              
| 179 | 179 | 
                  my ($expand, $key_infos)  | 
              
| 180 | 
                  - = $tag_processor->($tag_name, $tag_args, $self->table);  | 
              |
| 180 | 
                  + = $tag_processor->($tag_name, $tag_args, $self->table || '');  | 
              |
| 181 | 181 | 
                   | 
              
| 182 | 182 | 
                  # Check tag processor return value  | 
              
| 183 | 183 | 
                               croak("Tag processor '$tag_name' must return (\$expand, \$key_infos)")
                 | 
              
| ... | ... | 
                  @@ -53,17 +53,3 @@ $dbi = DBIx::Custom::Basic->new($NEW_ARGS->{0});
                 | 
              
| 53 | 53 | 
                   ok($dbi->filters->{encode_utf8}, "$test : exists default_bind_filter");
                 | 
              
| 54 | 54 | 
                   ok($dbi->filters->{decode_utf8}, "$test : exists default_fetch_filter");
                 | 
              
| 55 | 55 | 
                   | 
              
| 56 | 
                  -$ret_val = $dbi->utf8_filter_on;  | 
              |
| 57 | 
                  -is($dbi->bind_filter, $dbi->filters->{encode_utf8}, 'default bind filter');
                 | 
              |
| 58 | 
                  -is($dbi->fetch_filter, $dbi->filters->{decode_utf8}, 'default fetch filter');
                 | 
              |
| 59 | 
                  -is(ref $ret_val, 'DBIx::Custom::Basic', "$test : retern value");  | 
              |
| 60 | 
                  -  | 
              |
| 61 | 
                  -$decoded_str = 'あ';  | 
              |
| 62 | 
                  -$encoded_str = $dbi->bind_filter->($decoded_str);  | 
              |
| 63 | 
                  -is($encoded_str, encode('UTF-8', $decoded_str), "$test : encode utf8");
                 | 
              |
| 64 | 
                  -is($decoded_str, $dbi->fetch_filter->($encoded_str), "$test : fetch_filter");  | 
              |
| 65 | 
                  -  | 
              |
| 66 | 
                  -$decoded_str = 'a';  | 
              |
| 67 | 
                  -$encoded_str = $dbi->bind_filter->($decoded_str);  | 
              |
| 68 | 
                  -is($encoded_str, encode('UTF-8', $decoded_str), "$test : upgrade and encode utf8");
                 | 
              |
| 69 | 
                  -is($decoded_str, $dbi->fetch_filter->($encoded_str), "$test : fetch_filter");  | 
              
| ... | ... | 
                  @@ -25,14 +25,14 @@ $datas = [  | 
              
| 25 | 25 | 
                           tmpl            => "a {?  k1} b {=  k2} {<> k3} {>  k4} {<  k5} {>= k6} {<= k7} {like k8}", ,
                 | 
              
| 26 | 26 | 
                  sql_expected => "a ? b k2 = ? k3 <> ? k4 > ? k5 < ? k6 >= ? k7 <= ? k8 like ?;",  | 
              
| 27 | 27 | 
                  key_infos_expected => [  | 
              
| 28 | 
                  -            {original_key => 'k1', table => '', column => 'k1', access_keys => [['k1']]},
                 | 
              |
| 29 | 
                  -            {original_key => 'k2', table => '', column => 'k2', access_keys => [['k2']]},
                 | 
              |
| 30 | 
                  -            {original_key => 'k3', table => '', column => 'k3', access_keys => [['k3']]},
                 | 
              |
| 31 | 
                  -            {original_key => 'k4', table => '', column => 'k4', access_keys => [['k4']]},
                 | 
              |
| 32 | 
                  -            {original_key => 'k5', table => '', column => 'k5', access_keys => [['k5']]},
                 | 
              |
| 33 | 
                  -            {original_key => 'k6', table => '', column => 'k6', access_keys => [['k6']]},
                 | 
              |
| 34 | 
                  -            {original_key => 'k7', table => '', column => 'k7', access_keys => [['k7']]},
                 | 
              |
| 35 | 
                  -            {original_key => 'k8', table => '', column => 'k8', access_keys => [['k8']]},
                 | 
              |
| 28 | 
                  +            {table => '', column => 'k1', id => ''},
                 | 
              |
| 29 | 
                  +            {table => '', column => 'k2', id => ''},
                 | 
              |
| 30 | 
                  +            {table => '', column => 'k3', id => ''},
                 | 
              |
| 31 | 
                  +            {table => '', column => 'k4', id => ''},
                 | 
              |
| 32 | 
                  +            {table => '', column => 'k5', id => ''},
                 | 
              |
| 33 | 
                  +            {table => '', column => 'k6', id => ''},
                 | 
              |
| 34 | 
                  +            {table => '', column => 'k7', id => ''},
                 | 
              |
| 35 | 
                  +            {table => '', column => 'k8', id => ''},
                 | 
              |
| 36 | 36 | 
                  ],  | 
              
| 37 | 37 | 
                  },  | 
              
| 38 | 38 | 
                       {
                 | 
              
| ... | ... | 
                  @@ -40,9 +40,9 @@ $datas = [  | 
              
| 40 | 40 | 
                           tmpl            => "{in k1 3};",
                 | 
              
| 41 | 41 | 
                  sql_expected => "k1 in (?, ?, ?);",  | 
              
| 42 | 42 | 
                  key_infos_expected => [  | 
              
| 43 | 
                  -            {original_key => 'k1', table => '', column => 'k1', access_keys => [['k1', [0]]]},
                 | 
              |
| 44 | 
                  -            {original_key => 'k1', table => '', column => 'k1', access_keys => [['k1', [1]]]},
                 | 
              |
| 45 | 
                  -            {original_key => 'k1', table => '', column => 'k1', access_keys => [['k1', [2]]]},
                 | 
              |
| 43 | 
                  +            {table => '', column => 'k1', id => '', pos => 0},
                 | 
              |
| 44 | 
                  +            {table => '', column => 'k1', id => '', pos => 1},
                 | 
              |
| 45 | 
                  +            {table => '', column => 'k1', id => '', pos => 2},
                 | 
              |
| 46 | 46 | 
                  ],  | 
              
| 47 | 47 | 
                  },  | 
              
| 48 | 48 | 
                   | 
              
| ... | ... | 
                  @@ -52,8 +52,8 @@ $datas = [  | 
              
| 52 | 52 | 
                           tmpl            => "{= a.k1} {= a.k2}",
                 | 
              
| 53 | 53 | 
                  sql_expected => "a.k1 = ? a.k2 = ?;",  | 
              
| 54 | 54 | 
                  key_infos_expected => [  | 
              
| 55 | 
                  -            {original_key => 'a.k1', table => 'a', column => 'k1', access_keys => [['a.k1'], ['a', 'k1']]},
                 | 
              |
| 56 | 
                  -            {original_key => 'a.k2', table => 'a', column => 'k2', access_keys => [['a.k2'], ['a', 'k2']]},
                 | 
              |
| 55 | 
                  +            {table => 'a', column => 'k1', id => ''},
                 | 
              |
| 56 | 
                  +            {table => 'a', column => 'k2', id => ''},
                 | 
              |
| 57 | 57 | 
                  ],  | 
              
| 58 | 58 | 
                  },  | 
              
| 59 | 59 | 
                       {   
                 | 
              
| ... | ... | 
                  @@ -61,10 +61,10 @@ $datas = [  | 
              
| 61 | 61 | 
                           tmpl            => "{in a.k1 2} {in b.k2 2}",
                 | 
              
| 62 | 62 | 
                  sql_expected => "a.k1 in (?, ?) b.k2 in (?, ?);",  | 
              
| 63 | 63 | 
                  key_infos_expected => [  | 
              
| 64 | 
                  -            {original_key => 'a.k1', table => 'a', column => 'k1', access_keys => [['a.k1', [0]], ['a', 'k1', [0]]]},
                 | 
              |
| 65 | 
                  -            {original_key => 'a.k1', table => 'a', column => 'k1', access_keys => [['a.k1', [1]], ['a', 'k1', [1]]]},
                 | 
              |
| 66 | 
                  -            {original_key => 'b.k2', table => 'b', column => 'k2', access_keys => [['b.k2', [0]], ['b', 'k2', [0]]]},
                 | 
              |
| 67 | 
                  -            {original_key => 'b.k2', table => 'b', column => 'k2', access_keys => [['b.k2', [1]], ['b', 'k2', [1]]]},
                 | 
              |
| 64 | 
                  +            {table => 'a', column => 'k1', id => '', pos => 0},
                 | 
              |
| 65 | 
                  +            {table => 'a', column => 'k1', id => '', pos => 1},
                 | 
              |
| 66 | 
                  +            {table => 'b', column => 'k2', id => '', pos => 0},
                 | 
              |
| 67 | 
                  +            {table => 'b', column => 'k2', id => '', pos => 1},
                 | 
              |
| 68 | 68 | 
                  ],  | 
              
| 69 | 69 | 
                  },  | 
              
| 70 | 70 | 
                       {
                 | 
              
| ... | ... | 
                  @@ -39,10 +39,9 @@ $dbi = DBIx::Custom::SQLite->new;  | 
              
| 39 | 39 | 
                  $dbi->connect_memory;  | 
              
| 40 | 40 | 
                   $ret_val = $dbi->do($CREATE_TABLE->{0});
                 | 
              
| 41 | 41 | 
                  ok(defined $ret_val, $test);  | 
              
| 42 | 
                  -$dbi->utf8_filter_on;  | 
              |
| 43 | 
                  -$dbi->insert('table1', {key1 => 'あ', key2 => 2});
                 | 
              |
| 44 | 
                  -$rows = $dbi->select('table1', {key1 => 'あ'})->fetch_hash_all;
                 | 
              |
| 45 | 
                  -is_deeply($rows, [{key1 => 'あ', key2 => 2}], "$test : select rows");
                 | 
              |
| 42 | 
                  +$dbi->insert('table1', {key1 => 'a', key2 => 2});
                 | 
              |
| 43 | 
                  +$rows = $dbi->select('table1', {key1 => 'a'})->fetch_hash_all;
                 | 
              |
| 44 | 
                  +is_deeply($rows, [{key1 => 'a', key2 => 2}], "$test : select rows");
                 | 
              |
| 46 | 45 | 
                   | 
              
| 47 | 46 | 
                  test 'connect_memory error';  | 
              
| 48 | 47 | 
                   eval{$dbi->connect_memory};
                 |