client/Makefile.am:
Adding pthread flag
client/client_priv.h:
New option to use theads.
client/mysqlslap.c:
Adding support to optionally use threads (which should allow it to work with windows)
Nothing really to see here. Updated comments in code.
More comments are probably needed, but isn't that always the case?
client/mysqlslap.c:
Updated docs.
Removed complicated malloc calls with a single malloc. Cleaned up the way statements were be free'd (aka its now a function instead of a bunch of copy/paste).
Removed older and not so accurate timediff() call. Cleaned up call to parse out concurrency.
mysql-test/t/mysqlslap.test:
Edited the tests to make sure we check default concurrency (we can't test concurrency normally since in theory the results could be random).
You will noticed that the result was not changed.
Now does averaging when running iterations.
Realligned a bunch of code and continued to remove global variables.
Added CSV output along with printable.
Structures are now provided for print options so adding XML, HTML, ... should now be trivial.
client/client_priv.h:
Simplified options
client/mysqlslap.c:
Giant cleanup.
We now do single pass testing, not dual pass. The dual pass made no sense really especially when you started adding in more stats.
Modified the testing loop so that it should not be possible to have both a fork() and thread version (which will make it easier to port to windows should someone want to).
mysql-test/r/mysqlslap.result:
New results
mysql-test/t/mysqlslap.test:
Adjusting for new options, and removed "archive" from the tests just in case archive is not compiled.
client/mysqlslap.c:
compilation errors
include/plugin.h:
comments corrected
sql/sql_plugin.cc:
LEX_STRING instead of char*,
MYSQL_HANDLERTON_INTERFACE_VERSION instead of 0x0000
sql/sql_plugin.h:
LEX_STRING instead of char*
sql/sql_show.cc:
LEX_STRING instead of char*.
STRING_WITH_LEN works only on string literals, not on expressions
Added --slave option if you are trying to syncronize around one server using the lock-directory option plus NFS.
Added options to allow you to run several concurrency runs in one call. aka --concurrency="1, 8, 64, 128"
Time collection is now done in a finer grain manner, and is linked to the sync call (doesn't count the cost of the blocked processes that are setup to run).
client/Makefile.am:
Adding my_lock compile bits so we can have locking.
client/client_priv.h:
New options for lock directory, number of query, number of rows and slave status.
client/mysqlslap.c:
Updates for lock-directory.
Simplified fork() code that is called. It should be possible to build now a version that used threads if someone wanted to port to windows).
You can now specify several concurrency runs in one pass of the code.
--engine="myisam,archive"
--number-of-rows has been removed for the time being and replaced with
option to allow you to just repeat multiple time all of the inserts you specifed with data. When number-of-rows-returns it will be instead used for averaging rows while growing concurrency.
Returned stats now has accurent row and query counts since it includes a multiple for the rows and queries added.
Parser is now a touch smarter and understands end of file issues if you have a delimiter at the end of the file.
client/client_priv.h:
New options
client/mysqlslap.c:
Modifications for doing repeated tests.
mysql-test/r/mysqlslap.result:
New result file
mysql-test/t/mysqlslap.test:
Changes in tests to make sure concurrency failures would not occur.
1) Parsing now works
2) Options are safer, aka it doesn't kill the machine and it cleans up after itself
3) Option of --only-print added so that you can see what it does.
4) Tiny cleanup of the auto generate sql. A lot more needs to be done with this, for it to be very valuable. I suspect it doesn't work all that well.
5) Delimeter is now a single character. No good escaping going on.
6) You can now change which schema it is runninng against.
Now I think I can go make use of it!
Though I need to add support for a "only run this many inserts, divide by the number of clients connecting, to really test scaling"
client/client_priv.h:
Added new options for mysqlslap
client/mysqlslap.c:
Lots of cleanup.
Highlights:
1) Parsing now works much better, though I suspect escaping issues still exist. All strings are parsed into a typedef called statement. This is a linked structure with each statement held in it. I added options for length so that when the time comes to fix this for binary data the guts of the main executing loop will not need to be changed
2) Cleaned up options so that it will not destroy data by default and will clean up itself by default. So no leaving around of gobs of data.
3) Added option of --only-print to see the SQL it would have executed
4) Parsing handles whitespace trick (which will come back to bite someone I expect)
5) Delimeter is now a single character
6) All memory allocated should now be freed.
7) Set defaults so that only a single run will occur if none are given.
8) You can now change the schema that it runs against.
mysql-test/r/information_schema.result:
Fix for Antony's merge
mysql-test/r/mysqlslap.result:
New result set
More testing
mysql-test/t/mysqlslap.test:
More testing
and modifications to mysql-test-run(.pl/.sh)
client/Makefile.am:
Worklog #2983, added mysqlslap to Makefile.am
client/client_priv.h:
Worklog #2983 Added OPT_CREATE_SLAP_SCHEMA
mysql-test/mysql-test-run.pl:
Worklog #2983 Added mysqlslap test binary to test script
mysql-test/mysql-test-run.sh:
Worklog #2983 Added mysqlslap binary def to test script
client/mysqlslap.c:
Worklog #2983 mysqlslap.c, new utility for running load simulation.
mysql-test/r/mysqlslap.result:
Worklog #2983 Mysqlslap test results
mysql-test/t/mysqlslap.test:
Worklog #2983 Mysqlslap test