What do you think of exposing the Alzabo::Runtime::Row::_get_data method, with a name like data()? I really like being able to get a hash of columns -> values to return to external components. Here is a patch ( btw ) to make the column list optional in _get_data:
 
+++ /home/dana/perl/lib/site_perl/5.6.1/Alzabo/Runtime/Row.pm     Tue Jun 19 17:01:30 2001
@@ -98,12 +98,12 @@
 sub _get_data
 {
     my $self = shift;
-    my @cols = @_;
+    my @cols = $self->table->columns(@_);
 
     my $driver = $self->table->schema->driver;
 
     my $sql = ( $self->table->schema->sqlmaker->
-               select( $self->table->columns(@cols) )->
+               select( @cols )->
                from( $self->table ) );
     $self->_where($sql);
 
@@ -112,7 +112,7 @@
        or $self->_no_such_row_error;
 
     my %data;
-    @data{@cols} = @row;
+    @data{ map { $_->name; } @cols } = @row;
 
     return %data;
 }
On the other hand, it may be easier, sinse _get_data touches other functions, to just add a wrapper function like this:
 
sub data {
  my $self = shift;
  my @cols = @_ ? @_ : map { $_->name; } $self->table->columns;
 
  return $self->_get_data(@cols);
}
 
thoughts?
dpk