Re: [Maria-developers] mysql-test-run (was Re: BuildBot)

2009-04-06 Thread Patrick Crews
Hi everyone,
As a QA engineer, I had a few thoughts I would put into the discussion as
well.  Please feel free to take them or leave them (or to throw them a
parade and give them the key to the city) ;-)

On Mon, Apr 6, 2009 at 3:17 PM, Kristian Nielsen
wrote:

> Michael Widenius  writes:
>
> > To go trough the things that are wrong with mysqltest:
>
> In my opinion, the single biggest problem with mysqltest is that it is a
> seperate program from the test suite driver mysql-test-run.pl. It's even
> written in a different language (C vs. Perl), and test cases themselves are
> written in a third language (the mysqltest language) + a mixture of SQL and
> even some shell scripts. That's _5_ different languages in a single
> application :-(
>
> This is a disaster for the structure of mysql-test-run. Such a large part
> of
> the code (and complexity) is just trying to handle communication between
> the
> various parts, which is really hard to do well due to different languages.
>
> The first step in any major improvement (in my opinion) should be to
> re-implement mysqltest in Perl inside mysql-test-run.pl. But that would be
> a
> project of several months, not something I'm eager to start just now ...


I agree that more 'moving parts' = more overhead.  I can't say that I agree
with re-implementing in this fashion, but now would be a good time to see
how we can make things leaner / more efficient / more to-the-point (ie we
can focus on using the tool to test and not 'keeping the parts in harmony')

>
>
> > I like the philosophy behind it:  Write a test in pure SQL and then
> > ensure that the generated result doesn't change.  It's easy enough to
> > allow any developers to generate a test case.
>
> Yes. This is a very strong point for testing that correct results are
> produced
> by a query or similar. Keeping something like this is very important if
> thinking about extending or replacing the test framework.
>
> The weakness with mysqltest / mysql-test-run is not that it does this, it
> is
> that it does not provide additional/separate functinality for other kinds
> of
> tests that do not fit this simple framework well.
>

I very much like the straight-up SQL-> result paradigm *for certain tests*.
 This is GREAT for a basic, functional suite (does SELECT work.  Are INSERT
DEFAULT and INSERT () interchangeable ).  However,
getting into more 'scenario-based' testing, there are problems -
coordination between 'users' in a test, tools for greybox-manipulation
(tweaking the software mechanics beyond just INPUT/OUTPUT testing), etc.

It would be great to keep the simplicity for certain scenarios, but to have
extensible power for more complicated tests when needed.  One issue I have
seen with certain proposed replacements is that they allow complex testing,
but the overhead of that power results in even the most simple tests
becoming a monster (the overhead of defining a test).

> In particular, it's good that tests and results are different files as
> > it makes it easier to understand what are wrong when you get a failure.
>
> I am trying to understand what precisely you have in mind here...
>
> One big problem with other test suites I have seen is that if you want to
> debug a failure, you first have to spend a lot of time debugging and
> understanding the test case code just to understand what the problem
> actually
> is. Getting a diff of queries run and results produced like mysqltest does
> makes this step trivial (if the problem is wrong results from a query).
>
> Also the --record functionality for generating .result files can be really
> good to ease the production of test case and also make it more likely the
> developer will not be tempted to insufficiently check the results
> (everything
> is checked by default). It does have the big risk of not properly checking
> that the committed .result is in fact correct, something I have seen more
> than
> once.
>
> This does not really have to mean using separate files. I have in mind
> something like a Perl-based suite where I could do:
>
>query   FROM t1 JOIN t2 ON (a = b)
> ORDER BY a, b;
>SQL
> a  b
> 1  1
> 2  2
> 4  4
>RESULT
>
> And in case of different result, it could output a diff of just the RESULT
> section of the failing query, along with the query. It could also give the
> correct line number in the .test file, avoiding the need to search the
> .test
> file for the query that produced the diff. I think that might make it even
> easier than separate result file.
>
> Something like that would of course allow putting arbitrary Perl code
> in-between running queries (with lots of useful modules available) where
> this
> is more appropriate. This would eliminate the need for the mysqltest
> language
> for new test cases, which 

[Maria-developers] mysql-test-run (was Re: BuildBot)

2009-04-06 Thread Kristian Nielsen
Michael Widenius  writes:

> To go trough the things that are wrong with mysqltest:

In my opinion, the single biggest problem with mysqltest is that it is a
seperate program from the test suite driver mysql-test-run.pl. It's even
written in a different language (C vs. Perl), and test cases themselves are
written in a third language (the mysqltest language) + a mixture of SQL and
even some shell scripts. That's _5_ different languages in a single
application :-(

This is a disaster for the structure of mysql-test-run. Such a large part of
the code (and complexity) is just trying to handle communication between the
various parts, which is really hard to do well due to different languages.

The first step in any major improvement (in my opinion) should be to
re-implement mysqltest in Perl inside mysql-test-run.pl. But that would be a
project of several months, not something I'm eager to start just now ...

> I like the philosophy behind it:  Write a test in pure SQL and then
> ensure that the generated result doesn't change.  It's easy enough to
> allow any developers to generate a test case.

Yes. This is a very strong point for testing that correct results are produced
by a query or similar. Keeping something like this is very important if
thinking about extending or replacing the test framework.

The weakness with mysqltest / mysql-test-run is not that it does this, it is
that it does not provide additional/separate functinality for other kinds of
tests that do not fit this simple framework well.

> In particular, it's good that tests and results are different files as
> it makes it easier to understand what are wrong when you get a failure.

I am trying to understand what precisely you have in mind here...

One big problem with other test suites I have seen is that if you want to
debug a failure, you first have to spend a lot of time debugging and
understanding the test case code just to understand what the problem actually
is. Getting a diff of queries run and results produced like mysqltest does
makes this step trivial (if the problem is wrong results from a query).

Also the --record functionality for generating .result files can be really
good to ease the production of test case and also make it more likely the
developer will not be tempted to insufficiently check the results (everything
is checked by default). It does have the big risk of not properly checking
that the committed .result is in fact correct, something I have seen more than
once.

This does not really have to mean using separate files. I have in mind
something like a Perl-based suite where I could do:

query <   One benefit is that you can usually run a test by just piping it
>   trough the normal MySQL client, which simplifies testing and
>   debugging a lot!

Yes, this should be kept for simple stuff, very important.

 - Kristian.

___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Maria-developers] Maria binary builds

2009-04-06 Thread Vadim Tkachenko
Kristian,


If you can share your Buildbot  configuration that would be perfect!
As for platforms we see demand for Debian/Ubuntu/CentOS both 32bit and
64bit. Also quite often are mentioned FreeBSD, MacOS and Windows.

For CFLAGS / configure I found combination from MySQL .spec for RedHat 5
works almost fine. The changes I made for CFLAGS I am adding next
combination:

-O2 -g -fno-omit-frame-pointer

it makes life to debugs hangs / crashes easier.

Thanks!
Vadim



Kristian Nielsen wrote:
> Hi Vadim,
> 
> Just an update on what I have been doing with binaries and Buildbot.
> 
> I have now set up Buildbot to build and test our trees on Launchpad after
> every push (similar to Pushbuild at MySQL/Sun if you are familiar with that):
> 
> http://askmonty.org/buildbot/index.html
> 
> For now we have only few (one) build slave. The plan of course is to add more,
> hopefully some of them volunteered from the community (hint :-).
> 
> I would be happy to make the infrastructure available to you as well, ie. to
> set it up to also track your Launcpad trees and build on your build slaves
> with your scripts and options. But you may prefer to control the buildbot
> master yourself; just let me know if you need a copy of my Buildbot
> configuration files or if I can help with any questions in setting it up.
> 
> I am currently working on getting all existing test failures visible in the
> Buildbot runs fixed (Valgrind errors mostly).
> 
> After that (next week I hope) I plan to turn to working on getting Buildbot to
> also produce binaries.
> 
> I will need to do some research in which platforms we need to build for
> (Debian/Ubuntu/CentOS/Suse/Generic? x86/amd64? Any others?), and which
> configure / build options to use. Any help you can provide here would be much
> appreciated. I have lots of experience with scripting this kind of thing, but
> less so with the details of how people actually use the binaries and what they
> need (I have mostly build from source myself even for production). I also plan
> to look at what official Debian/Ubuntu packages provide, and at the scripts
> from OurDelta.
> 
> My vision is to have production and test of binaries fully integrated into our
> Buildbot infrastructure. I want it fully automated, so that binaries are made
> after every push, and so that problems with the binaries are dealt with as an
> integrated part of development just like any other problem. Ideally, releasing
> binaries would then just be a matter of picking the right files from the
> buildbot archives. It will take some work to get there of course, but at least
> that is the vision.
> 
>>From what I have seen of Buildbot so far, I am hopeful that it will be
> sufficient for our needs. It seems to have all of the right ideas, and many of
> the necessary features are already there. Some stuff will be missing, and my
> plan is to spend the time to extend it as needed.
> 
> So for concrete plans next week, these currently are:
> 
> 1. Setup build of generic binaries (.tar.gz) for Linux x86/amd64. For this I
> need to understand better how to deal with external dependencies. Should I
> link statically with libc? My impression is not to do this as I think this
> causes big problems with any type of plugin, but I also seem to recall that
> existing generic packages do this. Alternatively, I need to understand which
> version of glibc to use.
> 
> 2. Work on getting build slave machines set up for this.
> 
> 3. Get a first version running on Buildbot that produces the binaries.
> 
> After this I think will be Debian and Ubuntu binaries with apt-able
> repositories, and then RPMs.
> 
> I think that's it for an update of current plans. Let me know if you have any
> questions/comments/suggestions. Especially any help on exact CFLAGS and
> ./configure arguments to use would be very helpful.
> 
>  - Kristian.
> 


-- 
Vadim Tkachenko, CTO
Percona Inc.
ICQ: 369-510-335, Skype: vadimtk153, Phone +1-888-401-3403
MySQL Performance Blog - http://www.mysqlperformanceblog.com
MySQL Consulting http://www.percona.com/

  Attend the 2009 Percona Performance Conference
  April 22-23 - http://conferences.percona.com/

___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Maria-developers] [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria

2009-04-06 Thread Vadim Tkachenko
Kristian,

Uh, Thank you for looking into this.

You ask good question re: INNODB_RW_LOCKS_USE_ATOMICS, this is actually
one of main points of XtraDB to improve scalability on 8CPU+ boxes, so
we just rely on it.

XtraDB can be built without INNODB_RW_LOCKS_USE_ATOMICS, but effect may
be opposite - we can see slowdown instead of improvement.

I am not sure what to do with this, I also need to look into
InnoDB-plugin 1.0.3, what solution they have and may be use new InnoDB
rw_locks instead of ours. Anyway - this is something to discuss.


About tests you should execute
setup.sh
from storage/innobase before running test, as it patches main test suite
by InnoDB specific tests.

I did not want to put them into main test suite to keep all changes only
to storage/innobase repository.

In our tests only two tests do not pass after patches - it is
main.variables_big and main.read_many_rows_innodb, but they also do not
pass in native InnoDB-plugin.

Again what to do with tests it is topic to discuss, I do not see obvious
way for now...

Thanks!
Vadim



Kristian Nielsen wrote:
> Percona  writes:
> 
>> Percona has proposed merging lp:~maria-captains/maria/maria-xtradb into 
>> lp:maria.
>>
>> Requested reviews:
>> Maria-captains (maria-captains)
>>
>> Proposal to merge replacement InnoDB->XtraDB
> 
> Thanks a lot for your efforts in this!
> 
> I branched the tree and took a look. There are a couple of issues that I think
> need to be resolved before we can merge it into MariaDB. I have some questions
> below, but please don't hesitate to ask me for any kind of help needed to move
> this forward.
> 
>> === modified file 'storage/innobase/include/sync0rw.h'
>> --- storage/innobase/include/sync0rw.h   2008-02-19 16:44:09 +
>> +++ storage/innobase/include/sync0rw.h   2009-03-31 04:19:17 +
> 
>> +#ifndef INNODB_RW_LOCKS_USE_ATOMICS
>> +#error INNODB_RW_LOCKS_USE_ATOMICS is not defined. Do you use enough new 
>> GCC or compatibles?
>> +#error Or do you use exact options for CFLAGS?
>> +#error e.g. (for x86_32): "-m32 -march=i586 -mtune=i686"
>> +#error e.g. (for Sparc_64): "-m64 -mcpu=v9"
>> +#error Otherwise, this build may be slower than normal version.
>> +#endif
>> +
> 
> My attempt to build (BUILD/compile-pentium64-max) failed with this
> error. There were also other build errors (I assume places where the
> atomics-using code has not been extended with a part that works without the
> availability of atomics).
> 
> The reason is that in the MariaDB tree, HAVE_GCC_ATOMIC_BUILTINS is disabled,
> which caused XtraDB to disable INNODB_RW_LOCKS_USE_ATOMICS, which triggers the
> above error.
> 
> I think I understand why this makes sense for Percona, after all using these
> better synchronisation primitives is part of the reason for using the Percona
> server in the first place.
> 
> Can you tell me if Percona has decided not to maintain XtraDB working without
> the availability of atomic operations? Or if it is just an oversight?
> 
> I need to discuss with other MariaDB people whether XtraDB for MariaDB should
> be maintained working without the atomic operations (if so, we should of
> course be willing to do the work/effort required).
> 
> So, any thoughts about the best way to deal with this? Should the above #error
> be removed and XtraDB extended to work without atomics in the MariaDB tree?
> And is this something Percona wants to do, or should I look into it?
> 
> Also, Sergei Golubchik told me that HAVE_GCC_ATOMIC_BUILTINS is for
> my_atomic_ops, and InnoDB/XtraDB shouldn't really be using it. But I need to
> look more into the code to understand what the problem is, if any.
> 
>> === added directory 'storage/innobase/mysql-test'
> 
>> === added directory 'storage/innobase/mysql-test/patches'
> 
> When I ran the test suite, I got test failures in test main.innodb.
> 
> I see that the patch contains patches for main MySQL test cases in
> mysql-test/t/*.test, and also seems to add separate test cases in the
> storage/innobase/mysql-test/ directory.
> 
> Do you know what the status is of these test suite modifications? Do the
> patches need to be applied to the existing test suite, and/or should the extra
> test cases be used to add to/overwrite the existing tests?
> 
> We would need to get the test suite to run without problems before
> merging. Does Percona run the test suite with no failures? Can you suggest
> which directions I should work in to solve the test failures? Ie. I'm unsure
> to what extent the extra test cases/patches have already been applied in main
> MySQL sources, and whether failures are expected or are just due to not being
> adapted for current MariaDB source changes.
> 
> Any help with the above would be great. I plan to continue working with you on
> this so we can get it merged without unnecessary delays.
> 
>  - Kristian.
> 


-- 
Vadim Tkachenko, CTO
Percona Inc.
ICQ: 369-510-335, Skype: vadimtk153, Phone +1-888-401-3403
MySQL Performance Blog - http://www.mysqlperformanc

Re: [Maria-developers] Maria binary builds

2009-04-06 Thread Adam M Dutko
I have two idle machines, one Debian lenny x86-64 and the other  
alpha.  How can I help by adding these to the build pool?  Is there  
interest in alpha?


--
Cheers,
  Adam


On Apr 6, 2009, at 9:13, Kristian Nielsen   
wrote:



Hi Vadim,

Just an update on what I have been doing with binaries and Buildbot.

I have now set up Buildbot to build and test our trees on Launchpad  
after
every push (similar to Pushbuild at MySQL/Sun if you are familiar  
with that):


   http://askmonty.org/buildbot/index.html

For now we have only few (one) build slave. The plan of course is to  
add more,

hopefully some of them volunteered from the community (hint :-).

I would be happy to make the infrastructure available to you as  
well, ie. to
set it up to also track your Launcpad trees and build on your build  
slaves
with your scripts and options. But you may prefer to control the  
buildbot

master yourself; just let me know if you need a copy of my Buildbot
configuration files or if I can help with any questions in setting  
it up.


I am currently working on getting all existing test failures visible  
in the

Buildbot runs fixed (Valgrind errors mostly).

After that (next week I hope) I plan to turn to working on getting  
Buildbot to

also produce binaries.

I will need to do some research in which platforms we need to build  
for

(Debian/Ubuntu/CentOS/Suse/Generic? x86/amd64? Any others?), and which
configure / build options to use. Any help you can provide here  
would be much
appreciated. I have lots of experience with scripting this kind of  
thing, but
less so with the details of how people actually use the binaries and  
what they
need (I have mostly build from source myself even for production). I  
also plan
to look at what official Debian/Ubuntu packages provide, and at the  
scripts

from OurDelta.

My vision is to have production and test of binaries fully  
integrated into our
Buildbot infrastructure. I want it fully automated, so that binaries  
are made
after every push, and so that problems with the binaries are dealt  
with as an
integrated part of development just like any other problem. Ideally,  
releasing
binaries would then just be a matter of picking the right files from  
the
buildbot archives. It will take some work to get there of course,  
but at least

that is the vision.

From what I have seen of Buildbot so far, I am hopeful that it will  
be
sufficient for our needs. It seems to have all of the right ideas,  
and many of
the necessary features are already there. Some stuff will be  
missing, and my

plan is to spend the time to extend it as needed.

So for concrete plans next week, these currently are:

1. Setup build of generic binaries (.tar.gz) for Linux x86/amd64.  
For this I
need to understand better how to deal with external dependencies.  
Should I
link statically with libc? My impression is not to do this as I  
think this
causes big problems with any type of plugin, but I also seem to  
recall that
existing generic packages do this. Alternatively, I need to  
understand which

version of glibc to use.

2. Work on getting build slave machines set up for this.

3. Get a first version running on Buildbot that produces the binaries.

After this I think will be Debian and Ubuntu binaries with apt-able
repositories, and then RPMs.

I think that's it for an update of current plans. Let me know if you  
have any
questions/comments/suggestions. Especially any help on exact CFLAGS  
and

./configure arguments to use would be very helpful.

- Kristian.

___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Maria-developers] Maria binary builds

2009-04-06 Thread Kristian Nielsen
Hi Vadim,

Just an update on what I have been doing with binaries and Buildbot.

I have now set up Buildbot to build and test our trees on Launchpad after
every push (similar to Pushbuild at MySQL/Sun if you are familiar with that):

http://askmonty.org/buildbot/index.html

For now we have only few (one) build slave. The plan of course is to add more,
hopefully some of them volunteered from the community (hint :-).

I would be happy to make the infrastructure available to you as well, ie. to
set it up to also track your Launcpad trees and build on your build slaves
with your scripts and options. But you may prefer to control the buildbot
master yourself; just let me know if you need a copy of my Buildbot
configuration files or if I can help with any questions in setting it up.

I am currently working on getting all existing test failures visible in the
Buildbot runs fixed (Valgrind errors mostly).

After that (next week I hope) I plan to turn to working on getting Buildbot to
also produce binaries.

I will need to do some research in which platforms we need to build for
(Debian/Ubuntu/CentOS/Suse/Generic? x86/amd64? Any others?), and which
configure / build options to use. Any help you can provide here would be much
appreciated. I have lots of experience with scripting this kind of thing, but
less so with the details of how people actually use the binaries and what they
need (I have mostly build from source myself even for production). I also plan
to look at what official Debian/Ubuntu packages provide, and at the scripts
from OurDelta.

My vision is to have production and test of binaries fully integrated into our
Buildbot infrastructure. I want it fully automated, so that binaries are made
after every push, and so that problems with the binaries are dealt with as an
integrated part of development just like any other problem. Ideally, releasing
binaries would then just be a matter of picking the right files from the
buildbot archives. It will take some work to get there of course, but at least
that is the vision.

>From what I have seen of Buildbot so far, I am hopeful that it will be
sufficient for our needs. It seems to have all of the right ideas, and many of
the necessary features are already there. Some stuff will be missing, and my
plan is to spend the time to extend it as needed.

So for concrete plans next week, these currently are:

1. Setup build of generic binaries (.tar.gz) for Linux x86/amd64. For this I
need to understand better how to deal with external dependencies. Should I
link statically with libc? My impression is not to do this as I think this
causes big problems with any type of plugin, but I also seem to recall that
existing generic packages do this. Alternatively, I need to understand which
version of glibc to use.

2. Work on getting build slave machines set up for this.

3. Get a first version running on Buildbot that produces the binaries.

After this I think will be Debian and Ubuntu binaries with apt-able
repositories, and then RPMs.

I think that's it for an update of current plans. Let me know if you have any
questions/comments/suggestions. Especially any help on exact CFLAGS and
./configure arguments to use would be very helpful.

 - Kristian.

___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Maria-developers] MariaDB + PBXT

2009-04-06 Thread Paul McCullagh

Hi Kristian,

On Apr 6, 2009, at 1:17 PM, Kristian Nielsen wrote:




It resulted in me, and all other captains, getting a HUGE diff in an
e-
mail - SORRY! Mac Mail really struggled, Yikes!


Don't worry. Anyway, I found a setting on Launchpad for limiting  
diff sizes in
emails. I changed it to max 5000 lines (from unlimited). Not 100%  
sure it was
the right place I changed though, Launchpad can be a bit confusing  
sometimes.


Ah, good to know. I'll give that a try as well.


This branch includes the current MariaDB revision (2689) and the PBXT
storage engine. The only changes are the addition of a storage/pbxt
and a mysql-test/suite/pbxt directory.


PBXT seems to be included in BUILD/compile-pentium64-debug-max, great!


The mysql-test/suite/pbxt directory contains a test suite for PBXT.
The test includes 167 test files. All tests run through without  
error.

To run the tests use:

./mysql-test-run  --mysqld=--default-storage-engine=pbxt --suite=pbxt

In other words, you have to set the default storage engine to PBXT  
for

this test to run.


Testsuite did not pass without errors for me in the MariaDB tree. I  
saw these

failures:

   pbxt.count_distinct2 (glibc detected double free error)
   pbxt.count_distinct3 (mysqld crash)
   pbxt.lowercase_table_grant
   pbxt.lowercase_table_qcache
   pbxt.lowercase_view
   pbxt.pbxt_bugs
   pbxt.udf

The count* tests did not fail everytime I ran the tests. The  
*lowercase* test
failures seems related to case differences. Test pbxt_bugs is  
missing file
suite/pbxt/t/load_unique_error1.inc. The test pbxt.udf complains  
about missing

udf_example.so (not sure why).

Just let me know if you need more help/information on these failures.


Yes, thanks. I would like to get these fixed.

However, since the PBXT test suite is not run by default, I think we  
can merge
it anyway now, and then work on getting these issues solved  
afterwards.


OK

I have set up Buildbot to automatically test the MariaDB code, and I  
need to
find a build slave somewhere that could run tests of the PBXT code  
(feel free
to offer to run one if you have a spare machine handy ;-). That  
would be

helpful in getting a clean PBXT test run (and keeping it clean).


Yes, OK. I think we can work something out.




Please let me know if this is OK for merge.


This is ok to push as it is.

Since you are a member of maria-captains on Launchpad, you can go  
ahead and
push the merge to lp:maria yourself. (But if you prefer, I can also  
pull from

your tree and push the merge).


OK, I will push it.

[The general policy for pushing to MariaDB is that you can push  
yourself once
you get an 'ok to push' from review. Small fixes to a broken build  
etc. are
sometimes pushed immediately to avoid delaying other work, and then  
reviewed

after the fact.]


Yup, sounds good.

Do you have a plan for merging in subsequent PBXT changes to  
MariaDB? (I guess
you do, just don't know how it works). Would you be in charge of  
regular

merging, or should the MariaDB team pull/merge from PBXT?


Plan is to merge regularly and, of course, just before we make a  
release. However, we have not worked out a schedule yet.


Generally we will make sure all our tests run through with MySQL  
before we merge into MariaDB.


However, you are free to pull the latest PBXT tree and merge it into  
MariaDB any time you like. If you make any changes or fixes I would be  
glad to accept a patch for PBXT.


Our goal is to keep one set of source code for all versions of MySQL  
supported.



With PBXT both in
MySQL, Drizzle, and MariaDB, the merge effort on your part could be
non-trivial, so feel free to ask for help if needed.


Yes, thanks. I will let you know if we need some help. Currently it is  
only Vlad and myself working on PBXT.



Again, thanks a lot for your efforts on this!


np :)


Best regards,

Paul


- Kristian.




--
Paul McCullagh
PrimeBase Technologies
www.primebase.org
www.blobstreaming.org
pbxt.blogspot.com




___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Maria-developers] MariaDB + PBXT

2009-04-06 Thread Kristian Nielsen
Paul McCullagh  writes:

> I have just proposed merge of the maria-pbxt tree into lp:maria.

Thanks a lot for your effort!

I branched your tree locally and tested it a little bit.

> It resulted in me, and all other captains, getting a HUGE diff in an
> e- 
> mail - SORRY! Mac Mail really struggled, Yikes!

Don't worry. Anyway, I found a setting on Launchpad for limiting diff sizes in
emails. I changed it to max 5000 lines (from unlimited). Not 100% sure it was
the right place I changed though, Launchpad can be a bit confusing sometimes.

> This branch includes the current MariaDB revision (2689) and the PBXT
> storage engine. The only changes are the addition of a storage/pbxt
> and a mysql-test/suite/pbxt directory.

PBXT seems to be included in BUILD/compile-pentium64-debug-max, great!

> The mysql-test/suite/pbxt directory contains a test suite for PBXT.
> The test includes 167 test files. All tests run through without error.
> To run the tests use:
>
> ./mysql-test-run  --mysqld=--default-storage-engine=pbxt --suite=pbxt
>
> In other words, you have to set the default storage engine to PBXT for
> this test to run.

Testsuite did not pass without errors for me in the MariaDB tree. I saw these
failures:

pbxt.count_distinct2 (glibc detected double free error)
pbxt.count_distinct3 (mysqld crash)
pbxt.lowercase_table_grant
pbxt.lowercase_table_qcache
pbxt.lowercase_view
pbxt.pbxt_bugs
pbxt.udf

The count* tests did not fail everytime I ran the tests. The *lowercase* test
failures seems related to case differences. Test pbxt_bugs is missing file
suite/pbxt/t/load_unique_error1.inc. The test pbxt.udf complains about missing
udf_example.so (not sure why).

Just let me know if you need more help/information on these failures.

However, since the PBXT test suite is not run by default, I think we can merge
it anyway now, and then work on getting these issues solved afterwards.

I have set up Buildbot to automatically test the MariaDB code, and I need to
find a build slave somewhere that could run tests of the PBXT code (feel free
to offer to run one if you have a spare machine handy ;-). That would be
helpful in getting a clean PBXT test run (and keeping it clean).

> PBXT only creates files when the first PBXT table is created.
>
> So when you start MariaDB you will only know that PBXT is installed
> because of the startup message it prints in the log. It does not
> create any files in the database root directory.

Ok.

> Please let me know if this is OK for merge.

This is ok to push as it is.

Since you are a member of maria-captains on Launchpad, you can go ahead and
push the merge to lp:maria yourself. (But if you prefer, I can also pull from
your tree and push the merge).

[The general policy for pushing to MariaDB is that you can push yourself once
you get an 'ok to push' from review. Small fixes to a broken build etc. are
sometimes pushed immediately to avoid delaying other work, and then reviewed
after the fact.]

Do you have a plan for merging in subsequent PBXT changes to MariaDB? (I guess
you do, just don't know how it works). Would you be in charge of regular
merging, or should the MariaDB team pull/merge from PBXT? With PBXT both in
MySQL, Drizzle, and MariaDB, the merge effort on your part could be
non-trivial, so feel free to ask for help if needed.

> Best regards,
>
> Paul

Again, thanks a lot for your efforts on this!

 - Kristian.

___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Maria-developers] [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria

2009-04-06 Thread Kristian Nielsen
Percona  writes:

> Percona has proposed merging lp:~maria-captains/maria/maria-xtradb into 
> lp:maria.
>
> Requested reviews:
> Maria-captains (maria-captains)
>
> Proposal to merge replacement InnoDB->XtraDB

Thanks a lot for your efforts in this!

I branched the tree and took a look. There are a couple of issues that I think
need to be resolved before we can merge it into MariaDB. I have some questions
below, but please don't hesitate to ask me for any kind of help needed to move
this forward.

> === modified file 'storage/innobase/include/sync0rw.h'
> --- storage/innobase/include/sync0rw.h2008-02-19 16:44:09 +
> +++ storage/innobase/include/sync0rw.h2009-03-31 04:19:17 +

> +#ifndef INNODB_RW_LOCKS_USE_ATOMICS
> +#error INNODB_RW_LOCKS_USE_ATOMICS is not defined. Do you use enough new GCC 
> or compatibles?
> +#error Or do you use exact options for CFLAGS?
> +#error e.g. (for x86_32): "-m32 -march=i586 -mtune=i686"
> +#error e.g. (for Sparc_64): "-m64 -mcpu=v9"
> +#error Otherwise, this build may be slower than normal version.
> +#endif
> +

My attempt to build (BUILD/compile-pentium64-max) failed with this
error. There were also other build errors (I assume places where the
atomics-using code has not been extended with a part that works without the
availability of atomics).

The reason is that in the MariaDB tree, HAVE_GCC_ATOMIC_BUILTINS is disabled,
which caused XtraDB to disable INNODB_RW_LOCKS_USE_ATOMICS, which triggers the
above error.

I think I understand why this makes sense for Percona, after all using these
better synchronisation primitives is part of the reason for using the Percona
server in the first place.

Can you tell me if Percona has decided not to maintain XtraDB working without
the availability of atomic operations? Or if it is just an oversight?

I need to discuss with other MariaDB people whether XtraDB for MariaDB should
be maintained working without the atomic operations (if so, we should of
course be willing to do the work/effort required).

So, any thoughts about the best way to deal with this? Should the above #error
be removed and XtraDB extended to work without atomics in the MariaDB tree?
And is this something Percona wants to do, or should I look into it?

Also, Sergei Golubchik told me that HAVE_GCC_ATOMIC_BUILTINS is for
my_atomic_ops, and InnoDB/XtraDB shouldn't really be using it. But I need to
look more into the code to understand what the problem is, if any.

> === added directory 'storage/innobase/mysql-test'

> === added directory 'storage/innobase/mysql-test/patches'

When I ran the test suite, I got test failures in test main.innodb.

I see that the patch contains patches for main MySQL test cases in
mysql-test/t/*.test, and also seems to add separate test cases in the
storage/innobase/mysql-test/ directory.

Do you know what the status is of these test suite modifications? Do the
patches need to be applied to the existing test suite, and/or should the extra
test cases be used to add to/overwrite the existing tests?

We would need to get the test suite to run without problems before
merging. Does Percona run the test suite with no failures? Can you suggest
which directions I should work in to solve the test failures? Ie. I'm unsure
to what extent the extra test cases/patches have already been applied in main
MySQL sources, and whether failures are expected or are just due to not being
adapted for current MariaDB source changes.

Any help with the above would be great. I plan to continue working with you on
this so we can get it merged without unnecessary delays.

 - Kristian.

___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp