Hi Nico, thanks for the discussion - although this thread is dangerously close to becoming a stale debate rather than a helpful forum discussion.
In this light, I will try to be brief and then fight the urge to reply again.

You still seem to try and sell the usability of non-unique tables to me, I'm with you on that, no need to keep pushing it. What I'm saying is even though you can conjur up valid use-cases, I am not convinced it merrits the changeover for SQLite.

A B-Tree quite clearly imposes no need for uniqueness; the uniqueness requirement in SQLite3's WITHOUT ROWID almost certainly derives from PRIMARY KEY being a convenient syntactic source of columns for the primary index. There are alternatives to overloading existing syntax; MySQL has a suitable syntax, and even without it there are alternatives. Overloading syntax is not always free... Nico --

MySQL use internal row indexers for both INNO and ISAM table types (there are others of which I do not know the workings, though), the only difference is that A - they are not BTrees, which SQLite chose to use, and B - there is no way to access the internal row pointers in MySQL through SQL statements and the only reason it's accessible in SQLite is because it mimics a normal PKey - for the sole reason that it essentially is one.

Again, I might be wrong about this and rowids may have been designed in lieu of internal pointers specifically to be used by people for some reason or the other. A Dev with more insight weighing in on this might be a more trustworthy source.

Either way, for whatever reason(s) rowids were used, now the PKey is chosen to replace rowid since for the most part, tables that can perform well sans said rowid are typically those that already have PKeys and if we drop the rowid, SQLite can STILL directly dereference any row inside a table because it still has a unique Key to go on. I very much doubt your contention that it was merely a "convenient source of columns" - in fact, I would like to postulate that it would be impossible, as it stands now, for SQLite to directly access table rows missing both a Primary key and rowid - not merely inconvenient.... but I could be wrong.

Cheers!
Ryan

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to