From: Kristian Köhntopp Date: May 3 2006 9:13am Subject: Re: __rowid ... List-Archive: http://lists.mysql.com/ug-rhein-neckar/10 Message-Id: <200605031113.14513.kris@mysql.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Wednesday, 3. May 2006 10:11, Hagen H=F6pfner wrote: > However, ich erinnere mich, dass erw=E4hnt wurde, > dass man mit __rowid auf einen internen Identifikator der Datens=E4tze > zugreifen k=F6nne.=20 In den Quellen von 5.0.18 findet sich in sql/sql_base.cc eine FUnktion=20 find_field_in_table(). Dort gibt es ein Flag "allow_rowid", das der Funktio= n=20 mitgegeben wird: /* Find field by name in a base table or a view with temp table algorithm. SYNOPSIS find_field_in_table() thd thread handler table table where to search for the field name name of field length length of name allow_rowid do allow finding of "_rowid" field? cached_field_index_ptr cached position in field list (used to spee= dup lookup for fields in prepared tables) RETURN 0 field is not found # pointer to field */ =46ield * find_field_in_table(THD *thd, TABLE *table, const char *name, uint length, bool allow_rowid, uint *cached_field_index_ptr) { =2E.. Die Abfrage sieht dann wie folgt aus: if (field_ptr && *field_ptr) =2E.. else { if (!allow_rowid || my_strcasecmp(system_charset_info, name, "_rowid") || !(field=3Dtable->rowid_field)) DBUG_RETURN((Field*) 0); } Das hei=DFt, das Feld hei=DFt, wenn es zugreifbar ist, wahrscheinlich _rowi= d=20 (Unterstrich rowid). Es ist jedoch nur dann sichtbar, wenn die Funktion=20 find_field_in_table mit dem entsprechenden Erlaubnisflag allow_rowid =3D tr= ue=20 aufgerufen wird. Mir ist aber im Moment nicht bekannt, wann diese Funktion (oder=20 find_field_in_table_ref) mit diesem Flag wie herum gesetzt aufgerufen wird. Kristian =2D-=20 Kristian Koehntopp, Senior Consultant, MySQL AB, Karlsruhe, Germany Skype: kristian.koehntopp, MySQL-SIP 4519, Irc: Isotopp, ICQ: 309698212 Email: kris@stripped, Timezone: CEST (GMT+0200) MySQL Consulting: http://mysql.com/consulting