Author: spadkins
Date: Mon Sep 4 12:00:52 2006
New Revision: 6848
Modified:
p5ee/trunk/App-Repository/CHANGES
p5ee/trunk/App-Repository/MANIFEST
p5ee/trunk/App-Repository/Makefile.PL
p5ee/trunk/App-Repository/TODO
p5ee/trunk/App-Repository/lib/App/Repository.pm
p5ee/trunk/App-Repository/lib/App/RepositoryObject.pm
p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectDomain.pm
p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm
p5ee/trunk/App-Repository/lib/App/ValueDomain/Repository.pm
p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTableColumns.pm
p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTables.pm
Log:
freeze for 0.964
Modified: p5ee/trunk/App-Repository/CHANGES
==============================================================================
--- p5ee/trunk/App-Repository/CHANGES (original)
+++ p5ee/trunk/App-Repository/CHANGES Mon Sep 4 12:00:52 2006
@@ -2,6 +2,13 @@
# CHANGE LOG
#########################################
+0.964
+ x add bin/dbget
+ x add default params and params that don't relate to column names
+ x fix index hints.
+ x clean up MySQL explain
+ x change author email to [email protected]
+
0.963
x add support for qualified classes on a single table (i.e. get_object("person",...)
may return an App::RepositoryObject::Man or an App::RepositoryObject::Woman depending
Modified: p5ee/trunk/App-Repository/MANIFEST
==============================================================================
--- p5ee/trunk/App-Repository/MANIFEST (original)
+++ p5ee/trunk/App-Repository/MANIFEST Mon Sep 4 12:00:52 2006
@@ -11,6 +11,7 @@
lib/App/SessionObject/RepositoryObjectSet.pm
lib/App/SessionObject/RepositoryObjectDomain.pm
lib/App/ValueDomain/Repository.pm
+bin/dbget
t/DBI-connect.t
t/DBI-delete.t
t/DBI-getset.t
Modified: p5ee/trunk/App-Repository/Makefile.PL
==============================================================================
--- p5ee/trunk/App-Repository/Makefile.PL (original)
+++ p5ee/trunk/App-Repository/Makefile.PL Mon Sep 4 12:00:52 2006
@@ -7,15 +7,20 @@
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
+my @programs = (
+ "bin/dbget",
+);
+
%opts = (
- 'NAME' => 'App-Repository',
'DISTNAME' => 'App-Repository',
- 'VERSION' => '0.963',
- 'PREREQ_PM' => { #'App::Context' => 0, # core services
- 'DBI' => 0, # database access
+ 'VERSION' => '0.964',
+ 'EXE_FILES' => [ @programs ],
+ 'PREREQ_PM' => {
+ 'App::Options' => "0.01", # core services
+ 'App::Context' => "0.01", # core services
+ 'DBI' => "0.01", # database access
+ 'DBIx::Compat' => "0.01", # database compatibility
},
- 'dist' => {'COMPRESS'=>'gzip -9f', 'SUFFIX' => 'gz',
- 'ZIP'=>'/usr/bin/zip','ZIPFLAGS'=>'-rl'},
);
######################################################################
Modified: p5ee/trunk/App-Repository/TODO
==============================================================================
--- p5ee/trunk/App-Repository/TODO (original)
+++ p5ee/trunk/App-Repository/TODO Mon Sep 4 12:00:52 2006
@@ -9,6 +9,8 @@
o go over the documentation which is terrible and has been completely neglected
o ensure it runs (and tests cleanly!) on MSWin32
o get it to run against Oracle
+ o create a metadata-producer utility
+ o remove dependence on DBIx::Compat (remove from Makefile.PL)
Other stuff
o caching rows by key
Modified: p5ee/trunk/App-Repository/lib/App/Repository.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/Repository.pm Mon Sep 4 12:00:52 2006
@@ -888,20 +888,30 @@
return($columns);
}
+# Called from get_rows()/get_row() in preparation for expression evaluation.
+# i.e. when there is at least one column in the selected list which is an
+# "expression" (i.e. {table}{foo}{column}{pi_2}{expr} => "{pi}/2").
+# If there are expressions defined in a get_rows() request, they may depend
+# on other columns which are not included in the columns requested. In that
+# case, we need to add them.
sub extend_columns {
&App::sub_entry if ($App::trace);
my ($self, $table, $cols) = @_;
my (%colidx, $expr_columns, $expr, $extended, $col);
+ # Take note of which columns are alread in the list of requested columns.
for (my $i = 0; $i <= $#$cols; $i++) {
$col = $cols->[$i];
$colidx{$col} = $i;
}
+ # Search each {expr} column for what other columns it depends on.
my $column_defs = $self->{table}{$table}{column};
for (my $i = 0; $i <= $#$cols; $i++) {
$col = $cols->[$i];
+ # The column may have an explicit definition of the columns it depends on.
if ($column_defs->{$col}{expr_columns}) {
$expr_columns = $column_defs->{$col}{expr_columns};
}
+ # or we may have to parse the {expr} itself to determine them.
elsif ($column_defs->{$col}{expr}) {
$expr = $column_defs->{$col}{expr};
$expr =~ s/^[^\{\}]*\{//;
@@ -912,17 +922,22 @@
else {
next;
}
+ # Go through each column required for the expression and ensure it's
+ # included in the list of requested columns. If not, tack it on at
+ # the end.
foreach my $expr_col (@$expr_columns) {
if (! defined $colidx{$expr_col}) {
if (!$extended) {
$cols = [ @$cols ]; # make a copy. don't extend original.
$extended = 1;
}
- push(@$cols, $expr_col);
+ push(@$cols, $expr_col); # extend the column list.
$colidx{$expr_col} = $#$cols;
}
}
}
+ # Returns the column list which is suitably extended to satisfy any
+ # expressions there might be.
&App::sub_exit($cols) if ($App::trace);
return($cols);
}
@@ -3523,7 +3538,7 @@
=head1 ACKNOWLEDGEMENTS
- * Author: Stephen Adkins <[email protected]>
+ * Author: Stephen Adkins <[email protected]>
* License: This is free software. It is licensed under the same terms as Perl itself.
=head1 SEE ALSO
Modified: p5ee/trunk/App-Repository/lib/App/RepositoryObject.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/RepositoryObject.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/RepositoryObject.pm Mon Sep 4 12:00:52 2006
@@ -212,7 +212,7 @@
=head1 ACKNOWLEDGEMENTS
- * Author: Stephen Adkins <[email protected]>
+ * Author: Stephen Adkins <[email protected]>
* License: This is free software. It is licensed under the same terms as Perl itself.
=head1 SEE ALSO
Modified: p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectDomain.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectDomain.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectDomain.pm Mon Sep 4 12:00:52 2006
@@ -153,7 +153,7 @@
=head1 ACKNOWLEDGEMENTS
- * Author: Stephen Adkins <[email protected]>
+ * Author: Stephen Adkins <[email protected]>
* License: This is free software. It is licensed under the same terms as Perl itself.
=head1 SEE ALSO
Modified: p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm Mon Sep 4 12:00:52 2006
@@ -415,7 +415,7 @@
=head1 ACKNOWLEDGEMENTS
- * Author: Stephen Adkins <[email protected]>
+ * Author: Stephen Adkins <[email protected]>
* License: This is free software. It is licensed under the same terms as Perl itself.
=head1 SEE ALSO
Modified: p5ee/trunk/App-Repository/lib/App/ValueDomain/Repository.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/ValueDomain/Repository.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/ValueDomain/Repository.pm Mon Sep 4 12:00:52 2006
@@ -193,7 +193,7 @@
=head1 ACKNOWLEDGEMENTS
- * Author: Stephen Adkins <[email protected]>
+ * Author: Stephen Adkins <[email protected]>
* License: This is free software. It is licensed under the same terms as Perl itself.
=head1 SEE ALSO
Modified: p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTableColumns.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTableColumns.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTableColumns.pm Mon Sep 4 12:00:52 2006
@@ -112,7 +112,7 @@
=head1 ACKNOWLEDGEMENTS
- * Author: Stephen Adkins <[email protected]>
+ * Author: Stephen Adkins <[email protected]>
* License: This is free software. It is licensed under the same terms as Perl itself.
=head1 SEE ALSO
Modified: p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTables.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTables.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTables.pm Mon Sep 4 12:00:52 2006
@@ -95,7 +95,7 @@
=head1 ACKNOWLEDGEMENTS
- * Author: Stephen Adkins <[email protected]>
+ * Author: Stephen Adkins <[email protected]>
* License: This is free software. It is licensed under the same terms as Perl itself.
=head1 SEE ALSO
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.