On 06/08/10 11:42, Tim Bunce wrote:
On Fri, Jun 04, 2010 at 04:12:18AM -0700, rehs...@cvs.perl.org wrote:
+This modules uses hash interfaces of two column file databases. While
+none of supported SQL engines have a support for indeces, following
s/indeces/indices/
+statements really do the same (even if they mean something completely
+different):
+
+ $sth->do( "insert into foo values (1, 'hello')" );
+
+ # this statement does ...
+ $sth->do( "update foo set v='world' where k=1" );
+ # ... the same as this statement
+ $sth->do( "insert into foo values (1, 'world')" );
Is this really necessary? Can't we get duplicate inserts and
updates of non-existent rows to behave in a sane manner?
The interface of the per-table API doesn't allow that :(
That's exactly the reason why I thought it's required to warn about that.
When I took over SQL::Statement and Tux got DBD::CSV, we talked each
other and discovered that an per-table API for indices is missing.
This is one goal I want to reach when developing SQL::Statement 2.0 - but
it will be a long road.
The hash/DBM style databases should be modeled as two column tables
with a unique constraint on the key column.
The table-API just knows: fetch_row, push_row, push_names and some
optimized routines to allow update/delete specific rows.
Jens