Changeset 29869
- Timestamp:
- 02/10/09 23:19:08 (4 years ago)
- Location:
- lang/perl/DBIx-Skinny/trunk
- Files:
-
- 2 modified
-
lib/DBIx/Skinny/Row.pm (modified) (9 diffs)
-
tools/benchmark.pl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/DBIx-Skinny/trunk/lib/DBIx/Skinny/Row.pm
r29789 r29869 2 2 use strict; 3 3 use warnings; 4 use DBIx::Skinny::Accessor;5 4 use Carp; 6 5 7 mk_accessors(qw/ row_data skinny select_columns opt_table_info get_column_cache /); 8 9 sub init { 10 my $self = shift;11 $self->select_columns([keys %{$self->row_data}]);6 sub new { 7 my ($class, $args) = @_; 8 my $self = bless {%$args}, $class; 9 $self->{select_columns} = [keys %{$self->{row_data}}]; 10 return $self; 12 11 } 13 12 … … 16 15 my $class = ref $self; 17 16 18 for my $alias ( @{$self-> select_columns} ) {17 for my $alias ( @{$self->{select_columns}} ) { 19 18 (my $col = lc $alias) =~ s/.+\.(.+)/$1/o; 20 19 next if $class->can($col); … … 23 22 } 24 23 25 $self->{get_column_cache } = {};24 $self->{get_column_cached} = {}; 26 25 } 27 26 … … 32 31 my $self = shift; 33 32 34 unless ( $self->{get_column_cache }->{$col} ) {33 unless ( $self->{get_column_cached}->{$col} ) { 35 34 my $data = $self->get_column($col); 36 $self->{get_column_cache }->{$col} = $self->skinny->schema->call_inflate($col, $data);35 $self->{get_column_cached}->{$col} = $self->{skinny}->schema->call_inflate($col, $data); 37 36 } 38 $self->{get_column_cache }->{$col};37 $self->{get_column_cached}->{$col}; 39 38 }; 40 39 } … … 43 42 my ($self, $col) = @_; 44 43 45 my $data = $self-> row_data->{$col};44 my $data = $self->{row_data}->{$col}; 46 45 47 $data = $self-> skinny->schema->utf8_on($col, $data);46 $data = $self->{skinny}->schema->utf8_on($col, $data); 48 47 49 48 return $data; … … 54 53 55 54 my %data; 56 for my $col ( @{$self-> select_columns} ) {55 for my $col ( @{$self->{select_columns}} ) { 57 56 $data{$col} = $self->get_column($col); 58 57 } … … 62 61 sub insert { 63 62 my $self = shift; 64 $self-> skinny->find_or_create($self->opt_table_info, $self->get_columns);63 $self->{skinny}->find_or_create($self->{opt_table_info}, $self->get_columns); 65 64 } 66 65 67 66 sub update { 68 67 my ($self, $args, $table) = @_; 69 $table ||= $self-> opt_table_info;68 $table ||= $self->{opt_table_info}; 70 69 my $where = $self->_update_or_delete_cond($table); 71 $self-> skinny->update($table, $args, $where);70 $self->{skinny}->update($table, $args, $where); 72 71 } 73 72 74 73 sub delete { 75 74 my ($self, $table) = @_; 76 $table ||= $self-> opt_table_info;75 $table ||= $self->{opt_table_info}; 77 76 my $where = $self->_update_or_delete_cond($table); 78 $self-> skinny->delete($table, $where);77 $self->{skinny}->delete($table, $where); 79 78 } 80 79 … … 86 85 } 87 86 88 my $schema_info = $self-> skinny->schema->schema_info;87 my $schema_info = $self->{skinny}->schema->schema_info; 89 88 unless ( $schema_info->{$table} ) { 90 89 croak "unknown table: $table"; … … 97 96 } 98 97 99 unless (grep { $pk eq $_ } @{$self-> select_columns}) {98 unless (grep { $pk eq $_ } @{$self->{select_columns}}) { 100 99 croak "can't get primary column in your query."; 101 100 } -
lang/perl/DBIx-Skinny/trunk/tools/benchmark.pl
r29868 r29869 37 37 2009-02-10 23:10 38 38 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 33.80/s (n=73) 39 2009-02-10 23:16 40 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 39.34/s (n=83) 39 41
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)