Today when I started the new MySQL 5.1.18-beta server which is built from the sources, gave an interesting error which I never came across in earlier versions of MySQL including 5.1.17 as I used the same configuration options for both the versions. The error is:

1
2
3
4
5
6
7
8
9
10
11
..
70516 19:48:53 [Warning] Server variable flush_method of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
070516 19:48:53 [Warning] Server variable log_arch_dir of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
070516 19:48:53 [Warning] Server variable log_group_home_dir of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
070516 19:48:53 [Note] Plugin 'InnoDB' disabled by command line option
070516 19:48:53 [Warning] Server variable data_file_path of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
070516 19:48:53 [Warning] Server variable data_home_dir of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
070516 19:48:53 [Warning] Server variable flush_method of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
070516 19:48:53 [Warning] Server variable log_arch_dir of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
070516 19:48:53 [Warning] Server variable log_group_home_dir of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
070516 19:48:53 [Note] Plugin 'InnoDB' disabled by command line option

I even compiled with –with-plugins=all; but after going through the configure options and the output lib directory, noticed that InnoDB is supposed to be linked statically instead of dynamically as that of other plugin engines. Recompiling the source with –with-plugin-innobase does solve the issue and same goes to MyISAM and MyISAM Merge tables.

As a rule of thumb, all plugins which only supports builds of type ‘static‘ but not the ‘dynamic‘; must be configured with –with-plugin-PLUGIN_NAME, else plugin will be ignored in the build. One can get the list of plugins and its supported build type by running ./configure –help.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
$./configure --help
...
Description of plugins:
 
   === Partition Support ===
  Plugin Name:      partition
  Description:      MySQL Partitioning Support
  Supports build:   static
  Configurations:   max, max-no-ndb
 
   === Daemon Example Plugin ===
  Plugin Name:      daemon_example
  Description:      This is an example plugin daemon.
  Supports build:   dynamic
 
   === Simple Parser ===
  Plugin Name:      ftexample
  Description:      Simple full-text parser plugin
  Supports build:   dynamic
 
   === Archive Storage Engine ===
  Plugin Name:      archive
  Description:      Archive Storage Engine
  Supports build:   static and dynamic
  Configurations:   max, max-no-ndb
 
   === Blackhole Storage Engine ===
  Plugin Name:      blackhole
  Description:      Basic Write-only Read-never tables
  Supports build:   static and dynamic
  Configurations:   max, max-no-ndb
 
   === CSV Storage Engine ===
  Plugin Name:      csv
  Description:      Stores tables in text CSV format
  Supports build:   static
  Status:           mandatory
 
   === Example Storage Engine ===
  Plugin Name:      example
  Description:      Skeleton for Storage Engines for developers
  Supports build:   dynamic
  Configurations:   max, max-no-ndb
 
   === Federated Storage Engine ===
  Plugin Name:      federated
  Description:      Connects to tables on remote MySQL servers
  Supports build:   static and dynamic
  Configurations:   max, max-no-ndb
 
   === Memory Storage Engine ===
  Plugin Name:      heap
  Description:      Volatile memory based tables
  Supports build:   static
  Status:           mandatory
 
   === InnoDB Storage Engine ===
  Plugin Name:      innobase
  Description:      Transactional Tables using InnoDB
  Supports build:   static
  Configurations:   max, max-no-ndb
 
   === MyISAM Storage Engine ===
  Plugin Name:      myisam
  Description:      Traditional non-transactional MySQL tables
  Supports build:   static
  Status:           mandatory
 
   === MyISAM MERGE Engine ===
  Plugin Name:      myisammrg
  Description:      Merge multiple MySQL tables into one
  Supports build:   static
  Status:           mandatory
 
   === Cluster Storage Engine ===
  Plugin Name:      ndbcluster
  Description:      High Availability Clustered tables
  Supports build:   static
  Configurations:   max

The dynamic plugins can be loaded at run-time using INSTALL PLUGIN when the server is running.