maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #01180
Re: A mess with sql_alloc() ?
Alexi1952 <Alexi1952@xxxxxxxxx> writes:
> Thanks for your comments!
>
>> In any case extern declarations like this should be avoided, much better to
>> only have the declaration in one place in some *.h file.
>
> I agree. Currently, we have:
>
> mysql_priv.h:
>
> #ifndef MYSQL_CLIENT
> ...
> void *sql_alloc(size_t);
> ...
> #endif
>
> thr_malloc.cc:
>
> void *sql_alloc(size_t Size)
> {
> MEM_ROOT *root= *my_pthread_getspecific_ptr(MEM_ROOT**,THR_MALLOC);
> return alloc_root(root,Size);
> }
>
> This states that sql_alloc() *should not* be used in MYSQL_CLIENT context
> (hence all these extern declarations). In my opinion, it's more correctly to have:
>
> mysql_priv.h:
>
> void *sql_alloc(size_t);
>
> thr_malloc.cc:
>
> #ifndef MYSQL_CLIENT
> void *sql_alloc(size_t Size)
> {
> MEM_ROOT *root= *my_pthread_getspecific_ptr(MEM_ROOT**,THR_MALLOC);
> return alloc_root(root,Size);
> }
> #endif
>
> which states instead that sql_alloc() *can be* used in a client context
> but should be supplied with *another definition*.
Yes, agree.
> Question: May I do these changes in mysql_priv.h and thr_malloc.cc ?
> On the one hand, it is resonable. On the other hand, I am confused a bit
> with "mysql_priv.h" name intended to mean that content of this file belongs
> to mysql internals (though this file is included in mysqlbinlog.cc)
I think this is ok to do (I will check them again when I see the patch for
review).
It is true about mysql_priv.h being more internal, but then mysqlbinlog
already goes deep deep into internals (the replication event stuff).
- Kristian.
References