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

Reply via email to