Thursday, May 26, 2011

What is in the PBMS patch for MySQL 5.5

I thought people may be interested to know what the PBMS patch for MySQL actually patches, in case they should think this is a major hack into the MySQL source code.

Almost all of  the patch consists of  the PBMS daemon source code which is added to the "storage/pbms" folder in the MySQL source code tree. Other than that here is a list of the actual MySQL files touched and what the patch is for:

  • sql/CMakeLists.txt:
    Added PBMS source directories to the header file search list.
    Lines added: 1.
  • sql/handler.cc:
    Added PBMS server side API calls to check for longblob columns being modified or tables containing longblob columns being dropped or renamed. This is the guts of the PBMS patch.
    Lines added: 170.
  • libmysql/CMakeLists.txt:
    Added PBMS API functions to the client API functions list and the PBMS source directories to the header file search list.  Also adds the PBMS lib source code to the MySQL client lib build.
    Lines added: 61.
  • include/mysql.h:
    Added a line to include the PBMS  LIB header file "pbmslib.h".
    Lines added: 3.
  • include/mysql.h.pp:
    Added lines to reflect the changes made to the MySQL client API when adding the PBMS API to it:
    Lines added: 42.
  • include/pbmslib.h:
    Added a new file that redirects to the actual pbmslib.h which is in "storage/pbms/lib". This was added in order to simplify the build process. When installed it is the actual pbmslib.h from "storage/pbms/lib" that is installed.
  • client/CMakeLists.txt:
    Added PBMS source directories to the header file search list.
    Lines added: 1.
  • client/mysqldump.c:
    Added code to recognize PBMS BLOB URLs and fetch the BLOB data and write it out to a separate file.
    Lines added: 176.
  • client/mysql.cc:
    Added code to be able to upload the BLOB dump file from mysqldump to the PBMS daemon.
    Lines added: 92
As you can see the actual changes to the MySQL code itself if fairly limited and safe. The patched MySQL server and applications can still be used without PBMS with out any negative effect.

No comments: