[development] hook_schema() now in .install, not .schema

Barry Jaspan barry at jaspan.org
Mon Oct 8 23:44:39 UTC 2007

Public service announcement:

Prior to http://drupal.org/node/150245, hook_schema() was always 
defined in a module's .schema file.  There was never any good reason 
for it to be there.  The bad reason was "to avoid parsing the extra 
code in .install."  However, the results of hook_schema() are cached 
so the functions only have to be called when modules are 
enabled/disabled or when CCK type structures change.  This is very 
rare and parsing the .install files only on those occasions is not a 
performance issue.

Now, hook_schema() must be defined in .install.  The good reason for 
this is that it makes much more sense to have the schema definition 
and the schema update functions in the same place.  It will make bugs 
of the "changed hook_schema() without a hook_update_N() or vice 
versa" sort less likely.  And it is where God intended hook_schema() 
to be (says the atheist).

If this had been an actual emergency, your mail server would already 
have crashed.



More information about the development mailing list