* Sergei Golubchik <serg@stripped> [07/12/06 22:18]:
> On Dec 04, konstantin@stripped wrote:
> > ChangeSet@stripped, 2007-12-04 22:32:08+03:00, kostja@bodhi.(none) +1 -0
> > Fix Bug#25535 "load_defaults() no longer included by mysql.h" by
> > making sure that load_defaults can be made available by including
> > my_sys.h. Note, if one includes both my_sys.h and mysql.h, my_sys.h
> > got to go first (this is how mysql.h is written).
>
> I don't like it. my_sys.h and my_global.h always were internal headers,
> we modify them at will without a second thought. They define lots of
> types and macros that are used in MySQL sources but make no sense
> anywhere else (example: my_global.h starts from defining
> INNODB_COMPATIBILITY_HOOKS). They aren't appropriate to be declared a
> public client API.
Whether we want it or not, it is our public API and has been for
years.
We might not advertise it, not document it, not maintain
compatibility -- we are not and I think should not be doing that,
but we do ship it.
This request is coming from a tool developer -- most of which, AFAIU,
are our own employees. So the change is just to make their life a
bit easier.
If you would like a "cleaner" change, what I can do and will do
with pleasure, is:
* move everything from my_sys.h to mysys_priv.h (new header)
* leave only select public declarations in my_sys.h.
But unless we make a serious clean up effort, my_sys.h will still
have to include my_global.h -- my_global.h defines
types, defines, etc. that are used in declaration anything a trifle more
serious than load_defaults.
> Why not to add/move load_defaults() to mysql.h where it was ?
Because mysql.h is a public header that stands for MySQL Client
Library. load_defaults() is not a part of the public library API,
rather just one call for defaults handling that was (in
the way of least resistance) added to it a while ago. There is a
number of defaults handling declarations that are missing:
free_defaults(), modify_defaults_file, etc. I believe we should
not let the mess of my_sys, which does not and will not any time
soon have strict versioning and backward compatibility, overflow
into mysql.h, which does possess these qualities.
--
-- Konstantin Osipov Software Developer, Moscow, Russia
-- MySQL AB, www.mysql.com The best DATABASE COMPANY in the GALAXY