[drupal-devel] PHP5 (was: /includes common.inc)

Negyesi Karoly karoly at negyesi.net
Sat Jan 22 13:11:40 UTC 2005


> I just wanted to let you know that I upgraded my development environment
> to PHP5.  The reason?  I believe that it is important that Drupal 4.6
> will work with PHP5.

Aye. And, as SQLite is default with PHP5, it is now time, to talk about 
that, too: http://drupal.org/node/13192 

As there was no interest, I've stopped the development. ALTER TABLE is 
still missing but as I have written, it is done by someone else, just need 
copy-paste. Most importantly, some decisions are missing.

If you take a look at 
http://cvs.drupal.org/viewcvs/drupal/contributions/sandbox/chx/database.sqlite.inc?rev=1.2
you'll see some strange looking code, especially in the _db_query fuction.

Problem is, that if you SELECT table1.field1 FROM table1,table2 then the 
result column is called table1.field1 -- to get what you expect you need 
SELECT table1.field1 AS field1 FROM table1,table2. The problem is even 
better with SELECT table1.* FROM table1,table2 because you need to extract 
that * to be able to alias.

There are a few solutions. One, you may do a CREATE TEMPORARY VIEW on every 
SELECT statement. After that, you are SELECTing from one VIEW, so this 
effect does hit you. Alas, this is a bit slow. Not too much, but still.

Second, you may write some hellish-looking regexps to rewrite your queries. 
Problem is, you will need to debug those. And the expanding part is far 
from trivial. This solution is the best if you have more than a handful of 
records, 'cos the preparation time in PHP is much smaller than the SQLite 
execution time.

Third is, you rewrite every query in Drupal core to be properly aliased...

Ah, and one more SQLite bug: if there are aliased JOINed tables, forget 
USING clause. Thankfully, this appeared only once in Drupal core when I 
was coding this.

Regards

Karoly Negyesi



More information about the drupal-devel mailing list