Path: csiph.com!eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dr.UgoGagliardelli" Newsgroups: it.comp.java Subject: Re: hsql Date: Tue, 20 Oct 2015 11:49:46 +0200 Organization: Aioe.org NNTP Server Lines: 32 Message-ID: References: <0afee42d-6c14-4209-9a7d-b3d1436c0709@googlegroups.com> NNTP-Posting-Host: +3z0s+YzjUgNSOnfi6TODw.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com it.comp.java:8702 Il 20.10.2015 11.18, Roberto Tempesti ha scritto: > Il 20/10/2015 09:36, Dr.UgoGagliardelli ha scritto: [...] > come vedi mi diletto a seguire anche questo n.g. (solo da lurker, per > carita'!); ho letto questa tua affermazione e mi interessa verificare di > avere capito bene: > > facendo una "select * from....." e' possibile che il risultato sia > imprevedibile sotto l'aspetto della sequenza dei campi? > > Grazie come sempre per la risposta. Beh, con imprevedibile intendo che non va dato per scontato. Immagino che in realta' l'ordinamento sia in qualche modo prevedibile, immagino anche che dipenda dall'implementazione. Ad esempio assumi che un certo db ordini i campi in ordine alfabetico, e che select * corrisponda a select a, b, c e che ad un certo punto venga aggiunta la colonna aa, conseguentemente diventa select a, aa, b, c quindi se nel programma hai utilizzato select * il programma potrebbe prendere un aa per un b; o al contrario se viene cancellata la colonna b la select * non sbaglia, il programma prendera' un c per un b, e vissero tutti felici e contenti! :) Con tutti i distinguo del caso, per carita'. Nel senso che, con un certo costo aggiuntivo di esecuzione, dal resultset puoi sempre selezionare i campi col nome e non con il numero d'ordine. Nell'esempio di cui sopra ho utilizzato l'ordine alfabetico per mera semplicita'. Lo standard direbbe che l'ordine delle colonne sia lo stesso del create table, ma che un alter table lo puo' modificare; il caso evidente e' alter table drop column, ma puo' succedere anche con l'alter column. E comunque mi sembra di ricordare qhe questa regola non sia mandatory, per cui sarebbe legittimo qualsiasi altro ordinamento dipendente dall'implementazione. Fatto sta che come best-practise e' consigliata la proiezione esplicita.