xmldb index name munging

xmldb index name munging

av Howard Miller -
Antall svar: 3
Bilde av Core developers Bilde av Documentation writers Bilde av Particularly helpful Moodlers Bilde av Peer reviewers Bilde av Plugin developers
Am I right in thinking that the names of indexes get munged by Moodle from whatever is in the code when they are created... example...

new xmldb_index('contextid-lowerboundary-letter'.....

...in the code, seems to end up as something like, 'mdl_gradlett_conlowlet_uix' in the database. I'm a bit confused about where this occurs.
Gjennomsnittlig vurdering: -
Som svar til Howard Miller

Re: xmldb index name munging

av Dan Poltawski -

IIRC it is completely under the control of the database driver. Presumably because of DB specific restrictions.

edit: Don't know how accurate/up to date this is, but see Development:XMLDB_key_and_index_naming and sql_generator::getNameForObject.

Som svar til Dan Poltawski

Re: xmldb index name munging

av Howard Miller -
Bilde av Core developers Bilde av Documentation writers Bilde av Particularly helpful Moodlers Bilde av Peer reviewers Bilde av Plugin developers
Ahh.... that's the one. Thanks.

It's really hard to debug upgrade problems with duplicate indexes and stuff if you're not sure you've got the right one. Thanks smiler
Som svar til Howard Miller

Re: xmldb index name munging

av Dan Poltawski -

I suppose its this part which is difficult and looks like we need to do it to fit into the character limits on various dbs:

columnames_abbreviated will be an abbreviated representation of the columns used by the object (index, key, sequence) generated by the concatenation of the first 3 chars of each field. For example, one index over the "name, level, context" fields be converted to the "namlevcon" abbreviation.

[...]

If any of the calculated names excess the infamous 30cc. the name will be reduced by removing characters from the "columnames_abbreviated" part until if fits completely.