[development] hook_schema() now in .install, not .schema
Earl Miles
merlin at logrus.com
Tue Oct 9 05:46:51 UTC 2007
Barry Jaspan wrote:
> 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.
Personally, I think this was a mistake.
Not that the idea itself wasn't good, but module developers have already
started porting stuff over, and now there are no modules that can
simultaneously work with Drupal 6-beta1 and Drupal 6-beta2. This is one
of the things that can really frustrate module developers, and I don't
see a pressing need for this change. Yes, it was an error and probably
shouldn't have been this way, but it wasn't hurting anything, either.
More information about the development
mailing list