[development] My first post: path_set_alias() and multiple aliases

David Metzler metzlerd at metzlerd.com
Sat Feb 21 16:58:10 UTC 2009

Short answer:
Yep don't count on the order of anything that doesn't have an order  
by clause.

Longer answer just cause some seem interested:
Most DB's (mysql included) will return unordered expressions in the  
order that they are retrieved, which sometimes equates to order of  
insertion but not always.  All kinds of things can change that.   
Indexes get use because of data in the where clause. Maintenance  
activities in some databases will change the order of storage. Some  
databases will reuse of deleted rows causing the order to be  
different.  Some databases store multiple tables data in the same  
file (oracle) and this can really get crazy when space gets reused.

The biggest real world example of this is that in one of my larger  
databases, the order of things changed when we exported and re- 
imported data (to facilitate a character set conversion), which  
exposed a whole bunch of queries where the unfiltered list seemed to  
be broken.  These were just queries that didn't have order by clauses  
in the expression.  But I've seen query plans change in upgrades of  
database software also.

So while it may seem to work, even across databases, you really  
shouldn't count on it, not even within a database architecture.


On Feb 20, 2009, at 10:41 AM, Peter Droogmans wrote:

> My 2c
> If I remember correctly from my DB classes, all tables in a  
> relational databases are unordered, you cannot assume an order. My  
> experience is that all databases use table (or insertion) order for  
> simple select statements (like select x from y), but you might get  
> "strange" ordering while using grouping / having clauses. So the  
> safest is to specify the order, you never know if mysql is going to  
> behave differently.
> Peter
> -----Original Message-----
> From: development-bounces at drupal.org [mailto:development- 
> bounces at drupal.org] On Behalf Of Andrew Berry
> Sent: donderdag 19 februari 2009 15:37
> To: development at drupal.org
> Subject: Re: [development] My first post: path_set_alias() and  
> multiple aliases
> On 19-Feb-09, at 3:59 AM, Dipen wrote:
>> As an API, I think it should return all aliases of a path or should
>> take an additional parameter like 'all','latest','oldest' depending
>> on how you want it. But yeah it returns the oldest alias and just
>> one entry.
> I seem to remember that unless you do an ORDER BY that the order of
> returned results are implementation dependent. I can't seem to find
> anything to back that up other than a few old notes though. So while
> MySQL returns the first matched result in order of insertion, I think
> that could change when using some other RDBMS.
> Anyone have any more info?
> --Andrew

More information about the development mailing list