Yes. That should be DRIZZLE *...
Ok. I think I have officially drug this branch down the rathole. I'm
terribly sorry for wrecking work and delaying DBD::drizzle...

Jay just sent me an email about his work in the tree today, which came
to the sensible conclusion that the changes I was committing were too
interwoven to be able to backtrack through them successfully... and he's
totally right.

Jay is going to look at starting from scratch from trunk and starting to
apply the patches one bit at a time. (I think I know where it broke, but
it's all too much atm)

I think we should/can divvy this up a bit, so we don't (and by we, this
week I seem to mean me) break each other's work.

SO, I propose these related but unrelated tasks.

TASK ONE: Rename mysql to drizzle OR to something more generic where it
will touch storage engines. This includes:

  - Replacing use of the MYSQL_TYPE_* constants to FIELD_*
  - Renaming MYSQL_* types in drizzle.h to DRIZZLE_*
  - Renaming MYSQL* defines to DRIZZLE*
  - Changing mysql_init() to drizzle_create()
  - Moving my_thread_init(), my_net_init(), etc. into drizzle_create()
  - Rename mysql_real_* to just drizzle_*

(I think I can re-do the first four bullets above pretty quickly now
that I know where it's all hanging together. I'd like someone else to
look at bullet 5 - I think it needs a different set of eyes.)

TASK TWO: Remove the mysys/mystrings depends from libdrizzle. The main
depends are charsets, my_malloc/my_free, some lame string manipulation
functions (and one nice one), bad header file organization and errors.
(Could conceivably be done in parallel... but probably should wait for
the above to be done and merged)

  - Replacing my_malloc/my_free with normal malloc/free
  - Removing use of non-standard string functions
  - Removing charset references from libdrizzle (make the lib send the
      bytes the programmer sends)
  - Moving some stuff around in headers (I think I did this mostly
      right, so most of this can be copied verbatim)
  - Removing use of MEM_ROOT in libdrizzle. This most affects
      MYSQL_FIELD and MYSQL_ROWS. While we're at it, we curse the
      MYSQL_ROWS implementation. (BTW Stewart - the first time I did
      this, I was yearning for talloc...)


TASK THREE: Figuring out what to do with the ER() macros and
client_errors[] (NOT RELATED TO THE ABOVE... CAN BE PARALLEL)
      (I didn't do this right the first time at all)
  This whole thing is a mess, as there are global static arrays that are
  shared between client and server, and we generate these things with
  comp_err. I'd say it's a later design issue to be solved, but it's
  keeping libdrizzle tied to mysys... and it's a spiderweb anyway.

Once all of that is done and all still compiles and is merged, _then_ we
can tackle (instead of doing it all in one fell swoop):

- Removing references to deprecated things in client/

  - Password support functions
  - Unix Domain Sockets
  - Shared Memory
  - Embedded Server
  (but keeping the command line options as null-ops for now)

- Removing mysys/mystrings from client/



- moving mysqlbinlog to a binlog dir, which will eventually also house
binlong related files from server/ for a libbinlog ... but that's a
whole other thing.

Hopefully if we do it right, dormando and krow can continue working on
the blocking/non-blocking IO issue, and possibly krow's interest in
removing vio...

At this point, libdrizzle can become a source package with no external
depends. and we can:

- Rearrange/split up header files and code for libdrizzle - sort of like
how libmemcached is - file for DRIZZLE_ROW, file for DRIZZLE_FIELD, etc.

Thoughts/comments? Bricks to the head? If this sounds good to you guys,
I'll transfer it to the blueprint...

Monty

Patrick Galbraith wrote:
> Monty,
> 
> Now I get this error:
> 
> o -MD -MP -MF ".deps/linktest.Tpo" -c -o linktest.o linktest.c; \
> then mv -f ".deps/linktest.Tpo" ".deps/linktest.Po"; else rm -f
> ".deps/linktest.Tpo"; exit 1; fi
> linktest.c:2:25: error: mysql/mysql.h: No such file or directory
> linktest.c: In function ‘main’:
> linktest.c:13: error: ‘MYSQL’ undeclared (first use in this function)
> linktest.c:13: error: (Each undeclared identifier is reported only once
> linktest.c:13: error: for each function it appears in.)
> linktest.c:13: error: expected ‘;’ before ‘my’
> linktest.c:15: error: ‘my’ undeclared (first use in this function)
> make[1]: *** [linktest.o] Error 1
> 
> So, linktest.c has:
> 
> nt main(int argc, char** argv) {
> 
> (void)argc;
> (void)argv;
> 
> MYSQL my;
> 
> ...
> 
> Shouldn't it be DRIZZLE my ?
> 
> Monty Taylor wrote:
>> Patrick Galbraith wrote:
>>  
>>> Monty Taylor wrote:
>>>    
>>>> I stuck a file called "linktest.c" into the libdrizzle dir to test for
>>>> missing symbols in libdrizzle while we were removing depends. Sounds
>>>> like it got removed.
>>>>
>>>> Patrick Galbraith wrote:
>>>>      
>>>>> I have all the client calls renamed to drizzle_xxx and when
>>>>> compiling, get this error that doesn't tell me much:
>>>>>
>>>>> creating libdrizzle.la
>>>>> (cd .libs && rm -f libdrizzle.la && ln -s ../libdrizzle.la
>>>>> libdrizzle.la)
>>>>> make[1]: *** No rule to make target `linktest.o', needed by
>>>>> `linktest'.  Stop.
>>>>>
>>>>> That's the only error, everything else seems to go fine. Any
>>>>> thoughts? I could push this to a special tree if anyone wants to look
>>>>> at it.
>>>>>
>>>>> --Patrick
>>>>>
>>>>>         
>>> Monty,
>>>
>>> Could you please re-commit/push  ? ;)
>>>     
>>
>> Yes! Committing-pushing right now!
>>
>> Monty
>>   
> 
> 


_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to