Merge lp:drizzle/mordred into lp:~drizzle-trunk/drizzle/development

Proposed by Monty Taylor
Status: Superseded
Proposed branch: lp:drizzle/mordred
Merge into: lp:~drizzle-trunk/drizzle/development
Diff against target: None lines
To merge this branch: bzr merge lp:drizzle/mordred
Reviewer Review Type Date Requested Status
Jay Pipes (community) Needs Fixing
Review via email: mp+11487@code.launchpad.net

This proposal supersedes a proposal from 2009-09-09.

To post a comment you must log in.
Revision history for this message
Monty Taylor (mordred) wrote : Posted in a previous version of this proposal

All of the stuff we got done while folks were on vacations. Mainly:

Header file cleanups.
plugin-slot-reorg almost finished.
Some cast warning fixes.
A Solaris build fix.

Revision history for this message
Jay Pipes (jaypipes) wrote : Posted in a previous version of this proposal

Please merge trunk and resolve conflicts :)

Thanks!

Jay

review: Needs Fixing
Revision history for this message
Stewart Smith (stewart) wrote : Posted in a previous version of this proposal

On Wed, Sep 09, 2009 at 06:15:44PM -0000, Monty Taylor wrote:
> Monty Taylor has proposed merging lp:drizzle/mordred into lp:drizzle.
>
> Requested reviews:
> Jay Pipes (jaypipes)
> --
> https://code.launchpad.net/~mordred/drizzle/devel/+merge/11460
> You are subscribed to branch lp:drizzle.

> === modified file '.bzrignore'
> --- .bzrignore 2009-07-29 17:45:51 +0000
> +++ .bzrignore 2009-09-09 00:38:19 +0000
> @@ -274,3 +274,5 @@
> po/POTFILES.in
> drizzled/message/command_reader
> TAGS
> +*replication.pb.*

I don't think this should be such a blanket wildcard, should instead be
specific paths.

> --- client/drizzle.cc 2009-07-20 18:10:47 +0000
> +++ client/drizzle.cc 2009-09-09 00:38:19 +0000
> @@ -34,17 +34,13 @@
> #if defined(HAVE_CURSES_H) && defined(HAVE_TERM_H)
> -#include <curses.h>
> +# include <curses.h>

Oh my, I get to be the style nazi :)

no space before 'include' after # :)

--
Stewart Smith

Revision history for this message
Monty Taylor (mordred) wrote :

Ok. Works everywhere now. Sigh. Apple.

Revision history for this message
Monty Taylor (mordred) wrote : Posted in a previous version of this proposal

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Stewart Smith wrote:
> On Wed, Sep 09, 2009 at 06:15:44PM -0000, Monty Taylor wrote:
>> Monty Taylor has proposed merging lp:drizzle/mordred into lp:drizzle.
>>
>> Requested reviews:
>> Jay Pipes (jaypipes)
>> --
>> https://code.launchpad.net/~mordred/drizzle/devel/+merge/11460
>> You are subscribed to branch lp:drizzle.
>
>> === modified file '.bzrignore'
>> --- .bzrignore 2009-07-29 17:45:51 +0000
>> +++ .bzrignore 2009-09-09 00:38:19 +0000
>> @@ -274,3 +274,5 @@
>> po/POTFILES.in
>> drizzled/message/command_reader
>> TAGS
>> +*replication.pb.*
>
> I don't think this should be such a blanket wildcard, should instead be
> specific paths.

Agree.

>> --- client/drizzle.cc 2009-07-20 18:10:47 +0000
>> +++ client/drizzle.cc 2009-09-09 00:38:19 +0000
>> @@ -34,17 +34,13 @@
>> #if defined(HAVE_CURSES_H) && defined(HAVE_TERM_H)
>> -#include <curses.h>
>> +# include <curses.h>
>
> Oh my, I get to be the style nazi :)
>
> no space before 'include' after # :)
>

Hrm. I thought we'd decided to do pre-processor indentation like:

#ifdef foo
# include <bar>
#else
# ifdef blah
# #include <sys/types.h>
# endif
#endif

Did we not?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkqqfZ4ACgkQ2Jv7/VK1RgEnOACdFU4LI0oNQMctd/rnjWbD3Y1m
+p0AoKHfc2vYxMzKRrszEdZMxyV7PfJY
=eOoN
-----END PGP SIGNATURE-----

Revision history for this message
Jay Pipes (jaypipes) wrote : Posted in a previous version of this proposal

Monty Taylor wrote:
> Stewart Smith wrote:
>> On Wed, Sep 09, 2009 at 06:15:44PM -0000, Monty Taylor wrote:
>>> --- client/drizzle.cc 2009-07-20 18:10:47 +0000
>>> +++ client/drizzle.cc 2009-09-09 00:38:19 +0000
>>> @@ -34,17 +34,13 @@
>>> #if defined(HAVE_CURSES_H) && defined(HAVE_TERM_H)
>>> -#include <curses.h>
>>> +# include <curses.h>
>> Oh my, I get to be the style nazi :)
>>
>> no space before 'include' after # :)
>>
>
> Hrm. I thought we'd decided to do pre-processor indentation like:
>
> #ifdef foo
> # include <bar>
> #else
> # ifdef blah
> # #include <sys/types.h>
> # endif
> #endif
>
> Did we not?

We did. That said, you only changed one line of that block and left the
rest of the block with no indentation ;P

-jay

Revision history for this message
Jay Pipes (jaypipes) wrote :

Hi! Nice (big) patch! :)

Couple little things:

329 -HASH ignore_table;
330 +drizzled::hash_set<string> ignore_table;

I assume this is because of a conflict in std::hash_set or std::tr1::hash_set in some places?

915 + VAR *v = var_init(0, name, len, "", 0);

No space before assignment :)

934 + while (*p && !isspace(*p))
956 + if(*p && !isspace(*p))

One space after negation operator
One space after if and before (

995 + if (!isdigit(*sleep_start))
1004 + while (*p && !isspace(*p))
1048 + if (!isdigit(*p))
1066 + while (*p && !isspace(*p))
1075 + while (*p && !isspace(*p))
1089 + while (*end && !isspace(*end))
1148 + (!strncmp("while", buf, min((ptrdiff_t)5, p - buf)) ||
1149 + !strncmp("if", buf, min((ptrdiff_t)2, p - buf)))))
1229 + while (*end && !isspace(*end))
1256 + while (*p && !isspace(*p) && *p != '(')
5082 + clean_up(!opt_help && (exit_code));
8287 + if (!ref && !(ref= reinterpret_cast<unsigned char*>(alloc_root(&table->mem_root,
19226 + if (!(session= new Session(listen_handler.getNullClient())))
28146 + while (!((errno=readdir_r(dirp,reinterpret_cast<dirent *>(dirent_tmp),&dp)) != 0 || !dp))

One space after negation operator

1157 - else if (my_isspace(charset_info, c))
1158 + else if ((c == ' ') || (c == '\t') || (c == '\n'))

why not else if (isspace(c)) ?

1237 - while (*p && (my_isspace(charset_info, *p) || *p == '#' || *p == '\n'))
1238 + while (*p && (isspace(*p) || *p == '#' || *p == '\n'))

why not: while (*p && (isspace(*p) || *p == '#')) ?

1433 + if (tmp == '\b' || static_cast<int>(tmp) == 127)

The cast can be removed. a char is a number from -128 to 127 (or on some systems 0 to 255, but either way, no cast is required :)

4156 + TableList *table_list=reinterpret_cast<TableList*>(
6579 + uint64_t save_pos=outfile->pos_in_file;
6663 + *to++=1;
6734 + error=1; goto err;
6761 + error=1; goto err;
7619 + null_value=1;
7669 + max_length=0;
8367 + size_t max_length=DRIZZLE_ERRMSG_SIZE - strlen(msg);
9941 + tmp=reinterpret_cast<char*>(sql_alloc(strlen(db_name)
10851 + cache->buff=0;
12531 + new_min=arg->min_value; flag_min=arg->min_flag;
16158 + error=1;
20081 + return (tab->eq_ref_table=1);
20855 + error=1;
20865 + error=1;
26473 + dec->buf[0]=0;
26474 + dec->intg=1;
26475 + dec->frac=0;
26476 + dec->sign=0;
27173 + int file=cache->file;
27529 + uint64_t pos_in_file=(info->pos_in_file+
28146 + while (!((errno=readdir_r(dirp,reinterpret_cast<dirent *>(dirent_tmp),&dp)) != 0 || !dp))

One space after assignment please

8415 + table->file->errkey = UINT32_MAX;

No space before assignment operator

8729 - { return (my_errno= HA_ERR_WRONG_COMMAND); }
8730 + { return (errno= HA_ERR_WRONG_COMMAND); }

and:

8740 + { return (errno=HA_ERR_WRONG_COMMAND); }
8749 + { return (errno=HA_ERR_WRONG_COMMAND); }

Danger, Will Robinson! Do you really mean to set errno here?

14328 + handle= new (std::nothrow) plugin::Handle(*manifest);

s/std:://

19715 +typedef struct st_typelib TYPELIB;
19716 +
19717 +typedef struct st_typelib TYPELIB;

I think it's safe to remove one of those ;)

Cheers,

Jay

review: Needs Fixing
Revision history for this message
Monty Taylor (mordred) wrote :
Download full text (4.2 KiB)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jay Pipes wrote:
> Review: Needs Fixing
> Hi! Nice (big) patch! :)
>
> Couple little things:
>
> 329 -HASH ignore_table;
> 330 +drizzled::hash_set<string> ignore_table;
>
> I assume this is because of a conflict in std::hash_set or std::tr1::hash_set in some places?

Yup. The hash_set/hash_map situation is very complicated. Add to that
that tr1 now actually defines it as unordered_set/unordered_map, and
that there is direct support for hashing strings in some versions of gcc
but not others.

I stole the compatibility code from google protobuf (since they use
hash_map everywhere that we compile) and made a few changes for us.

> 915 + VAR *v = var_init(0, name, len, "", 0);
>
> No space before assignment :)
>
> 934 + while (*p && !isspace(*p))
> 956 + if(*p && !isspace(*p))
>
> One space after negation operator
> One space after if and before (
>
> 995 + if (!isdigit(*sleep_start))
> 1004 + while (*p && !isspace(*p))
> 1048 + if (!isdigit(*p))
> 1066 + while (*p && !isspace(*p))
> 1075 + while (*p && !isspace(*p))
> 1089 + while (*end && !isspace(*end))
> 1148 + (!strncmp("while", buf, min((ptrdiff_t)5, p - buf)) ||
> 1149 + !strncmp("if", buf, min((ptrdiff_t)2, p - buf)))))
> 1229 + while (*end && !isspace(*end))
> 1256 + while (*p && !isspace(*p) && *p != '(')
> 5082 + clean_up(!opt_help && (exit_code));
> 8287 + if (!ref && !(ref= reinterpret_cast<unsigned char*>(alloc_root(&table->mem_root,
> 19226 + if (!(session= new Session(listen_handler.getNullClient())))
> 28146 + while (!((errno=readdir_r(dirp,reinterpret_cast<dirent *>(dirent_tmp),&dp)) != 0 || !dp))
>
> One space after negation operator
>
> 1157 - else if (my_isspace(charset_info, c))
> 1158 + else if ((c == ' ') || (c == '\t') || (c == '\n'))
>
> why not else if (isspace(c)) ?

Whoops. Was tracking down a different problem, didn't remove.

> 1237 - while (*p && (my_isspace(charset_info, *p) || *p == '#' || *p == '\n'))
> 1238 + while (*p && (isspace(*p) || *p == '#' || *p == '\n'))
>
> why not: while (*p && (isspace(*p) || *p == '#')) ?

No good reason.

> 1433 + if (tmp == '\b' || static_cast<int>(tmp) == 127)
>
> The cast can be removed. a char is a number from -128 to 127 (or on some systems 0 to 255, but either way, no cast is required :)
>
> 4156 + TableList *table_list=reinterpret_cast<TableList*>(
> 6579 + uint64_t save_pos=outfile->pos_in_file;
> 6663 + *to++=1;
> 6734 + error=1; goto err;
> 6761 + error=1; goto err;
> 7619 + null_value=1;
> 7669 + max_length=0;
> 8367 + size_t max_length=DRIZZLE_ERRMSG_SIZE - strlen(msg);
> 9941 + tmp=reinterpret_cast<char*>(sql_alloc(strlen(db_name)
> 10851 + cache->buff=0;
> 12531 + new_min=arg->min_value; flag_min=arg->min_flag;
> 16158 + error=1;
> 20081 + return (tab->eq_ref_table=1);
> 20855 + error=1;
> 20865 + error=1;
> 26473 + dec->buf[0]=0;
> 26474 + dec->intg=1;
> 26475 + dec->frac=0;
> 26476 + dec->sign=0;
> 27173 + int file=cache->file;
> 27529 + uint64_t pos_in_file=(info->pos_in_file+
> 28146 + while (!((errno=readdir_r(dirp,reinterpret_cast<dirent *>(dirent_tmp),&dp)) != 0 || !dp))
>
> One space after assignment please
>
> 8415 + table->file->errkey = UINT...

Read more...

lp:drizzle/mordred updated
1127. By Brian Aker <brian@gaz>

Merge Jay

1128. By Brian Aker <brian@gaz>

Merge Jay Alter table + Brian dead code

1129. By Brian Aker <brian@gaz>

Merge Jay

1130. By Brian Aker <brian@gaz>

Merge Jay

1131. By Brian Aker <brian@gaz>

Merge Eric

1132. By Brian Aker <brian@gaz>

Merge Jay (build only related)

1133. By Brian Aker <brian@gaz>

Merge of Jay

1134. By Brian Aker <brian@gaz>

Old message removal by Eric (no actual code has been harmed in the production of
this patch...)

1135. By Brian Aker <brian@gaz>

Merge of Lex -> Statement refactoring

1136. By Brian Aker <brian@gaz>

Merge for bug fixes.

1137. By Brian Aker <brian@gaz>

Merge Lee

1138. By Brian Aker <brian@gaz>

Merge of Joe Daly's work

1139. By Brian Aker <brian@gaz>

Merge Padraig

1140. By Brian Aker <brian@gaz>

Merge Monty (fix for distcheck)

1141. By Brian Aker <brian@gaz>

Merge language bits from Monty.

1142. By Brian Aker <brian@gaz>

Merge bug fix from Medina

1143. By Brian Aker <brian@gaz>

Merge Diego.

1144. By Brian Aker <brian@gaz>

Merge Monty

1145. By Brian Aker <brian@gaz>

Merge Stewart

1146. By Brian Aker <brian@gaz>

Merge Jay

1147. By Brian Aker <brian@gaz>

Update to po files.

1148. By Brian Aker <brian@gaz>

Update from Jay.

1149. By Brian Aker <brian@gaz>

Bug fix Diego

1150. By Brian Aker <brian@gaz>

Merge Eric

1151. By Brian Aker <brian@gaz>

Merge Stewart.

1152. By Brian Aker <brian@gaz>

Merge Stewarts cleanup for proto on tinyint

1153. By Brian Aker <brian@gaz>

Fix for memory leak (go Stewart!)

1154. By Brian Aker <brian@gaz>

Merging Monty

1155. By Brian Aker <brian@gaz>

Merge Monty + Brian for plugins.

1156. By Brian Aker <brian@gaz>

  Brian Aker 2009-10-02 [merge] Patrick + leak fix +test fix by Brian

1157. By Brian Aker <brian@gaz>

Fix for OS-X

1158. By Brian Aker <brian@gaz>

Merge of Padraig

1159. By Brian Aker <brian@gaz>

Merge Monty

1160. By Brian Aker <brian@gaz>

Merge Stewart.

1161. By Brian Aker <brian@gaz>

NULL commit

1162. By Brian Aker <brian@gaz>

Merge Stewart

1163. By Brian Aker <brian@gaz>

Merge Stewart.

1164. By Brian Aker <brian@gaz>

Small cleanup.

1165. By Brian Aker <brian@gaz>

SE cleanup interface.

1166. By Brian Aker <brian@gaz>

Merge Jay

1167. By Brian Aker <brian@gaz>

Merging Padraig

1168. By Brian Aker <brian@gaz>

Merge Monty

1169. By Brian Aker <brian@gaz>

Merge Eric

1170. By Brian Aker <brian@gaz>

Merge Stewart.

1171. By Brian Aker <brian@gaz>

Merge Padraig

1172. By Brian Aker <brian@gaz>

Update to delete table to centralize the replication logic.

1173. By Brian Aker <brian@gaz>

Merge Monty

1174. By Brian Aker <brian@gaz>

Merge monty

1175. By Brian Aker <brian@gaz>

Single line fix for 32bit open solaris

1176. By Brian Aker <brian@gaz>

Merge 32bit failures

1177. By Brian Aker <brian@gaz>

Collection of merges from me.

1178. By Brian Aker <brian@gaz>

Merge Diego

1179. By Brian Aker <brian@gaz>

Merge Stewart

1180. By Brian Aker <brian@gaz>

Merge Diego Medina

1181. By Brian Aker <brian@gaz>

Merge Monty, default class.

1182. By Brian Aker <brian@gaz>

Minor Merge

1183. By Brian Aker <brian@gaz>

Merge Monty

1184. By Brian Aker <brian@gaz>

Merge memory

1185. By Brian Aker <brian@gaz>

Merge Engine changes.

1186. By Brian Aker <brian@gaz>

Merge of Monty

1187. By Brian Aker <brian@gaz>

Merge Jay

1188. By Brian Aker <brian@gaz>

Merge Stewart

1189. By Brian Aker <brian@gaz>

Adding in memcached_functions

1190. By Brian Aker <brian@gaz>

Merge Jay.

1191. By Brian Aker <brian@gaz>

Adding test cases that came from SergP.

1192. By Brian Aker <brian@gaz>

Merge Stewart's dead code removal

1193. By Brian Aker <brian@gaz>

Merge Jay

1194. By Brian Aker <brian@gaz>

Removed test for ARCH (it only looked at Intel style systems). Left in SELECT for it.

1195. By Brian Aker <brian@gaz>

Merge Diego

1196. By Brian Aker <brian@gaz>

Small fixes

1197. By Brian Aker <brian@gaz>

Remove test for 32bit max on heap tables.

Yeah... set the HEAP table to max on a 32bit machine and watch the Piñata
go. The value shouldn't be max, but should be some number less then MAX...
aka don't let the user blow up.

1198. By Brian Aker <brian@gaz>

Merge Brian

1199. By Brian Aker <brian@gaz>

Fix comment.

1200. By Brian Aker <brian@gaz>

Clean up some mispellings

1201. By Brian Aker <brian@gaz>

Merge Monty

1202. By Brian Aker <brian@gaz>

Merge Eric

1203. By Brian Aker <brian@gaz>

Merge Monty

1204. By Brian Aker <brian@gaz>

Merge Jay.

1205. By Brian Aker <brian@gaz>

Remove dead function.

1206. By Brian Aker <brian@gaz>

Merging Jay.

1207. By Brian Aker <brian@gaz>

Merge of Padraig && Brian

1208. By Brian Aker <brian@gaz>

Merge Jay

1209. By Brian Aker <brian@gaz>

Merge Monty

1210. By Brian Aker <brian@gaz>

Merge new Truncate

1211. By Brian Aker <brian@gaz>

Reverses old patch which introduced memory leaks. Also found a solution
(worked on Fedora11) to get rid of dlerror() memory leak.

1212. By Brian Aker <brian@gaz>

Rollup of Brian, Padraig, and Stewart patches.

1213. By Brian Aker <brian@gaz>

Fixes startup failures when temporary tables were left behind in a crash.

1214. By Brian Aker <brian@gaz>

Fixes leaked memory during a fail proto read.

1215. By Brian Aker <brian@gaz>

Jay's replication patches

1216. By Brian Aker <brian@gaz>

Fix for ENUM tests (commented out non-utf-8 tests).

1217. By Brian Aker <email address hidden>

Removed bits of charset support from the parser.

1218. By Brian Aker <brian@gaz>

Merge Eric

1219. By Brian Aker <brian@gaz>

Merge Stewart (test re-enable)

1220. By Brian Aker <brian@gaz>

Remove open mode/dead bits around dead temp type.

1221. By Brian Aker <brian@gaz>

Monty + Brian Merge.

1222. By Brian Aker <brian@gaz>

Merge Brian + Stewart

1223. By Brian Aker <brian@gaz>

Merge of Padraig

1224. By Brian Aker <brian@gaz>

Collected Merge.

1225. By Brian Aker <brian@gaz>

Merge for staging.

1226. By Brian Aker <brian@gaz>

Merge Monty

1227. By Brian Aker <brian@gaz>

Bundle Brian + Monty (been through staging, just collecting it as want
overall patch as seen by staging).

1228. By Brian Aker <brian@gaz>

Mege of TableIdentifier gran patch

1229. By Brian Aker <brian@gaz>

Merge Jay

1230. By Brian Aker <brian@gaz>

Fix from Trond.

1231. By Brian Aker <brian@gaz>

Open Table list fix from Monty.

1232. By Brian Aker <brian@gaz>

Whitespace fix.

1233. By Brian Aker <brian@gaz>

Small Innodb fix

1234. By Brian Aker <brian@gaz>

Merge Padraig

1235. By Brian Aker <brian@gaz>

Merge of Brian + Jay test fixes.

1236. By Brian Aker <brian@gaz>

Merge Brian + Monty. This has the HEAP -> MEMORY change in it, so some
breakage for wrong table name is expected.

1237. By Brian Aker <brian@gaz>

Merge current set for staging.

1238. By Brian Aker <brian@gaz>

Merge for staging.

1239. By Brian Aker <brian@gaz>

Bundle for staging.

1240. By Brian Aker <brian@gaz>

Merge Monty

1241. By Brian Aker <brian@gaz>

Merge build

1242. By Brian Aker <brian@gaz>

A few fixes.

1243. By Brian Aker <brian@gaz>

Merge of Padraig/Monty/Trond

1244. By Brian Aker <brian@gaz>

Fixed from Monty.

1245. By Brian Aker <brian@gaz>

Merge Jay

1246. By Brian Aker <brian@gaz>

MErge Padraig

1247. By Brian Aker <brian@gaz>

Merge from Padraig

1248. By Brian Aker <brian@gaz>

Merge from Dennis Schoen

1249. By Brian Aker <brian@gaz>

Merge Valgrind.

1250. By Brian Aker <brian@gaz>

Merge Monty

1251. By Brian Aker <brian@gaz>

Merging in massif option to test-run.pl

1252. By Brian Aker <brian@gaz>

Merge Jay

1253. By Brian Aker <brian@gaz>

Merge Monty

1254. By Brian Aker <brian@gaz>

Merge

1255. By Brian Aker <brian@gaz>

Merge Monty

1256. By Brian Aker <brian@gaz>

Null commit

1257. By Brian Aker <brian@gaz>

Merge of Diego fix.

1258. By Brian Aker <brian@gaz>

Merge Monty

1259. By Brian Aker <brian@gaz>

Merge Monty.

1260. By Brian Aker <brian@gaz>

Merge Monty.

1261. By Brian Aker <brian@gaz>

Merge Monty.

1262. By Brian Aker <brian@gaz>

Merge Monty

1263. By Brian Aker <brian@gaz>

Merge Monty

1264. By Brian Aker <brian@gaz>

Added merge-clean rule that I use :)

1265. By Brian Aker <brian@gaz>

Updated Makefile.am to push client rules to include.am

1266. By Brian Aker <brian@gaz>

Merge Stewart.

1267. By Brian Aker <brian@gaz>

Merge Joe

1268. By Brian Aker <brian@gaz>

Merge Monty

1269. By Brian Aker <brian@gaz>

Merge Joe Daly

1270. By Brian Aker <brian@gaz>

Merge Jay

1271. By Brian Aker <brian@gaz>

Merge Eric

1272. By Brian Aker <brian@gaz>

Merge Monty

1273. By Brian Aker <brian@gaz>

Revert db patch.

1274. By Brian Aker <brian@gaz>

Remove dead code.

1275. By Brian Aker <brian@gaz>

Merge rot13()

1276. By Brian Aker <brian@gaz>

Merge Padraig

1277. By Brian Aker <brian@gaz>

Merged Lee, enabled jp tests by default.

1278. By Brian Aker <brian@gaz>

Merge Jay

1279. By Brian Aker <brian@gaz>

Remove show engine status, and show open tables (which no longer applies in
our design).

1280. By Brian Aker <brian@gaz>

Fix for bad build.

1281. By Brian Aker <brian@gaz>

Rollup of Brian, Jay

1282. By Brian Aker <brian@gaz>

Merge Lee

1283. By Brian Aker <brian@gaz>

Merge Monty

1284. By Brian Aker <brian@gaz>

Merge Monty

1285. By Brian Aker <brian@gaz>

Remove giant include header to its own file.

1286. By Brian Aker <brian@gaz>

Merge Monty.

1287. By Brian Aker <brian@gaz>

Merge Stewart.

1288. By Brian Aker <brian@gaz>

Adding support for RPM/merge Brian

1289. By Brian Aker <brian@gaz>

Merge of Brian/Padraig

1290. By Brian Aker <brian@gaz>

Merge bug fix.

1291. By Brian Aker <brian@gaz>

Merge Stewart.

1292. By Brian Aker <brian@gaz>

Merge in security refactor.

1293. By Brian Aker <brian@gaz>

Merge in Tim's error work.

1294. By Brian Aker <brian@gaz>

Merge Padraig

1295. By Brian Aker <brian@gaz>

Disabling support for memcached plugins until we can test for version of
memcached.

1296. By Brian Aker <brian@gaz>

Remove WEIGHT_STRING() from parser (where it does not belong). If someone
wants to they can reimplement this as a straight function.

1297. By Brian Aker <brian@gaz>

Fix style issue.

1298. By Brian Aker <brian@gaz>

Monty update for Pandora

1299. By Brian Aker <brian@gaz>

Merge.

1300. By Brian Aker <brian@gaz>

Merge in data_dictionary.

1301. By Brian Aker <brian@gaz>

Merge of Brian stuff

1302. By Brian Aker <brian@gaz>

Merge of dead yacc bits.

1303. By Brian Aker <brian@gaz>

Many updates. Brian, Monty.

1304. By Brian Aker <brian@gaz>

Giant merge! Of everything for DD currently.

1305. By Brian Aker <brian@gaz>

Merge.

1306. By Brian Aker <brian@gaz>

Merge JDaly, Lint fixes by brian.

1307. By Brian Aker <brian@gaz>

Merge Padraig.

1308. By Brian Aker <brian@gaz>

Merge of stewart.

1309. By Brian Aker <brian@gaz>

Merge of all patches in build.

1310. By Brian Aker <brian@gaz>

Merge Jay

1311. By Brian Aker <brian@gaz>

Merge Monty

1312. By Brian Aker <brian@gaz>

Merge of Brian

1313. By Brian Aker <brian@gaz>

Merge Brian

1314. By Brian Aker <brian@gaz>

Merge Padraig.

1315. By Brian Aker <brian@gaz>

MErge Strewart.

1316. By Brian Aker <brian@gaz>

Merge up build to staging.

1317. By Brian Aker <brian@gaz>

Merge.

1318. By Brian Aker <brian@gaz>

Merge Stewart.

1319. By Brian Aker <brian@gaz>

Merge.

1320. By Brian Aker <brian@gaz>

MErge.

1321. By Brian Aker <brian@gaz>

Merge.

1322. By Brian Aker <brian@gaz>

Merge Monty/Brian

1323. By Brian Aker <brian@gaz>

Merge Jay's bugfix.

1324. By Brian Aker <brian@gaz>

Merge Jay.

1325. By Brian Aker <brian@gaz>

Merge of Jay

1326. By Brian Aker <brian@gaz>

Merge Jay

1327. By Brian Aker <brian@gaz>

Open solaris fix.

1328. By Brian Aker <brian@gaz>

Bad config.h

1329. By Brian Aker <brian@gaz>

Merge Eric

1330. By Brian Aker <brian@gaz>

Merge in show status work.

1331. By Brian Aker <brian@gaz>

Merge in Padraig changes.

1332. By Brian Aker <brian@gaz>

Merge Monty

1333. By Brian Aker <brian@gaz>

Fix naming issue.

1334. By Brian Aker <brian@gaz>

Merge Lee.

1335. By Brian Aker <brian@gaz>

Merge Jay

1336. By Brian Aker <brian@gaz>

Merge Jay

1337. By Brian Aker <brian@gaz>

Mege Monty

1338. By Brian Aker <brian@gaz>

Merge in Jay's bug fix.

1339. By Brian Aker <brian@gaz>

Jay + extended test case.

1340. By Brian Aker <brian@gaz>

Merge small removal of variables.

1341. By Brian Aker <brian@gaz>

See if these are now cleaned up.

1342. By Brian Aker <brian@gaz>

Merge Brian

1343. By Brian Aker <brian@gaz>

Additional DD.

1344. By Brian Aker <brian@gaz>

Merge Brian

1345. By Brian Aker <brian@gaz>

Corrections.

1346. By Brian Aker <brian@gaz>

Solve non-null termination issue.

1347. By Brian Aker <brian@gaz>

Update/fix for leak.

1348. By Brian Aker <brian@gaz>

Merge Monty (really Tim)

1349. By Brian Aker <brian@gaz>

Merge Padraig

1350. By Brian Aker <brian@gaz>

Merge Brian

1351. By Brian Aker <brian@gaz>

Style changes.

1352. By Brian Aker <brian@gaz>

I'm not entire sure I buy that column default should be varbinary...

1353. By Brian Aker <brian@gaz>

Merge Stewart, but I dropped the plugin for now.

1354. By Brian Aker <brian@gaz>

Merge in I_S tables.

1355. By Brian Aker <brian@gaz>

Make check catch

1356. By Brian Aker <brian@gaz>

Merge for Brian

1357. By Brian Aker <brian@gaz>

Merge Eric.

1358. By Brian Aker <brian@gaz>

Merge Eric.

1359. By Brian Aker <brian@gaz>

Merge Pandora

1360. By Brian Aker <brian@gaz>

Merge Brian

1361. By Brian Aker <brian@gaz>

Merge more cleanup from TableIdentifier.

1362. By Brian Aker <brian@gaz>

Merge Brian

1363. By Brian Aker <brian@gaz>

Merge Brian

1364. By Brian Aker <brian@gaz>

Go at this again.

1365. By Brian Aker <brian@gaz>

Merge Stefan

1366. By Brian Aker <brian@gaz>

Merge Stewart.

1367. By Brian Aker <brian@gaz>

Merge

1368. By Brian Aker <brian@gaz>

Fix build issues, disabled tests (someone needs to go through them... who is
not me).

1369. By Brian Aker <brian@gaz>

Small interface bits.

1370. By Brian Aker <brian@gaz>

Remove dead call.

1371. By Brian Aker <brian@gaz>

Small corrections.

1372. By Brian Aker <brian@gaz>

Save on an identifier creation.

1373. By Brian Aker <brian@gaz>

Simple style cleanup.

1374. By Brian Aker <brian@gaz>

Solaris fix.

1375. By Brian Aker <brian@gaz>

Merge Brian.

1376. By Brian Aker <brian@gaz>

Fix for goto that could be removed.

1377. By Brian Aker <brian@gaz>

Merge DED

1378. By Brian Aker <brian@gaz>

Fix for a path vs fullname connection.

1379. By Brian Aker <brian@gaz>

Merge docs.

1380. By Brian Aker <brian@gaz>

Merge to Trunk.

1381. By Brian Aker <brian@gaz>

Merge Monty.

1382. By Brian Aker <brian@gaz>

We were printing out info on charset (which we don't need to do... and don't
technically have the data for).

1383. By Brian Aker <brian@gaz>

Change Set to Enum

1384. By Brian Aker <brian@gaz>

Merge

1385. By Brian Aker <brian@gaz>

Merge bug fix.

1386. By Brian Aker <brian@gaz>

Adding catalog string.

1387. By Brian Aker <brian@gaz>

Fix for cases where not all files are removed during a deletion of a schema.
I've added a dump of the directory if this happens (I want to see this in
the valgrind reports on lp).

1388. By Brian Aker <brian@gaz>

The temporary engine can handle its own for dictionary calls.

1389. By Brian Aker <brian@gaz>

Large reord in ALTER TABLE for RENAME.

1390. By Brian Aker <brian@gaz>

Update interface to use Identifiers directly.

1391. By Brian Aker <brian@gaz>

Updating interface.

1392. By Brian Aker <brian@gaz>

new code for show tables.

1393. By Brian Aker <brian@gaz>

Merge Monty

1394. By Brian Aker <brian@gaz>

Merge Monty

1395. By Brian Aker <brian@gaz>

Merge.

1396. By Brian Aker <brian@gaz>

Simple rename.

1397. By Brian Aker <brian@gaz>

Merge Monty

1398. By Brian Aker <brian@gaz>

Merge monty

1399. By Brian Aker <brian@gaz>

Merge Monty

1400. By Brian Aker <brian@gaz>

Merge.

1401. By Brian Aker <brian@gaz>

Merge of ALTER TABLE code.

1402. By Brian Aker <brian@gaz>

Re-enabling blackhole.

1403. By Brian Aker <brian@gaz>

Merge Eric

1404. By Brian Aker <brian@gaz>

Merge.

1405. By Brian Aker <brian@gaz>

Merge stewart.

1406. By Brian Aker <email address hidden>

Merge Andrew

1407. By Brian Aker <email address hidden>

Merge Siddharth, ran formatting across it.

Someone really should take these programs apart and clean them up.

1408. By Brian Aker <email address hidden>

Merge Monty

1409. By Brian Aker <email address hidden>

MErge Eric.

1410. By Brian Aker <email address hidden>

Correct output, preserve indention.

1411. By Brian Aker <brian@gaz>

Merge (fixes known issues in ALTER TABLE not resetting correctly DFE).

1412. By Brian Aker <brian@gaz>

Innodb is now in the house (aka... it handls its own DFE).

1413. By Brian Aker <brian@gaz>

doCreateTable() was still taking a pointer instead of a session reference.

1414. By Brian Aker <brian@gaz>

Remove dead type.

1415. By Brian Aker <brian@gaz>

Mass overhaul to use schema_identifier.

1416. By Brian Aker <brian@gaz>

Merge Lee.

1417. By Brian Aker <brian@gaz>

Interface for Stewart.

1418. By Brian Aker <brian@gaz>

Merge Monty's fix.

1419. By Brian Aker <brian@gaz>

Merge.

1420. By Brian Aker <brian@gaz>

Updated to use show schemas specific table.

1421. By Brian Aker <brian@gaz>

Removed dead function.

1422. By Brian Aker <brian@gaz>

Merge from Monty.

1423. By Brian Aker <brian@gaz>

Merge linuxjedi

1424. By Brian Aker <brian@gaz>

Merge Stewart.

1425. By Brian Aker <brian@gaz>

Merge Siddharth

1426. By Brian Aker <brian@gaz>

Merge jobin

1427. By Brian Aker <brian@gaz>

Merge Monty

1428. By Brian Aker <brian@gaz>

Merge.

1429. By Brian Aker <brian@gaz>

Merge

1430. By Brian Aker <brian@gaz>

Merge Zimin

1431. By Brian Aker <brian@gaz>

Merge Stewart.

1432. By Brian Aker <brian@gaz>

Merge Siddharth

1433. By Brian Aker <brian@gaz>

Merge.

1434. By Brian Aker <brian@gaz>

Rework to move show commands merge/etc.

1435. By Brian Aker <brian@gaz>

Merge Monty fix.

1436. By Brian Aker <brian@gaz>

Move toward not having to call current_session (first pass).

1437. By Brian Aker <brian@gaz>

Merge.

1438. By Brian Aker <brian@gaz>

Merge

1439. By Brian Aker <brian@gaz>

Fix for bad header.

1440. By Brian Aker <brian@gaz>

Merge.

1441. By Brian Aker <brian@gaz>

Fixing tests to work with PBXT.

1442. By Brian Aker <brian@gaz>

Merge Jay

1443. By Brian Aker <brian@gaz>

Merge Jay

1444. By Brian Aker <brian@gaz>

Merge Stewart.

1445. By Brian Aker <brian@gaz>

Update for most recent version of libmemcached

1446. By Brian Aker <brian@gaz>

Merge Jay

1447. By Brian Aker <brian@gaz>

Test fix

1448. By Brian Aker <brian@gaz>

Fix for bug on show tables.:w
:x

1449. By Brian Aker <brian@gaz>

Merge Stewart

1450. By Brian Aker <brian@gaz>

Merge Jay

1451. By Brian Aker <brian@gaz>

Merge Eric

1452. By Brian Aker <brian@gaz>

Remove dead code Merge from Tim.

1453. By Brian Aker <brian@gaz>

Merge Joe

1454. By Brian Aker <brian@gaz>

Merge Monty

1455. By Brian Aker <brian@gaz>

Null merge

1456. By Brian Aker <brian@gaz>

Merge in remove checksum code.

1457. By Brian Aker <brian@gaz>

Commit.

1458. By Brian Aker <brian@gaz>

Merge Joe

1459. By Brian Aker <brian@gaz>

Merge Monty

1460. By Brian Aker <brian@gaz>

Seeing static effects valgrind output

1461. By Brian Aker <brian@gaz>

Merge version requirement

1462. By Brian Aker <brian@gaz>

Merge PBXT

1463. By Brian Aker <brian@gaz>

Merge change to load by default

1464. By Brian Aker <brian@gaz>

Merge Jay

1465. By Brian Aker <brian@gaz>

Merge

1466. By Brian Aker <brian@gaz>

Merge

1467. By Brian Aker <brian@gaz>

Merge.

1468. By Brian Aker <brian@gaz>

Fix

1469. By Brian Aker <brian@gaz>

Stored.

1470. By Brian Aker <brian@gaz>

Merge of Monty

1471. By Brian Aker <brian@gaz>

Merge Monty

1472. By Brian Aker <brian@gaz>

Testing bug fix

1473. By Brian Aker <brian@gaz>

Merge docs

1474. By Brian Aker <brian@gaz>

Merge Jay

1475. By Brian Aker <brian@gaz>

Merge Stewart.

1476. By Brian Aker <brian@gaz>

Merge Monty

1477. By Brian Aker <brian@gaz>

Merge Monty

1478. By Brian Aker <brian@gaz>

Merge Paul

1479. By Brian Aker <brian@gaz>

Merge Monty

1480. By Brian Aker <brian@gaz>

Merge range.

1481. By Brian Aker <brian@gaz>

Remove dead code.

1482. By Brian Aker <brian@gaz>

Remove dead index call.

1483. By Brian Aker <brian@gaz>

Small change to move over call to cursor API.

1484. By Brian Aker <brian@gaz>

Use typdef for SessionList

1485. By Brian Aker <brian@gaz>

Updates to confine memroot

1486. By Brian Aker <brian@gaz>

More encapsulation.

1487. By Brian Aker <brian@gaz>

More updates for memory::Root

1488. By Brian Aker <brian@gaz>

Small bug fix for when make_field lacks a mem_root.

1489. By Brian Aker <brian@gaz>

Fix for bad manual-gdb (merged from Monty)

1490. By Brian Aker <brian@gaz>

Updates to remove a fe bits of dead code around C support for plugins
written only in C.

1491. By Brian Aker <brian@gaz>

Remove call bits in dead mrr caller.

1492. By Brian Aker <brian@gaz>

Dead code removal.

1493. By Brian Aker <brian@gaz>

Remove dead call around "fixing" case where MRR lacked buffer.

1494. By Brian Aker <brian@gaz>

Remove usage of multi_malloc

1495. By Brian Aker <brian@gaz>

Updates to remove multi_malloc()

1496. By Brian Aker <brian@gaz>

Dead code pull

1497. By Brian Aker <brian@gaz>

Small fixes, remove malloc usage in share creation.

1498. By Brian Aker <brian@gaz>

Merge Monty

1499. By Brian Aker <brian@gaz>

Merge up Padraig

1500. By Brian Aker <brian@gaz>

Fix for PPC

1501. By Brian Aker <brian@gaz>

Merge Jay

1502. By Brian Aker <brian@gaz>

Merge in heap != myisam

1503. By Brian Aker <brian@gaz>

Merge Brian

1504. By Brian Aker <brian@gaz>

Fixes for "big" suite.

1505. By Brian Aker <brian@gaz>

Merge Jay

1506. By Brian Aker <brian@gaz>

encapsulate engine inside of cursor.

1507. By Brian Aker <brian@gaz>

Small cleanup on handler

1508. By Brian Aker <brian@gaz>

Fix for PBXT build issue

1509. By Brian Aker <brian@gaz>

Merge Monty

1510. By Brian Aker <brian@gaz>

Merge Monty

1511. By Brian Aker <brian@gaz>

This should be dead code, but I am going to see if that was the case.

1512. By Brian Aker <brian@gaz>

Merge of Paul. All PBXT related changes.

1513. By Brian Aker <brian@gaz>

This patch reverts the ROR change which created a memory leak (bzr diff -r 1294..1293)

1514. By Brian Aker <brian@gaz>

Merge Joe

1515. By Brian Aker <brian@gaz>

Merge Monty

1516. By Brian Aker <brian@gaz>

Merge of Sanders (iocache macro to inline).

1517. By Brian Aker <brian@gaz>

Merge Paul's latest PBXT (includes version 1.1)

1518. By Brian Aker <brian@gaz>

Merge Monty -> cppcheck changes, plus change to deleteTable

1519. By Brian Aker <brian@gaz>

Merge Eric. This changed options such that = is now interpreted from last, not first

1520. By Brian Aker <brian@gaz>

Merge Monty

1521. By Brian Aker <brian@gaz>

Merge Eric

1522. By Brian Aker <brian@gaz>

MErge Paul. PBXT only

1523. By Brian Aker <brian@gaz>

Merge joe.

1524. By Brian Aker <brian@gaz>

Merge name changes

1525. By Brian Aker <brian@gaz>

Merge for command line app struct conversion

1526. By Brian Aker <brian@gaz>

Merge in modifications to make TableShare and actual object.

Crazy.

1527. By Brian Aker <brian@gaz>

Merge Monty.

1528. By Brian Aker <brian@gaz>

Merge of TableShare keynames typelib removal.

1529. By Brian Aker <brian@gaz>

MErge Monty (this includes Innodb fix for Stewart).

1530. By Brian Aker <brian@gaz>

Merge Stewart, this increases the max size of indexed columns.

1531. By Brian Aker <brian@gaz>

Rollup merge for typelib/tableshare cleanup.

1532. By Brian Aker <brian@gaz>

just remove entirely the need for fieldnames.

1533. By Brian Aker <brian@gaz>

Merge in key/pair for engine.

1534. By Brian Aker <brian@gaz>

Remove of KeyPartInfo

1535. By Brian Aker <brian@gaz>

Rename of KEY to KeyInfo

1536. By Brian Aker <brian@gaz>

Merge Stewart Innodb only.

1537. By Brian Aker <brian@gaz>

Remove dead options/rename Option and remove the update that we no longer
use.

1538. By Brian Aker <brian@gaz>

Code shuffle on ReadRecord

1539. By Brian Aker <brian@gaz>

Simplify out Open_tables_state() backup/restore (no longer needed).

1540. By Brian Aker <brian@gaz>

Merge. Rename of JoinCache, ReadRecords, and a fix for Hades for stewart's
embedded work.

1541. By Brian Aker <brian@gaz>

Merge of overall patch for TableShare new() work.

1542. By Brian Aker <brian@gaz>

Merge (rename of JOIN to Join)

1543. By Brian Aker <brian@gaz>

Merge Monty

1544. By Brian Aker <brian@gaz>

Merge of events

1545. By Brian Aker <brian@gaz>

Fix for table -> table_share call.

1546. By Brian Aker <brian@gaz>

Merge of Joe's patch (and I updated the author file to include his name as
well).

1547. By Brian Aker <brian@gaz>

This fixes a bug where we did a full open for a temporary table for CREATE
TABLE LIKE when all we really needed to do was look at the definition.

BTW I realized this bug while looking at placeholders and seeing that one
was somehow being reused for a temporary table. We don't have nearly enough
logic in the system to correctly make sure that placeholders do not get
recycled (though they should not be).

1548. By Brian Aker <brian@gaz>

Merge Patrick

1549. By Brian Aker <brian@gaz>

Fix for misspelling.

1550. By Brian Aker <brian@gaz>

Remove dead define.

1551. By Brian Aker <brian@gaz>

This fixes the issue with filesort() possibly crashing on a Function based
table.

1552. By Brian Aker <brian@gaz>

It is somewhat amazing that EXPLAIN works at all (too many myisam assumptions)

1553. By Brian Aker <brian@gaz>

Merge Brian, includes work to move all TableShare to being newed, introduced
placeholder to be used for placeholders. This also includes a number of bug
fixes.

1554. By Brian Aker <brian@gaz>

Merge for auto increment bug.

1555. By Brian Aker <brian@gaz>

Merge Joe, stats.

1556. By Brian Aker <brian@gaz>

Merge Monty

1557. By Brian Aker <brian@gaz>

Confirmation for bug fix.

1558. By Brian Aker <brian@gaz>

Merge Paul's work to use TableShare

1559. By Brian Aker <brian@gaz>

Merge of temp directory change.

1560. By Brian Aker <brian@gaz>

Merge Monty (pandora).

1561. By Brian Aker <brian@gaz>

Merge of tmp files cleanup.

1562. By Brian Aker <brian@gaz>

Merge Joe's scheduler fix

1563. By Brian Aker <brian@gaz>

Merge Hartmut

1564. By Brian Aker <brian@gaz>

Merge Translations

1565. By Brian Aker <brian@gaz>

Merge Patrick

1566. By Brian Aker <brian@gaz>

This fixes the issue where a tmp file might still exist once Innodb has
finished an alter table.

1567. By Brian Aker <brian@gaz>

Remove restriction on schemas named temporary.

1568. By Brian Aker <brian@gaz>

Merge of Brian, Paul. PBXT compile issue, and test framework cleanup.

1569. By Brian Aker <brian@gaz>

Merge of Joe

1570. By Brian Aker <brian@gaz>

Clean up message for compression failure.

1571. By Brian Aker <brian@gaz>

Merge Stewart.

1572. By Brian Aker <brian@gaz>

Merge of Stewart.

1573. By Brian Aker <brian@gaz>

Merge Monty, just a note for freebsd during configure.

1574. By Brian Aker <brian@gaz>

Rollup patch for hiding tableshare.

1575. By Brian Aker <brian@gir>

First part, remove pack flags.

1576. By Brian Aker <brian@gir>

Remove pack flag from Create.

1577. By Brian Aker <brian@gir>

Next bit of pack removal (this removes it from where we store it).

1578. By Brian Aker <brian@gir>

Merge Brian

1579. By Monty Taylor

Merged in pthread atomics unittests and archive_reader
boost::program_options, with build fixes for solaris.

1580. By Brian Aker <brian@gaz>

MErge VJ

1581. By Monty Taylor

Merged in update of drizzleslap build warning suppression.

1582. By Brian Aker <brian@gaz>

Merge auth_ldap information.

1583. By Brian Aker <brian@gaz>

Merge in Stewart's Embedded work.

1584. By Brian Aker <brian@gaz>

Fix for compiler warning.

1585. By Brian Aker <brian@gaz>

Merge Brian, mostly encapsulation around TableShare.

1586. By Monty Taylor

Merged in atomic unittest expansion.

1587. By Monty Taylor

Mereged fix of InnoDB autoincrement behavior.

1588. By Monty Taylor

Fixed solaris build issue.

1589. By Brian Aker <brian@gaz>

Merge row.

1590. By Brian Aker <brian@gaz>

Merge Stewart.

1591. By Brian Aker <brian@gaz>

Small bits of field abstraction.

1592. By Brian Aker <brian@gaz>

Merge for getTable() to have its own getField.* type methods.

1593. By Brian Aker <brian@gaz>

Merge in Barry.

1594. By Brian Aker <brian@gaz>

Merge Stewart.

1595. By Brian Aker <brian@gaz>

Merge Stewart.

1596. By Brian Aker <brian@gaz>

rand() merge from Stewart.

1597. By Brian Aker <brian@gaz>

Merge Monty

1598. By Brian Aker <brian@gaz>

NULL Merge.

1599. By Brian Aker <brian@gaz>

Merge Andrew.

1600. By Brian Aker <brian@gaz>

Rollup patch. Mainly has current_session removed.

1601. By Brian Aker <brian@gaz>

Move functions to class methods.

1602. By Brian Aker <brian@gaz>

Update for current_session removal.

1603. By Brian Aker <brian@gaz>

Remove current_session from usage in table stats logging.

1604. By Brian Aker <brian@gaz>

REmove current_session for heap, show temp

1605. By Brian Aker <brian@gaz>

Remove current_session from myisam.

1606. By Brian Aker <brian@gaz>

datetime was still allowing an alter table with an invalid date.

1607. By Brian Aker <brian@gaz>

Cursor now fully handles the update to timestamp for the engine.

1608. By Brian Aker <brian@gaz>

This encapsulates prev/next.

1609. By Brian Aker <brian@gaz>

Rollup merge.

1610. By Brian Aker <brian@gaz>

Merge in some recent changes to tableshare.

1611. By Brian Aker <brian@gaz>

MErge up CSV.

1612. By Brian Aker <brian@gaz>

Merge Monty

1613. By Brian Aker <brian@gaz>

Fix solaris warning.

1614. By Brian Aker <brian@gaz>

Merge Joe

1615. By Brian Aker <brian@gaz>

MErge VJ

1616. By Brian Aker <brian@gaz>

Discovery that create table like was not going through replication path
correctly.

1617. By Brian Aker <brian@gaz>

Merge Joe.

1618. By Brian Aker <brian@gaz>

This is a rollup set of patches for modifications to TableIdentifier to have
a getKey() which is now used for open_cache and table_share_def cache. This
also includes additional unittests on TableIdentifier, and makes use of some
cleanup, though not perfect, to TableShare for its contructors.

1619. By Monty Taylor

Added include.

1620. By Monty Taylor

Merged Pawel from lp:~pblokus/drizzle/unittests-plugin-interfaces

1621. By Monty Taylor

Fixed a missing make distcheck entry.

1622. By Monty Taylor

Merged Joe Daly from lp:~skinny.moey/drizzle/fix_global_stats

1623. By Monty Taylor

Fixed a non-initialized issue on OSX.

1624. By Monty Taylor

Merged Vijay's refactoring of drizzletest from
lp:~vjsamuel/drizzle/refactor-drizzletest

1625. By Monty Taylor

Merged Brian's TableShare key usage from lp:~brianaker/drizzle/tableshare-key

1626. By Monty Taylor

Merged in BlitzDB.

1627. By Monty Taylor

Killed a valgrind warning that had snuck in.

1628. By Monty Taylor

Rollup patch featuring: boost::program_options support for plugins, a
valgrind fix, a bugfix for password processing and a few build fixes.

1629. By Monty Taylor

Merged in Brian's const TableIdentifiter work.

1630. By Monty Taylor

Added sleep call to try to avoid the spurrious socket errors on freebsd.

1631. By Monty Taylor

Fixed the OSX build. Again.

1632. By Monty Taylor

Undid attempt at fixing sporadic freebsd issue.

1633. By Monty Taylor

Merge of Patrick's schema_dictionary test changes, Stewart's HA Status
variable move and more module program_options work.

1634. By Monty Taylor

Merge of the last bits of program_options plugin module integration:
printing help messages.

1635. By Brian Aker <brian@gaz>

Merge up of Brian to trunk. Mainly work on ha_open, and some current_session
work.

1636. By Brian Aker <brian@gaz>

Merge in work for count_cuted_fields

1637. By Brian Aker <brian@gaz>

Merge in changes to call error on bad data input.

1638. By Monty Taylor

Fixes from Brian to increase strictness/correctness, Toru to remove
current_session from blitzdb, a race condition bugfix from Joe Daly,
and moving of when plugins call program_options from Monty.

1639. By Monty Taylor

Merged in staging changes: Mark's syslog patch and vijay's program_options.

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2009-07-29 17:45:51 +0000
3+++ .bzrignore 2009-09-09 00:38:19 +0000
4@@ -274,3 +274,5 @@
5 po/POTFILES.in
6 drizzled/message/command_reader
7 TAGS
8+*replication.pb.*
9+drizzled/message/table_raw_reader
10
11=== modified file 'Makefile.am'
12--- Makefile.am 2009-08-07 19:45:29 +0000
13+++ Makefile.am 2009-09-09 00:38:19 +0000
14@@ -146,7 +146,6 @@
15 mysys/mf_sort.cc \
16 mysys/mf_tempfile.cc \
17 mysys/mf_wcomp.cc \
18- mysys/mulalloc.cc \
19 mysys/my_access.cc \
20 mysys/my_alloc.cc \
21 mysys/my_bit.cc \
22@@ -286,23 +285,6 @@
23 mv $@-t $@ ; \
24 fi
25
26-if HAVE_LCOV
27-
28-lcov: lcov-clean test lcov/index.html
29-
30-lcov/drizzle.output: drizzled/drizzled
31- mkdir -p lcov
32- ${LCOV} --directory ${top_srcdir}/lcov --capture --output-file lcov/drizzle.output
33-
34-lcov/index.html: lcov/drizzle.output
35- ${GENHTML} -o lcov lcov/drizzle.output
36-
37-lcov-clean:
38- ln -fs pars/pars0lex.l ${top_srcdir}/storage/innobase/pars0lex.l
39- ln -fs pars/lexyy.c ${top_srcdir}/storage/innobase/lexyy.c
40- ln -fs pars/pars0grm.c ${top_srcdir}/storage/innobase/pars0grm.c
41- ln -fs pars/pars0grm.y ${top_srcdir}/storage/innobase/pars0grm.y
42-
43- ${LCOV} --directory ${top_srcdir} --zerocounters
44-
45-endif
46+clean-local:
47+ find . -name '*.gcno' -exec rm -f {} \;
48+
49
50=== modified file 'client/client_priv.h'
51--- client/client_priv.h 2009-04-17 21:01:47 +0000
52+++ client/client_priv.h 2009-09-09 00:38:19 +0000
53@@ -14,23 +14,25 @@
54 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
55
56 /* Common defines for all clients */
57-
58-#include <drizzled/global.h>
59+#ifndef CLIENT_CLIENT_PRIV_H
60+#define CLIENT_CLIENT_PRIV_H
61+
62+#include "config.h"
63+
64+#include CSTDINT_H
65+#include CINTTYPES_H
66+
67+#include <cstdio>
68+#include <cassert>
69+#include <ctime>
70+
71+#include <fcntl.h>
72+
73 #include <libdrizzle/drizzle_client.h>
74-#include <mysys/my_getopt.h>
75
76+#include "mysys/my_getopt.h"
77 #include "client/get_password.h"
78
79-#if TIME_WITH_SYS_TIME
80-# include <sys/time.h>
81-# include <time.h>
82-#else
83-# if HAVE_SYS_TIME_H
84-# include <sys/time.h>
85-# else
86-# include <time.h>
87-# endif
88-#endif
89
90 enum options_client
91 {
92@@ -93,3 +95,5 @@
93 OPT_MAX_CLIENT_OPTION,
94 OPT_SHOW_PROGRESS_SIZE
95 };
96+
97+#endif /* CLIENT_CLIENT_PRIV_H */
98
99=== modified file 'client/drizzle.cc'
100--- client/drizzle.cc 2009-07-20 18:10:47 +0000
101+++ client/drizzle.cc 2009-09-09 00:38:19 +0000
102@@ -34,17 +34,13 @@
103 **/
104
105 #include "client_priv.h"
106-#include <string>
107-#include <algorithm>
108-#include <mystrings/m_ctype.h>
109-#include <stdarg.h>
110-#include "client/linebuffer.h"
111-#include <signal.h>
112+
113+#include <cstdarg>
114+#include <csignal>
115 #include <sys/ioctl.h>
116-#include <drizzled/configmake.h>
117
118 #if defined(HAVE_CURSES_H) && defined(HAVE_TERM_H)
119-#include <curses.h>
120+# include <curses.h>
121 #ifdef __sun
122 #undef clear
123 #undef erase
124@@ -71,6 +67,7 @@
125 #endif
126 #endif
127 #endif
128+#include <cmath>
129
130 #ifdef HAVE_LIBREADLINE
131 # if defined(HAVE_READLINE_READLINE_H)
132@@ -99,6 +96,18 @@
133 /* no history */
134 #endif /* HAVE_READLINE_HISTORY */
135
136+#include <clocale>
137+#include <string>
138+#include <algorithm>
139+#include <iostream>
140+#include <map>
141+
142+#include "mystrings/m_ctype.h"
143+#include "client/linebuffer.h"
144+#include "drizzled/configmake.h"
145+#include "drizzled/gettext.h"
146+
147+
148 #define DRIZZLE_DEFAULT_INPUT_LINE 65536
149
150 /**
151@@ -111,25 +120,12 @@
152 completion_matches((char *)str, (CPFunction *)func)
153 #endif
154
155-#if defined(HAVE_LOCALE_H)
156-#include <locale.h>
157-#endif
158-
159-#include <drizzled/gettext.h>
160-
161-
162-void* sql_alloc(unsigned size); // Don't use drizzled alloc for these
163-void sql_element_free(void *ptr);
164-
165
166 #if !defined(HAVE_VIDATTR)
167 #undef vidattr
168 #define vidattr(A) {} // Can't get this to work
169 #endif
170
171-#include <iostream>
172-#include <map>
173-
174 using namespace std;
175
176 const string VER("14.14");
177@@ -1144,8 +1140,6 @@
178
179 int main(int argc,char *argv[])
180 {
181- char buff[80];
182-
183 #if defined(ENABLE_NLS)
184 # if defined(HAVE_LOCALE_H)
185 setlocale(LC_ALL, "");
186@@ -1317,10 +1311,9 @@
187 sprintf(histfile_tmp, "%s.TMP", histfile);
188 }
189 }
190- sprintf(buff, "%s",
191- _("Type 'help;' or '\\h' for help. Type '\\c' to clear the buffer.\n"));
192
193- put_info(buff,INFO_INFO,0,0);
194+ put_info(_("Type 'help;' or '\\h' for help. "
195+ "Type '\\c' to clear the buffer.\n"),INFO_INFO,0,0);
196 status.exit_status= read_and_execute(!status.batch);
197 if (opt_outfile)
198 end_tee();
199@@ -1570,12 +1563,12 @@
200 {"select_limit", OPT_SELECT_LIMIT,
201 N_("Automatic limit for SELECT when using --safe-updates"),
202 (char**) &select_limit,
203- (char**) &select_limit, 0, GET_UINT32, REQUIRED_ARG, 1000L, 1, ULONG_MAX,
204+ (char**) &select_limit, 0, GET_UINT32, REQUIRED_ARG, 1000L, 1, UINT32_MAX,
205 0, 1, 0},
206 {"max_join_size", OPT_MAX_JOIN_SIZE,
207 N_("Automatic limit for rows in a join when using --safe-updates"),
208 (char**) &max_join_size,
209- (char**) &max_join_size, 0, GET_UINT32, REQUIRED_ARG, 1000000L, 1, ULONG_MAX,
210+ (char**) &max_join_size, 0, GET_UINT32, REQUIRED_ARG, 1000000L, 1, UINT32_MAX,
211 0, 1, 0},
212 {"secure-auth", OPT_SECURE_AUTH, N_("Refuse client connecting to server if it uses old (pre-4.1.1) protocol"), (char**) &opt_secure_auth,
213 (char**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
214@@ -1772,7 +1765,8 @@
215 case 'B':
216 status.batch= 1;
217 status.add_to_history= 0;
218- set_if_bigger(opt_silent,1); // more silent
219+ if (opt_silent < 1)
220+ opt_silent= 1;
221 break;
222 case 'V':
223 usage(1);
224@@ -1986,7 +1980,7 @@
225 bool *ml_comment)
226 {
227 unsigned char inchar;
228- char buff[80], *pos, *out;
229+ char *pos, *out;
230 COMMANDS *com;
231 bool need_space= 0;
232 bool ss_comment= 0;
233@@ -2076,8 +2070,12 @@
234 }
235 else
236 {
237- sprintf(buff,_("Unknown command '\\%c'."),inchar);
238- if (put_info(buff,INFO_ERROR,0,0) > 0)
239+ string buff(_("Unknown command: "));
240+ buff.push_back('\'');
241+ buff.push_back(inchar);
242+ buff.push_back('\'');
243+ buff.push_back('.');
244+ if (put_info(buff.c_str(),INFO_ERROR,0,0) > 0)
245 return(1);
246 *out++='\\';
247 *out++=(char) inchar;
248@@ -2544,36 +2542,9 @@
249 completion_iter= completion_map.begin();
250 }
251
252-/* for gnu readline */
253-
254-#ifndef HAVE_INDEX
255-extern "C" {
256- extern char *index(const char *,int c),*rindex(const char *,int);
257-
258- char *index(const char *s,int c)
259- {
260- for (;;)
261- {
262- if (*s == (char) c) return (char*) s;
263- if (!*s++) return NULL;
264- }
265- }
266-
267- char *rindex(const char *s,int c)
268- {
269- register char *t;
270-
271- t = NULL;
272- do if (*s == (char) c) t = (char*) s; while (*s++);
273- return (char*) t;
274- }
275-}
276-#endif
277-
278
279 static int reconnect(void)
280 {
281- /* purecov: begin tested */
282 if (opt_reconnect)
283 {
284 put_info(_("No connection. Trying to reconnect..."),INFO_INFO,0,0);
285@@ -2583,7 +2554,6 @@
286 }
287 if (!connected)
288 return put_info(_("Can't connect to the server\n"),INFO_ERROR,0,0);
289- /* purecov: end */
290 return 0;
291 }
292
293@@ -3624,7 +3594,7 @@
294 else
295 {
296 /* Quick re-connect */
297- opt_rehash= 0; /* purecov: tested */
298+ opt_rehash= 0;
299 }
300 // command used
301 assert(buffer!=NULL);
302
303=== modified file 'client/drizzledump.cc'
304--- client/drizzledump.cc 2009-07-11 02:27:48 +0000
305+++ client/drizzledump.cc 2009-09-09 00:38:19 +0000
306@@ -35,8 +35,8 @@
307 #include <mysys/my_sys.h>
308 #include <mystrings/m_string.h>
309 #include <mystrings/m_ctype.h>
310-#include <mysys/hash.h>
311-#include <stdarg.h>
312+#include "drizzled/hash.h"
313+#include <cstdarg>
314 #include <algorithm>
315
316 #include <drizzled/gettext.h>
317@@ -163,16 +163,20 @@
318 (1<<6) | /* MAXDB */\
319 (1<<10) /* ANSI */\
320 )
321-TYPELIB compatible_mode_typelib= {array_elements(compatible_mode_names) - 1,
322- "", compatible_mode_names, NULL};
323+TYPELIB compatible_mode_typelib=
324+{
325+ sizeof(compatible_mode_names)/sizeof(compatible_mode_names[0]) -1,
326+ "", compatible_mode_names, NULL
327+};
328
329-HASH ignore_table;
330+drizzled::hash_set<string> ignore_table;
331
332 static struct my_option my_long_options[] =
333 {
334 {"all", 'a', "Deprecated. Use --create-options instead.",
335- (char**) &create_options, (char**) &create_options, 0, GET_BOOL, NO_ARG, 1,
336- 0, 0, 0, 0, 0},
337+ reinterpret_cast<char**>(&create_options),
338+ reinterpret_cast<char**>(&create_options),
339+ 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
340 {"all-databases", 'A',
341 "Dump all the databases. This will be same as --databases with all databases selected.",
342 (char**) &opt_alldbs, (char**) &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
343@@ -530,19 +534,6 @@
344 } /* write_footer */
345
346
347-static void free_table_ent(char *key)
348-{
349- free(key);
350-}
351-
352-
353-static unsigned char* get_table_key(const char *entry, size_t *length, bool)
354-{
355- *length= strlen(entry);
356- return (unsigned char*) entry;
357-}
358-
359-
360 bool get_one_option(int optid, const struct my_option *, char *argument)
361 {
362 char *endchar= NULL;
363@@ -656,9 +647,8 @@
364 fprintf(stderr, _("Illegal use of option --ignore-table=<database>.<table>\n"));
365 exit(1);
366 }
367- char * tmpptr= strdup(argument);
368- if (!(tmpptr) || my_hash_insert(&ignore_table, (unsigned char*)tmpptr))
369- exit(EX_EOM);
370+ string tmpptr(argument);
371+ ignore_table.insert(tmpptr);
372 break;
373 }
374 case (int) OPT_COMPATIBLE:
375@@ -706,11 +696,6 @@
376 load_defaults("drizzle",load_default_groups,argc,argv);
377 defaults_argv= *argv;
378
379- if (hash_init(&ignore_table, charset_info, 16, 0, 0,
380- (hash_get_key) get_table_key,
381- (hash_free_key) free_table_ent, 0))
382- return(EX_EOM);
383-
384 if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option)))
385 return(ho_error);
386
387@@ -924,8 +909,6 @@
388 if (md_result_file && md_result_file != stdout)
389 fclose(md_result_file);
390 free(opt_password);
391- if (hash_inited(&ignore_table))
392- hash_free(&ignore_table);
393 if (defaults_argv)
394 free_defaults(defaults_argv);
395 my_end(my_end_arg);
396@@ -2382,9 +2365,11 @@
397
398 /* Return 1 if we should copy the table */
399
400-static bool include_table(const unsigned char *hash_key, size_t len)
401+static bool include_table(const char *hash_key, size_t key_size)
402 {
403- return !hash_search(&ignore_table, hash_key, len);
404+ string match(hash_key, key_size);
405+ drizzled::hash_set<string>::iterator iter= ignore_table.find(match);
406+ return (iter == ignore_table.end());
407 }
408
409
410@@ -2396,6 +2381,7 @@
411 drizzle_result_st result;
412 drizzle_return_t ret;
413
414+ memset(hash_key, 0, DRIZZLE_MAX_DB_SIZE+DRIZZLE_MAX_TABLE_SIZE+2);
415 afterdot= strcpy(hash_key, database) + strlen(database);
416 *afterdot++= '.';
417
418@@ -2417,7 +2403,7 @@
419 while ((table= getTableName(0)))
420 {
421 char *end= strcpy(afterdot, table) + strlen(table);
422- if (include_table((unsigned char*) hash_key, end - hash_key))
423+ if (include_table(hash_key, end - hash_key))
424 {
425 dump_table(table,database);
426 free(order_by);
427@@ -2861,7 +2847,6 @@
428 drizzle_result_st result;
429
430 compatible_mode_normal_str[0]= 0;
431- memset(&ignore_table, 0, sizeof(ignore_table));
432
433 exit_code= get_options(&argc, &argv);
434 if (exit_code)
435
436=== modified file 'client/drizzleimport.cc'
437--- client/drizzleimport.cc 2009-07-11 02:27:48 +0000
438+++ client/drizzleimport.cc 2009-09-09 00:38:19 +0000
439@@ -27,12 +27,14 @@
440 #define IMPORT_VERSION "3.7"
441
442 #include "client_priv.h"
443+
444+#include <pthread.h>
445+
446+#include <sstream>
447 #include <string>
448
449-#include <pthread.h>
450-
451 /* Added this for string translation. */
452-#include <drizzled/gettext.h>
453+#include "drizzled/gettext.h"
454
455 using namespace std;
456
457@@ -604,7 +606,7 @@
458 {
459 struct timespec abstime;
460
461- set_timespec(abstime, 3);
462+ set_timespec(&abstime, 3);
463 pthread_cond_timedwait(&count_threshhold, &counter_mutex, &abstime);
464 }
465 /* Before exiting the lock we set ourselves up for the next thread */
466@@ -647,7 +649,7 @@
467 if (!(con= db_connect(current_host,current_db,current_user,opt_password)))
468 {
469 free_defaults(argv_to_free);
470- return(1); /* purecov: deadcode */
471+ return(1);
472 }
473
474 if (drizzle_query_str(con, &result,
475
476=== modified file 'client/drizzleslap.cc'
477--- client/drizzleslap.cc 2009-07-13 19:24:14 +0000
478+++ client/drizzleslap.cc 2009-09-09 21:03:12 +0000
479@@ -70,25 +70,30 @@
480
481 */
482
483-#define SLAP_VERSION "1.5"
484-
485-#define HUGE_STRING_LENGTH 8196
486-#define RAND_STRING_SIZE 126
487-#define DEFAULT_BLOB_SIZE 1024
488-
489-#include "client_priv.h"
490-#include <signal.h>
491-#include <stdarg.h>
492+#include "client/client_priv.h"
493+
494+#include <cctype>
495+#include <csignal>
496+#include <cstdarg>
497+#include <cmath>
498+
499 #include <sys/types.h>
500 #include <sys/wait.h>
501-#include <ctype.h>
502+#include <sys/stat.h>
503+
504 #include <string>
505
506 /* Added this for string translation. */
507-#include <drizzled/gettext.h>
508+#include "drizzled/gettext.h"
509
510 using namespace std;
511
512+#define SLAP_VERSION "1.5"
513+
514+#define HUGE_STRING_LENGTH 8196
515+#define RAND_STRING_SIZE 126
516+#define DEFAULT_BLOB_SIZE 1024
517+
518 #ifdef HAVE_SMEM
519 static char *shared_memory_base_name=0;
520 #endif
521@@ -176,7 +181,7 @@
522
523 const char *default_dbug_option= "d:t:o,/tmp/drizzleslap.trace";
524 const char *opt_csv_str;
525-File csv_file;
526+int csv_file;
527
528 static int get_options(int *argc,char ***argv);
529 static uint32_t opt_drizzle_port= 0;
530@@ -222,7 +227,7 @@
531 uint32_t users;
532 uint32_t real_users;
533 uint64_t rows;
534- long int create_timing;
535+ long create_timing;
536 uint64_t create_count;
537 };
538
539@@ -301,15 +306,23 @@
540 #define ALPHANUMERICS_SIZE (sizeof(ALPHANUMERICS)-1)
541
542
543-static long int timedif(struct timeval a, struct timeval b)
544+static long timedif(const timespec& start, const timespec& end)
545 {
546- register int us, s;
547-
548- us = a.tv_usec - b.tv_usec;
549- us /= 1000;
550- s = a.tv_sec - b.tv_sec;
551- s *= 1000;
552- return s + us;
553+ timespec temp;
554+ if ((end.tv_nsec-start.tv_nsec) < 0)
555+ {
556+ /*
557+ * Elementary school subtraction... borrow a second from the
558+ * seconds column and add it to the nsec column so that we don't
559+ * end up with a negative nsec.
560+ */
561+ temp.tv_sec = end.tv_sec-start.tv_sec-1;
562+ temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;
563+ } else {
564+ temp.tv_sec = end.tv_sec-start.tv_sec;
565+ temp.tv_nsec = end.tv_nsec-start.tv_nsec;
566+ }
567+ return (temp.tv_sec*1000)+(temp.tv_nsec/1000000);
568 }
569
570 int main(int argc, char **argv)
571@@ -1541,7 +1554,7 @@
572 {
573 if (create_string && !stat(create_string, &sbuf))
574 {
575- File data_file;
576+ int data_file;
577 if (!S_ISREG(sbuf.st_mode))
578 {
579 fprintf(stderr,"%s: Create file was not a regular file\n",
580@@ -1598,7 +1611,7 @@
581
582 if (user_supplied_query && !stat(user_supplied_query, &sbuf))
583 {
584- File data_file;
585+ int data_file;
586 if (!S_ISREG(sbuf.st_mode))
587 {
588 fprintf(stderr,"%s: User query supplied file was not a regular file\n",
589@@ -1645,7 +1658,7 @@
590 if (user_supplied_pre_statements
591 && !stat(user_supplied_pre_statements, &sbuf))
592 {
593- File data_file;
594+ int data_file;
595 if (!S_ISREG(sbuf.st_mode))
596 {
597 fprintf(stderr,"%s: User query supplied file was not a regular file\n",
598@@ -1692,7 +1705,7 @@
599 if (user_supplied_post_statements
600 && !stat(user_supplied_post_statements, &sbuf))
601 {
602- File data_file;
603+ int data_file;
604 if (!S_ISREG(sbuf.st_mode))
605 {
606 fprintf(stderr,"%s: User query supplied file was not a regular file\n",
607@@ -1887,10 +1900,9 @@
608 statement *after_create;
609 int len;
610 uint64_t count;
611- struct timeval start_time, end_time;
612-
613-
614- gettimeofday(&start_time, NULL);
615+ timespec start_time, end_time;
616+
617+ clock_gettime(CLOCK_REALTIME, &start_time);
618
619 len= snprintf(query, HUGE_STRING_LENGTH, "CREATE SCHEMA `%s`", db);
620
621@@ -1989,9 +2001,9 @@
622 goto limit_not_met;
623 }
624
625- gettimeofday(&end_time, NULL);
626+ clock_gettime(CLOCK_REALTIME, &end_time);
627
628- sptr->create_timing= timedif(end_time, start_time);
629+ sptr->create_timing= timedif(start_time, end_time);
630
631 return(0);
632 }
633@@ -2040,7 +2052,7 @@
634 uint32_t x;
635 uint32_t y;
636 unsigned int real_concurrency;
637- struct timeval start_time, end_time;
638+ timespec start_time, end_time;
639 option_string *sql_type;
640 thread_context *con;
641 pthread_t mainthread; /* Thread descriptor */
642@@ -2123,7 +2135,7 @@
643 pthread_mutex_unlock(&sleeper_mutex);
644 pthread_cond_broadcast(&sleep_threshhold);
645
646- gettimeofday(&start_time, NULL);
647+ clock_gettime(CLOCK_REALTIME, &start_time);
648
649 /*
650 We loop until we know that all children have cleaned up.
651@@ -2131,17 +2143,17 @@
652 pthread_mutex_lock(&counter_mutex);
653 while (thread_counter)
654 {
655- struct timespec abstime;
656+ timespec abstime;
657
658- set_timespec(abstime, 3);
659+ set_timespec(&abstime, 3);
660 pthread_cond_timedwait(&count_threshhold, &counter_mutex, &abstime);
661 }
662 pthread_mutex_unlock(&counter_mutex);
663
664- gettimeofday(&end_time, NULL);
665-
666-
667- sptr->timing= timedif(end_time, start_time);
668+ clock_gettime(CLOCK_REALTIME, &end_time);
669+
670+
671+ sptr->timing= timedif(start_time, end_time);
672 sptr->users= concur;
673 sptr->real_users= real_concurrency;
674 sptr->rows= limit;
675@@ -2167,7 +2179,7 @@
676 }
677 pthread_mutex_unlock(&sleeper_mutex);
678
679- set_timespec(abstime, *timer_length);
680+ set_timespec(&abstime, *timer_length);
681
682 pthread_mutex_lock(&timer_alarm_mutex);
683 pthread_cond_timedwait(&timer_alarm_threshold, &timer_alarm_mutex, &abstime);
684
685=== modified file 'client/drizzletest.cc'
686--- client/drizzletest.cc 2009-08-20 17:40:03 +0000
687+++ client/drizzletest.cc 2009-09-09 21:03:12 +0000
688@@ -50,16 +50,19 @@
689 #ifdef HAVE_SYS_WAIT_H
690 #include <sys/wait.h>
691 #endif
692+#include <sys/types.h>
693+#include <sys/stat.h>
694+
695
696 #include PCRE_HEADER
697
698-#include <mysys/hash.h>
699-#include <stdarg.h>
700+#include <cstdarg>
701
702 #include "errname.h"
703
704 /* Added this for string translation. */
705-#include <drizzled/gettext.h>
706+#include "drizzled/gettext.h"
707+#include "drizzled/hash.h"
708
709 #ifndef DRIZZLE_RETURN_SERVER_GONE
710 #define DRIZZLE_RETURN_HANDSHAKE_FAILED DRIZZLE_RETURN_ERROR_CODE
711@@ -94,7 +97,7 @@
712 const char *opt_user= NULL, *opt_host= NULL, *unix_sock= NULL,
713 *opt_basedir= "./";
714 const char *opt_logdir= "";
715-const char *opt_include= NULL, *opt_charsets_dir;
716+const char *opt_include= NULL;
717 const char *opt_testdir= NULL;
718 static uint32_t opt_port= 0;
719 static int opt_max_connect_retries;
720@@ -156,8 +159,6 @@
721 static struct st_test_file* file_stack_end;
722
723
724-static const CHARSET_INFO *charset_info= &my_charset_utf8_general_ci; /* Default charset */
725-
726 static int embedded_server_arg_count=0;
727 static char *embedded_server_args[MAX_EMBEDDED_SERVER_ARGS];
728
729@@ -206,7 +207,8 @@
730 /*Perl/shell-like variable registers */
731 VAR var_reg[10];
732
733-HASH var_hash;
734+
735+drizzled::hash_map<string, VAR *> var_hash;
736
737 struct st_connection
738 {
739@@ -391,8 +393,13 @@
740 enum enum_commands type;
741 };
742
743-TYPELIB command_typelib= {array_elements(command_names),"",
744- command_names, 0};
745+TYPELIB command_typelib=
746+{
747+ sizeof(command_names)/sizeof(command_names[0]),
748+ "",
749+ command_names,
750+ 0
751+};
752
753 string ds_res, ds_progress, ds_warning_messages;
754
755@@ -412,7 +419,7 @@
756 VAR* var_from_env(const char *, const char *);
757 VAR* var_init(VAR* v, const char *name, int name_len, const char *val,
758 int val_len);
759-extern "C" void var_free(void* v);
760+void var_free(pair<string, VAR*> v);
761 VAR* var_get(const char *var_name, const char** var_name_end,
762 bool raw, bool ignore_not_existing);
763 void eval_expr(VAR* v, const char *p, const char** p_end);
764@@ -884,9 +891,10 @@
765
766 close_connections();
767 close_files();
768- hash_free(&var_hash);
769+ for_each(var_hash.begin(), var_hash.end(), var_free);
770+ var_hash.clear();
771
772- vector<struct st_command *>::iterator iter;
773+ vector<st_command *>::iterator iter;
774 for (iter= q_lines.begin() ; iter < q_lines.end() ; iter++)
775 {
776 struct st_command * q_line= *iter;
777@@ -1329,10 +1337,10 @@
778
779 */
780
781-static int compare_files2(File fd, const char* filename2)
782+static int compare_files2(int fd, const char* filename2)
783 {
784 int error= RESULT_OK;
785- File fd2;
786+ int fd2;
787 uint32_t len, len2;
788 char buff[512], buff2[512];
789 const char *fname= filename2;
790@@ -1407,7 +1415,7 @@
791
792 static int compare_files(const char* filename1, const char* filename2)
793 {
794- File fd;
795+ int fd;
796 int error;
797
798 if ((fd= my_open(filename1, O_RDONLY, MYF(0))) < 0)
799@@ -1436,7 +1444,7 @@
800 static int string_cmp(string* ds, const char *fname)
801 {
802 int error;
803- File fd;
804+ int fd;
805 char temp_file_path[FN_REFLEN];
806
807 if ((fd= create_temp_file(temp_file_path, NULL,
808@@ -1569,7 +1577,7 @@
809 char* ptr= str;
810
811 /* Check if the first non space character is c1 */
812- while(*ptr && my_isspace(charset_info, *ptr))
813+ while(*ptr && isspace(*ptr))
814 ptr++;
815 if (*ptr == c1)
816 {
817@@ -1578,7 +1586,7 @@
818
819 /* Last non space charecter should be c2 */
820 ptr= strchr(str, '\0')-1;
821- while(*ptr && my_isspace(charset_info, *ptr))
822+ while(*ptr && isspace(*ptr))
823 ptr--;
824 if (*ptr == c2)
825 {
826@@ -1603,14 +1611,6 @@
827 }
828
829
830-unsigned char *get_var_key(const unsigned char* var, size_t *len, bool)
831-{
832- register char* key;
833- key = ((VAR*)var)->name;
834- *len = ((VAR*)var)->name_len;
835- return (unsigned char*)key;
836-}
837-
838
839 VAR *var_init(VAR *v, const char *name, int name_len, const char *val,
840 int val_len)
841@@ -1648,12 +1648,12 @@
842 }
843
844
845-void var_free(void *v)
846+void var_free(pair<string, VAR *> v)
847 {
848- free(((VAR*) v)->str_val);
849- free(((VAR*) v)->env_s);
850- if (((VAR*)v)->alloced)
851- free(v);
852+ free(v.second->str_val);
853+ free(v.second->env_s);
854+ if (v.second->alloced)
855+ free(v.second);
856 }
857
858
859@@ -1665,7 +1665,8 @@
860 tmp = def_val;
861
862 v = var_init(0, name, strlen(name), tmp, strlen(tmp));
863- my_hash_insert(&var_hash, (unsigned char*)v);
864+ string var_name(name);
865+ var_hash.insert(make_pair(var_name, v));
866 return v;
867 }
868
869@@ -1684,7 +1685,7 @@
870 const char *save_var_name = var_name, *end;
871 uint32_t length;
872 end = (var_name_end) ? *var_name_end : 0;
873- while (my_isvar(charset_info,*var_name) && var_name != end)
874+ while ((isalnum(*var_name) || *var_name == '_') && var_name != end)
875 var_name++;
876 if (var_name == save_var_name)
877 {
878@@ -1696,14 +1697,20 @@
879 if (length >= MAX_VAR_NAME_LENGTH)
880 die("Too long variable name: %s", save_var_name);
881
882- if (!(v = (VAR*) hash_search(&var_hash, (const unsigned char*) save_var_name,
883- length)))
884+ string save_var_name_str(save_var_name, length);
885+ drizzled::hash_map<string, VAR*>::iterator iter=
886+ var_hash.find(save_var_name_str);
887+ if (iter == var_hash.end())
888 {
889 char buff[MAX_VAR_NAME_LENGTH+1];
890 strncpy(buff, save_var_name, length);
891 buff[length]= '\0';
892 v= var_from_env(buff, "");
893 }
894+ else
895+ {
896+ v= (*iter).second;
897+ }
898 var_name--; /* Point at last character */
899 }
900 else
901@@ -1728,11 +1735,13 @@
902
903 static VAR *var_obtain(const char *name, int len)
904 {
905- VAR* v;
906- if ((v = (VAR*)hash_search(&var_hash, (const unsigned char *) name, len)))
907- return v;
908- v = var_init(0, name, len, "", 0);
909- my_hash_insert(&var_hash, (unsigned char*)v);
910+ string var_name(name, len);
911+ drizzled::hash_map<string, VAR*>::iterator iter=
912+ var_hash.find(var_name);
913+ if (iter != var_hash.end())
914+ return (*iter).second;
915+ VAR *v = var_init(0, name, len, "", 0);
916+ var_hash.insert(make_pair(var_name, v));
917 return v;
918 }
919
920@@ -2272,7 +2281,7 @@
921 string ds_cmd;
922
923 /* Skip leading space */
924- while (*cmd && my_isspace(charset_info, *cmd))
925+ while (*cmd && isspace(*cmd))
926 cmd++;
927 if (!*cmd)
928 die("Missing argument in exec");
929@@ -2895,7 +2904,7 @@
930 if (!*p)
931 die("Missing connection name in send_quit");
932 name= p;
933- while (*p && !my_isspace(charset_info,*p))
934+ while (*p && !isspace(*p))
935 p++;
936
937 if (*p)
938@@ -2955,7 +2964,7 @@
939 static void do_perl(struct st_command *command)
940 {
941 int error;
942- File fd;
943+ int fd;
944 FILE *res_file;
945 char buf[FN_REFLEN];
946 char temp_file_path[FN_REFLEN];
947@@ -3163,10 +3172,10 @@
948 const char *offset_start= p;
949 if (*offset_start)
950 {
951- for (; my_isdigit(charset_info, *p); p++)
952+ for (; isdigit(*p); p++)
953 offset = offset * 10 + *p - '0';
954
955- if(*p && !my_isspace(charset_info, *p))
956+ if(*p && !isspace(*p))
957 die("Invalid integer argument \"%s\"", offset_start);
958 command->last_argument= p;
959 }
960@@ -3243,19 +3252,19 @@
961 if (!*p)
962 die("Missing arguments to let");
963 var_name= p;
964- while (*p && (*p != '=') && !my_isspace(charset_info,*p))
965+ while (*p && (*p != '=') && !isspace(*p))
966 p++;
967 var_name_end= p;
968 if (var_name == var_name_end ||
969 (var_name+1 == var_name_end && *var_name == '$'))
970 die("Missing variable name in let");
971- while (my_isspace(charset_info,*p))
972+ while (isspace(*p))
973 p++;
974 if (*p++ != '=')
975 die("Missing assignment operator in let");
976
977 /* Find start of <var_val> */
978- while (*p && my_isspace(charset_info,*p))
979+ while (*p && isspace(*p))
980 p++;
981
982 do_eval(&let_rhs_expr, p, command->end, false);
983@@ -3297,13 +3306,13 @@
984 char *sleep_start, *sleep_end= command->end;
985 double sleep_val;
986
987- while (my_isspace(charset_info, *p))
988+ while (isspace(*p))
989 p++;
990 if (!*p)
991 die("Missing argument to %.*s", command->first_word_len, command->query);
992 sleep_start= p;
993 /* Check that arg starts with a digit, not handled by my_strtod */
994- if (!my_isdigit(charset_info, *sleep_start))
995+ if (!isdigit(*sleep_start))
996 die("Invalid argument to %.*s \"%s\"", command->first_word_len,
997 command->query,command->first_argument);
998 string buff_str(sleep_start, sleep_end-sleep_start);
999@@ -3331,7 +3340,7 @@
1000 if (!*p)
1001 die("Missing file name argument");
1002 name= p;
1003- while (*p && !my_isspace(charset_info,*p))
1004+ while (*p && !isspace(*p))
1005 p++;
1006 if (*p)
1007 *p++= 0;
1008@@ -3340,25 +3349,6 @@
1009 }
1010
1011
1012-static void do_set_charset(struct st_command *command)
1013-{
1014- char *charset_name= command->first_argument;
1015- char *p;
1016-
1017- if (!charset_name || !*charset_name)
1018- die("Missing charset name in 'character_set'");
1019- /* Remove end space */
1020- p= charset_name;
1021- while (*p && !my_isspace(charset_info,*p))
1022- p++;
1023- if(*p)
1024- *p++= 0;
1025- command->last_argument= p;
1026- charset_info= get_charset_by_csname(charset_name, MY_CS_PRIMARY);
1027- if (!charset_info)
1028- abort_not_supported_test("Test requires charset '%s'", charset_name);
1029-}
1030-
1031 static uint32_t get_errcode_from_name(char *error_name, char *error_end)
1032 {
1033 size_t err_name_len= error_end - error_name;
1034@@ -3412,7 +3402,7 @@
1035 /* Check sqlstate string validity */
1036 while (*p && p < end)
1037 {
1038- if (my_isdigit(charset_info, *p) || my_isupper(charset_info, *p))
1039+ if (isdigit(*p) || isupper(*p))
1040 *to_ptr++= *p++;
1041 else
1042 die("The sqlstate may only consist of digits[0-9] " \
1043@@ -3444,7 +3434,7 @@
1044 /* Check that the string passed to str2int only contain digits */
1045 while (*p && p != end)
1046 {
1047- if (!my_isdigit(charset_info, *p))
1048+ if (!isdigit(*p))
1049 die("Invalid argument to error: '%s' - " \
1050 "the errno may only consist of digits[0-9]",
1051 command->first_argument);
1052@@ -3544,7 +3534,7 @@
1053 if (*from != ' ' && *from)
1054 die("Wrong string argument in %s", command->query);
1055
1056- while (my_isspace(charset_info,*from)) /* Point to next string */
1057+ while (isspace(*from)) /* Point to next string */
1058 from++;
1059
1060 *to =0; /* End of string marker */
1061@@ -3596,7 +3586,7 @@
1062 if (!*p)
1063 die("Missing connection name in connect");
1064 name= p;
1065- while (*p && !my_isspace(charset_info,*p))
1066+ while (*p && !isspace(*p))
1067 p++;
1068 if (*p)
1069 *p++= 0;
1070@@ -3613,7 +3603,7 @@
1071 if (!*p)
1072 die("Missing connection name in disconnect");
1073 name= p;
1074- while (*p && !my_isspace(charset_info,*p))
1075+ while (*p && !isspace(*p))
1076 p++;
1077
1078 if (*p)
1079@@ -3878,11 +3868,11 @@
1080 {
1081 const char* end;
1082 /* Step past any spaces in beginning of option*/
1083- while (*con_options && my_isspace(charset_info, *con_options))
1084+ while (*con_options && isspace(*con_options))
1085 con_options++;
1086 /* Find end of this option */
1087 end= con_options;
1088- while (*end && !my_isspace(charset_info, *end))
1089+ while (*end && !isspace(*end))
1090 end++;
1091 if (!strncmp(con_options, "SSL", 3))
1092 con_ssl= 1;
1093@@ -4037,7 +4027,7 @@
1094 die("missing ')' in %s", cmd_name);
1095 p= (char*)expr_end+1;
1096
1097- while (*p && my_isspace(charset_info, *p))
1098+ while (*p && isspace(*p))
1099 p++;
1100 if (*p && *p != '{')
1101 die("Missing '{' after %s. Found \"%s\"", cmd_name, p);
1102@@ -4064,7 +4054,7 @@
1103 {
1104 char* p= command->first_argument;
1105
1106- while (*p && my_isspace(charset_info, *p))
1107+ while (*p && isspace(*p))
1108 p++;
1109
1110 if (!(*p))
1111@@ -4136,7 +4126,7 @@
1112 {
1113 char c, last_quote= 0;
1114 char *p= buf, *buf_end= buf + size - 1;
1115- int skip_char= 0;
1116+ bool skip_char= false;
1117 enum {R_NORMAL, R_Q, R_SLASH_IN_Q,
1118 R_COMMENT, R_LINE_START} state= R_LINE_START;
1119
1120@@ -4144,17 +4134,16 @@
1121 start_lineno= cur_file->lineno;
1122 for (; p < buf_end ;)
1123 {
1124- skip_char= 0;
1125+ skip_char= false;
1126 c= my_getc(cur_file->file);
1127 if (feof(cur_file->file))
1128 {
1129- found_eof:
1130 if (cur_file->file != stdin)
1131 {
1132 fclose(cur_file->file);
1133 cur_file->file= 0;
1134 }
1135- free((unsigned char*) cur_file->file_name);
1136+ free(const_cast<char *>(cur_file->file_name));
1137 cur_file->file_name= 0;
1138 if (cur_file == file_stack)
1139 {
1140@@ -4190,10 +4179,8 @@
1141 return(0);
1142 }
1143 else if ((c == '{' &&
1144- (!my_strnncoll_simple(charset_info, (const unsigned char*) "while", 5,
1145- (unsigned char*) buf, min((ptrdiff_t)5, p - buf), 0) ||
1146- !my_strnncoll_simple(charset_info, (const unsigned char*) "if", 2,
1147- (unsigned char*) buf, min((ptrdiff_t)2, p - buf), 0))))
1148+ (!strncmp("while", buf, min((ptrdiff_t)5, p - buf)) ||
1149+ !strncmp("if", buf, min((ptrdiff_t)2, p - buf)))))
1150 {
1151 /* Only if and while commands can be terminated by { */
1152 *p++= c;
1153@@ -4222,7 +4209,7 @@
1154 /* A # or - in the first position of the line - this is a comment */
1155 state = R_COMMENT;
1156 }
1157- else if (my_isspace(charset_info, c))
1158+ else if ((c == ' ') || (c == '\t') || (c == '\n'))
1159 {
1160 /* Skip all space at begining of line */
1161 if (c == '\n')
1162@@ -4230,7 +4217,7 @@
1163 /* Query hasn't started yet */
1164 start_lineno= cur_file->lineno;
1165 }
1166- skip_char= 1;
1167+ skip_char= true;
1168 }
1169 else if (end_of_query(c))
1170 {
1171@@ -4267,37 +4254,7 @@
1172 }
1173
1174 if (!skip_char)
1175- {
1176- /* Could be a multibyte character */
1177- /* This code is based on the code in "sql_load.cc" */
1178- int charlen = my_mbcharlen(charset_info, c);
1179- /* We give up if multibyte character is started but not */
1180- /* completed before we pass buf_end */
1181- if ((charlen > 1) && (p + charlen) <= buf_end)
1182- {
1183- int i;
1184- char* mb_start = p;
1185-
1186- *p++ = c;
1187-
1188- for (i= 1; i < charlen; i++)
1189- {
1190- if (feof(cur_file->file))
1191- goto found_eof;
1192- c= my_getc(cur_file->file);
1193- *p++ = c;
1194- }
1195- if (! my_ismbchar(charset_info, mb_start, p))
1196- {
1197- /* It was not a multiline char, push back the characters */
1198- /* We leave first 'c', i.e. pretend it was a normal char */
1199- while (p > mb_start)
1200- my_ungetc(*--p);
1201- }
1202- }
1203- else
1204- *p++= c;
1205- }
1206+ *p++= c;
1207 }
1208 die("The input buffer is too small for this query.x\n" \
1209 "check your query or increase MAX_QUERY and recompile");
1210@@ -4330,7 +4287,7 @@
1211 *to++ = *p++; /* Save the newline */
1212
1213 /* Skip any spaces on next line */
1214- while (*p && my_isspace(charset_info, *p))
1215+ while (*p && isspace(*p))
1216 p++;
1217
1218 last_c_was_quote= 0;
1219@@ -4382,11 +4339,11 @@
1220 char save;
1221 char *end, *start= (char*)ptr+3;
1222 /* Skip leading spaces */
1223- while (*start && my_isspace(charset_info, *start))
1224+ while (*start && isspace(*start))
1225 start++;
1226 end= start;
1227 /* Find end of command(next space) */
1228- while (*end && !my_isspace(charset_info, *end))
1229+ while (*end && !isspace(*end))
1230 end++;
1231 save= *end;
1232 *end= 0;
1233@@ -4432,7 +4389,7 @@
1234 const char *p= eol;
1235
1236 /* Skip past all spacing chars and comments */
1237- while (*p && (my_isspace(charset_info, *p) || *p == '#' || *p == '\n'))
1238+ while (*p && (isspace(*p) || *p == '#' || *p == '\n'))
1239 {
1240 /* Skip past comments started with # and ended with newline */
1241 if (*p && *p == '#')
1242@@ -4515,7 +4472,7 @@
1243 }
1244
1245 /* Skip leading spaces */
1246- while (*p && my_isspace(charset_info, *p))
1247+ while (*p && isspace(*p))
1248 p++;
1249
1250 if (!(command->query_buf= command->query= strdup(p)))
1251@@ -4523,12 +4480,12 @@
1252
1253 /* Calculate first word length(the command), terminated by space or ( */
1254 p= command->query;
1255- while (*p && !my_isspace(charset_info, *p) && *p != '(')
1256+ while (*p && !isspace(*p) && *p != '(')
1257 p++;
1258 command->first_word_len= (uint32_t) (p - command->query);
1259
1260 /* Skip spaces between command and first argument */
1261- while (*p && my_isspace(charset_info, *p))
1262+ while (*p && isspace(*p))
1263 p++;
1264 command->first_argument= p;
1265
1266@@ -4545,9 +4502,6 @@
1267 0, 0, 0, 0, 0, 0},
1268 {"basedir", 'b', "Basedir for tests.", (char**) &opt_basedir,
1269 (char**) &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1270- {"character-sets-dir", OPT_CHARSETS_DIR,
1271- "Directory where character sets are.", (char**) &opt_charsets_dir,
1272- (char**) &opt_charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1273 {"compress", 'C', "Use the compressed server/client protocol.",
1274 (char**) &opt_compress, (char**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
1275 0, 0, 0},
1276@@ -5626,10 +5580,6 @@
1277 cur_block->ok= true; /* Outer block should always be executed */
1278 cur_block->cmd= cmd_none;
1279
1280- if (hash_init(&var_hash, charset_info,
1281- 1024, 0, 0, get_var_key, var_free, MYF(0)))
1282- die("Variable hash initialization failed");
1283-
1284 var_set_string("$DRIZZLE_SERVER_VERSION", drizzle_version());
1285
1286 memset(&master_pos, 0, sizeof(master_pos));
1287@@ -5886,7 +5836,7 @@
1288 timer_output();
1289 break;
1290 case Q_CHARACTER_SET:
1291- do_set_charset(command);
1292+ die("Drizzle does not support multiple character sets");
1293 break;
1294 case Q_DISABLE_RECONNECT:
1295 set_reconnect(&cur_con->con, 0);
1296@@ -6078,7 +6028,7 @@
1297
1298 uint64_t timer_now(void)
1299 {
1300- return my_micro_time() / 1000;
1301+ return my_get_usec_since_epoch() / 1000;
1302 }
1303
1304
1305@@ -6117,7 +6067,8 @@
1306 replace_column[column_number-1]= strdup(to);
1307 if (replace_column[column_number-1] == NULL)
1308 die("Out of memory");
1309- set_if_bigger(max_replace_column, column_number);
1310+ if (max_replace_column < column_number)
1311+ max_replace_column= column_number;
1312 }
1313 free(start);
1314 command->last_argument= command->end;
1315@@ -6199,7 +6150,7 @@
1316 insert_pointer_name(&to_array,to);
1317 }
1318 for (i= 1,pos= word_end_chars ; i < 256 ; i++)
1319- if (my_isspace(charset_info,i))
1320+ if (isspace(i))
1321 *pos++= i;
1322 *pos=0; /* End pointer */
1323 if (!(glob_replace= init_replace((char**) from_array.typelib.type_names,
1324@@ -7170,10 +7121,11 @@
1325 return(1);
1326 if (new_pos != pa->str)
1327 {
1328- my_ptrdiff_t diff=PTR_BYTE_DIFF(new_pos,pa->str);
1329+ ptrdiff_t diff= static_cast<ptrdiff_t>(
1330+ reinterpret_cast<unsigned char*>(new_pos)
1331+ - reinterpret_cast<unsigned char*>(pa->str));
1332 for (i=0 ; i < pa->typelib.count ; i++)
1333- pa->typelib.type_names[i]= ADD_TO_PTR(pa->typelib.type_names[i],diff,
1334- char*);
1335+ pa->typelib.type_names[i]= reinterpret_cast<const char *>(reinterpret_cast<const unsigned char *>(pa->typelib.type_names[i])+diff);
1336 pa->str=new_pos;
1337 }
1338 pa->max_length+=PS_MALLOC;
1339
1340=== modified file 'client/errname.cc'
1341--- client/errname.cc 2009-08-05 22:50:03 +0000
1342+++ client/errname.cc 2009-09-09 00:38:19 +0000
1343@@ -18,9 +18,9 @@
1344 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1345 */
1346
1347-#include <drizzled/global.h>
1348+#include "config.h"
1349
1350-#include <client/errname.h>
1351+#include "client/errname.h"
1352
1353 using namespace std;
1354
1355@@ -615,7 +615,7 @@
1356 { "ER_UNSUPORTED_LOG_ENGINE",1579 },
1357 { "ER_BAD_LOG_STATEMENT",1580 },
1358 { "ER_CANT_RENAME_LOG_TABLE",1581 },
1359- { "ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT",1582 },
1360+ { "ER_WRONG_PARAMCOUNT_TO_FUNCTION",1582 },
1361 { "ER_WRONG_PARAMETERS_TO_NATIVE_FCT",1583 },
1362 { "ER_WRONG_PARAMETERS_TO_STORED_FCT",1584 },
1363 { "ER_NATIVE_FCT_NAME_COLLISION",1585 },
1364
1365=== modified file 'client/errname.h'
1366--- client/errname.h 2009-08-11 20:20:52 +0000
1367+++ client/errname.h 2009-09-09 00:38:19 +0000
1368@@ -18,11 +18,13 @@
1369 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1370 */
1371
1372-#ifndef _CLIENT_ERRNAME_H
1373-#define _CLIENT_ERRNAME_H
1374+#ifndef CLIENT_ERRNAME_H
1375+#define CLIENT_ERRNAME_H
1376
1377 /* List of error names to error codes, available from 5.0 */
1378
1379+#include CSTDINT_H
1380+
1381 #include <string>
1382 #include <map>
1383
1384@@ -36,4 +38,4 @@
1385 std::map<std::string, uint32_t> error_code_map;
1386 };
1387
1388-#endif /* _CLIENT_ERRNAME_H */
1389+#endif /* CLIENT_ERRNAME_H */
1390
1391=== modified file 'client/get_password.cc'
1392--- client/get_password.cc 2009-04-17 21:01:47 +0000
1393+++ client/get_password.cc 2009-09-09 00:38:19 +0000
1394@@ -22,13 +22,15 @@
1395 ** This is an own file to avoid conflicts with curses
1396 */
1397
1398-#include <drizzled/global.h>
1399-#include "client/get_password.h"
1400-
1401-#include <string.h>
1402-#include <stdio.h>
1403-#include <stdlib.h>
1404-#include <ctype.h>
1405+#include "config.h"
1406+
1407+#include CSTDINT_H
1408+
1409+#include <cstring>
1410+#include <cstdio>
1411+#include <cstdlib>
1412+#include <cctype>
1413+
1414 #include <unistd.h>
1415
1416 #include <sys/ioctl.h>
1417@@ -45,6 +47,10 @@
1418 # endif
1419 #endif
1420
1421+#include "client/get_password.h"
1422+
1423+using namespace std;
1424+
1425 /*
1426 Can't use fgets, because readline will get confused
1427 length is max number of chars in to, not counting \0
1428@@ -60,7 +66,7 @@
1429 char tmp;
1430 if (read(fd,&tmp,1) != 1)
1431 break;
1432- if (tmp == '\b' || (int) tmp == 127)
1433+ if (tmp == '\b' || static_cast<int>(tmp) == 127)
1434 {
1435 if (pos != to)
1436 {
1437
1438=== modified file 'client/linebuffer.cc'
1439--- client/linebuffer.cc 2009-07-20 00:22:07 +0000
1440+++ client/linebuffer.cc 2009-09-09 00:38:19 +0000
1441@@ -15,11 +15,13 @@
1442
1443 /* readline for batch mode */
1444
1445-#include <drizzled/global.h>
1446-#include <mysys/my_sys.h>
1447+#include "config.h"
1448+
1449+#include <vector>
1450+
1451+#include "mysys/my_sys.h"
1452 #include "client/linebuffer.h"
1453
1454-#include <vector>
1455
1456 using namespace std;
1457
1458
1459=== modified file 'client/linebuffer.h'
1460--- client/linebuffer.h 2009-07-20 00:15:20 +0000
1461+++ client/linebuffer.h 2009-09-09 00:38:19 +0000
1462@@ -17,6 +17,8 @@
1463 #define CLIENT_LINEBUFFER_H
1464
1465 #include <vector>
1466+#include <sstream>
1467+#include CSTDINT_H
1468
1469 class LineBuffer
1470 {
1471
1472=== modified file 'config/uncrustify.cfg'
1473--- config/uncrustify.cfg 2009-07-15 21:16:34 +0000
1474+++ config/uncrustify.cfg 2009-09-09 00:38:19 +0000
1475@@ -1,145 +1,1112 @@
1476-indent_align_string=true
1477-indent_braces=false
1478-indent_braces_no_func=false
1479-indent_brace_parent=false
1480-indent_namespace=false
1481-indent_extern=false
1482-indent_class=true
1483-indent_class_colon=false
1484-indent_else_if=false
1485-indent_func_call_param=false
1486-indent_func_def_param=false
1487-indent_func_proto_param=false
1488-indent_func_class_param=false
1489-indent_func_ctor_var_param=false
1490-indent_template_param=false
1491-indent_func_param_double=false
1492-indent_relative_single_line_comments=false
1493-indent_col1_comment=false
1494-indent_access_spec_body=false
1495-indent_paren_nl=false
1496-indent_comma_paren=false
1497-indent_bool_paren=false
1498-indent_square_nl=false
1499-indent_preserve_sql=false
1500-sp_balance_nested_parens=false
1501-align_keep_tabs=false
1502-align_with_tabs=false
1503-align_on_tabstop=false
1504-align_number_left=false
1505-align_func_params=false
1506-align_same_func_call_params=false
1507-align_var_def_colon=false
1508-align_var_def_inline=false
1509-align_right_cmt_mix=false
1510-align_mix_var_proto=false
1511-align_single_line_func=false
1512-align_single_line_brace=false
1513-align_nl_cont=false
1514-align_left_shift=true
1515-nl_collapse_empty_body=true
1516-nl_assign_leave_one_liners=true
1517-nl_class_leave_one_liners=false
1518-nl_enum_leave_one_liners=false
1519-nl_getset_leave_one_liners=true
1520-nl_func_leave_one_liners=true
1521-nl_if_leave_one_liners=false
1522-nl_multi_line_cond=false
1523-nl_multi_line_define=false
1524-nl_before_case=false
1525-nl_after_case=false
1526-nl_after_return=true
1527-nl_after_semicolon=true
1528-nl_after_brace_open=true
1529-nl_after_brace_open_cmt=false
1530-nl_after_vbrace_open=false
1531-nl_define_macro=false
1532-nl_squeeze_ifdef=false
1533-nl_ds_struct_enum_cmt=false
1534-nl_ds_struct_enum_close_brace=false
1535-nl_create_if_one_liner=false
1536-nl_create_for_one_liner=false
1537-nl_create_while_one_liner=false
1538-ls_for_split_full=false
1539-ls_func_split_full=false
1540-nl_after_multiline_comment=true
1541-eat_blanks_after_open_brace=true
1542-eat_blanks_before_close_brace=true
1543-mod_pawn_semicolon=false
1544-mod_full_paren_if_bool=false
1545-mod_remove_extra_semicolon=true
1546-mod_sort_import=false
1547-mod_sort_using=true
1548-mod_sort_include=false
1549-mod_move_case_break=true
1550-cmt_indent_multi=true
1551-cmt_c_group=false
1552-cmt_c_nl_start=false
1553-cmt_c_nl_end=false
1554-cmt_cpp_group=false
1555-cmt_cpp_nl_start=false
1556-cmt_cpp_nl_end=false
1557-cmt_cpp_to_c=false
1558-cmt_star_cont=true
1559-cmt_multi_check_last=true
1560-pp_indent_at_level=false
1561-pp_region_indent_code=false
1562-pp_if_indent_code=false
1563-pp_define_at_level=false
1564-indent_columns=2
1565-nl_func_var_def_blk=1
1566-code_width=76
1567-nl_max=2
1568-nl_after_func_proto_group=3
1569-nl_after_func_body=2
1570-nl_before_block_comment=2
1571-nl_before_c_comment=2
1572-nl_before_cpp_comment=0
1573-mod_add_long_function_closebrace_comment=15
1574-mod_add_long_switch_closebrace_comment=15
1575-cmt_sp_after_star_cont=1
1576-indent_with_tabs=0
1577-sp_before_assign=remove
1578-sp_enum_before_assign=remove
1579-sp_after_assign=add
1580-sp_enum_after_assign=add
1581-sp_after_operator=add
1582-sp_after_cast=remove
1583-sp_cpp_cast_paren=remove
1584-nl_start_of_file=remove
1585-nl_assign_brace=add
1586-nl_fcall_brace=add
1587-nl_enum_brace=add
1588-nl_struct_brace=add
1589-nl_union_brace=add
1590-nl_if_brace=add
1591-nl_brace_else=add
1592-nl_elseif_brace=add
1593-nl_else_brace=add
1594-nl_else_if=remove
1595-nl_brace_finally=add
1596-nl_finally_brace=add
1597-nl_try_brace=add
1598-nl_getset_brace=add
1599-nl_for_brace=add
1600-nl_catch_brace=add
1601-nl_brace_catch=add
1602-nl_while_brace=add
1603-nl_do_brace=add
1604-nl_brace_while=add
1605-nl_switch_brace=add
1606-nl_namespace_brace=add
1607-nl_template_class=add
1608-nl_class_brace=add
1609-nl_class_init_args=add
1610-nl_func_type_name=remove
1611-nl_func_proto_type_name=remove
1612-nl_func_paren=remove
1613-nl_func_decl_start=remove
1614-nl_func_decl_args=remove
1615-nl_func_decl_end=remove
1616-nl_fdef_brace=add
1617-mod_full_brace_do=add
1618-mod_full_brace_function=add
1619-mod_paren_on_return=remove
1620-pp_space=add
1621+#
1622+# Uncrustify optoins (with comments) for Drizzle
1623+#
1624+
1625+nl_after_brace_close = TRUE
1626+
1627+# The type of line endings
1628+newlines = lf # auto/lf/crlf/cr
1629+
1630+# The original size of tabs in the input
1631+input_tab_size = 8 # number
1632+
1633+# The size of tabs in the output (only used if align_with_tabs=true)
1634+output_tab_size = 3 # number
1635+
1636+# The ascii value of the string escape char, usually 92 (\) or 94 (^). (Pawn)
1637+string_escape_char = 92 # number
1638+
1639+# Alternate string escape char for Pawn. Only works right before the quote char.
1640+string_escape_char2 = 0 # number
1641+
1642+#
1643+# Indenting
1644+#
1645+
1646+# The number of columns to indent per level.
1647+# Usually 2, 3, 4, or 8.
1648+indent_columns = 2 # number
1649+
1650+# How to use tabs when indenting code
1651+# 0=spaces only
1652+# 1=indent with tabs, align with spaces
1653+# 2=indent and align with tabs
1654+indent_with_tabs = 0 # number
1655+
1656+# Whether to indent strings broken by '\' so that they line up
1657+indent_align_string = true # false/true
1658+
1659+# The number of spaces to indent multi-line XML strings.
1660+# Requires indent_align_string=True
1661+indent_xml_string = 0 # number
1662+
1663+# Spaces to indent '{' from level
1664+indent_brace = 0 # number
1665+
1666+# Whether braces are indented to the body level
1667+indent_braces = false # false/true
1668+
1669+# Disabled indenting function braces if indent_braces is true
1670+indent_braces_no_func = false # false/true
1671+
1672+# Indent based on the size of the brace parent, ie 'if' => 3 spaces, 'for' => 4 spaces, etc.
1673+indent_brace_parent = false # false/true
1674+
1675+# Whether the 'namespace' body is indented
1676+indent_namespace = false # false/true
1677+
1678+# Whether the 'extern "C"' body is indented
1679+indent_extern = false # false/true
1680+
1681+# Whether the 'class' body is indented
1682+indent_class = true # false/true
1683+
1684+# Whether to indent the stuff after a leading class colon
1685+indent_class_colon = true # false/true
1686+
1687+# False=treat 'else\nif' as 'else if' for indenting purposes
1688+# True=indent the 'if' one level
1689+indent_else_if = false # false/true
1690+
1691+# True: indent continued function call parameters one indent level
1692+# False: align parameters under the open paren
1693+indent_func_call_param = false # false/true
1694+
1695+# Same as indent_func_call_param, but for function defs
1696+indent_func_def_param = false # false/true
1697+
1698+# Same as indent_func_call_param, but for function protos
1699+indent_func_proto_param = false # false/true
1700+
1701+# Same as indent_func_call_param, but for class declarations
1702+indent_func_class_param = false # false/true
1703+
1704+# Same as indent_func_call_param, but for class variable constructors
1705+indent_func_ctor_var_param = false # false/true
1706+
1707+# Same as indent_func_call_param, but for templates
1708+indent_template_param = false # false/true
1709+
1710+# Double the indent for indent_func_xxx_param options
1711+indent_func_param_double = false # false/true
1712+
1713+# Indentation column for standalone 'const' function decl/proto qualifier
1714+indent_func_const = 0 # number
1715+
1716+# Indentation column for standalone 'throw' function decl/proto qualifier
1717+indent_func_throw = 0 # number
1718+
1719+# The number of spaces to indent a continued '->' or '.'
1720+# Usually set to 0, 1, or indent_columns.
1721+indent_member = 3 # number
1722+
1723+# Spaces to indent single line ('//') comments on lines before code
1724+indent_sing_line_comments = 0 # number
1725+
1726+# If set, will indent trailing single line ('//') comments relative
1727+# to the code instead of trying to keep the same absolute column
1728+indent_relative_single_line_comments = false # false/true
1729+
1730+# Spaces to indent 'case' from 'switch'
1731+# Usually 0 or indent_columns.
1732+indent_switch_case = 0 # number
1733+
1734+# Spaces to shift the 'case' line, without affecting any other lines
1735+# Usually 0.
1736+indent_case_shift = 0 # number
1737+
1738+# Spaces to indent '{' from 'case'.
1739+# By default, the brace will appear under the 'c' in case.
1740+# Usually set to 0 or indent_columns.
1741+indent_case_brace = 0 # number
1742+
1743+# Whether to indent comments found in first column
1744+indent_col1_comment = false # false/true
1745+
1746+# How to indent goto labels
1747+# >0 : absolute column where 1 is the leftmost column
1748+# <=0 : subtract from brace indent
1749+indent_label = 1 # number
1750+
1751+# Same as indent_label, but for access specifiers that are followed by a colon
1752+indent_access_spec = 1 # number
1753+
1754+# Indent the code after an access specifier by one level.
1755+# If set, this option forces 'indent_access_spec=0'
1756+indent_access_spec_body = false # false/true
1757+
1758+# If an open paren is followed by a newline, indent the next line so that it lines up after the open paren (not recommended)
1759+indent_paren_nl = false # false/true
1760+
1761+# Controls the indent of a close paren after a newline.
1762+# 0: Indent to body level
1763+# 1: Align under the open paren
1764+# 2: Indent to the brace level
1765+indent_paren_close = 0 # number
1766+
1767+# Controls the indent of a comma when inside a paren.If TRUE, aligns under the open paren
1768+indent_comma_paren = false # false/true
1769+
1770+# Controls the indent of a BOOL operator when inside a paren.If TRUE, aligns under the open paren
1771+indent_bool_paren = false # false/true
1772+
1773+# If an open square is followed by a newline, indent the next line so that it lines up after the open square (not recommended)
1774+indent_square_nl = false # false/true
1775+
1776+# Don't change the relative indent of ESQL/C 'EXEC SQL' bodies
1777+indent_preserve_sql = false # false/true
1778+
1779+#
1780+# Spacing options
1781+#
1782+
1783+# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
1784+sp_arith = force # ignore/add/remove/force
1785+
1786+# Add or remove space before assignment operator '=', '+=', etc
1787+sp_before_assign = remove # ignore/add/remove/force
1788+
1789+# Add or remove space after assignment operator '=', '+=', etc
1790+sp_after_assign = force # ignore/add/remove/force
1791+
1792+# Add or remove space around assignment '=' in enum
1793+sp_enum_assign = ignore # ignore/add/remove/force
1794+
1795+# Add or remove space around boolean operators '&&' and '||'
1796+sp_bool = force # ignore/add/remove/force
1797+
1798+# Add or remove space around compare operator '<', '>', '==', etc
1799+sp_compare = force # ignore/add/remove/force
1800+
1801+# Add or remove space inside '(' and ')'
1802+sp_inside_paren = remove # ignore/add/remove/force
1803+
1804+# Add or remove space between nested parens
1805+sp_paren_paren = remove # ignore/add/remove/force
1806+
1807+# Whether to balance spaces inside nested parens
1808+sp_balance_nested_parens = false # false/true
1809+
1810+# Add or remove space between ')' and '{'
1811+sp_paren_brace = ignore # ignore/add/remove/force
1812+
1813+# Add or remove space before pointer star '*'
1814+sp_before_ptr_star = force # ignore/add/remove/force
1815+
1816+# Add or remove space before pointer star '*' that isn't followed by a variable name
1817+# If set to 'ignore', sp_before_ptr_star is used instead.
1818+sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force
1819+
1820+# Add or remove space between pointer stars '*'
1821+sp_between_ptr_star = remove # ignore/add/remove/force
1822+
1823+# Add or remove space after pointer star '*', if followed by a word.
1824+sp_after_ptr_star = remove # ignore/add/remove/force
1825+
1826+# Add or remove space after a pointer star '*', if followed by a func proto/def.
1827+sp_after_ptr_star_func = ignore # ignore/add/remove/force
1828+
1829+# Add or remove space before a pointer star '*', if followed by a func proto/def.
1830+sp_before_ptr_star_func = ignore # ignore/add/remove/force
1831+
1832+# Add or remove space before a reference sign '&'
1833+sp_before_byref = remove # ignore/add/remove/force
1834+
1835+# Add or remove space before a reference sign '&' that isn't followed by a variable name
1836+# If set to 'ignore', sp_before_byref is used instead.
1837+sp_before_unnamed_byref = ignore # ignore/add/remove/force
1838+
1839+# Add or remove space after reference sign '&', if followed by a word.
1840+sp_after_byref = force # ignore/add/remove/force
1841+
1842+# Add or remove space after a reference sign '&', if followed by a func proto/def.
1843+sp_after_byref_func = ignore # ignore/add/remove/force
1844+
1845+# Add or remove space before a reference sign '&', if followed by a func proto/def.
1846+sp_before_byref_func = ignore # ignore/add/remove/force
1847+
1848+# Add or remove space between type and word
1849+sp_after_type = force # ignore/add/remove/force
1850+
1851+# Add or remove space in 'template <' vs 'template<'.
1852+# If set to ignore, sp_before_angle is used.
1853+sp_template_angle = ignore # ignore/add/remove/force
1854+
1855+# Add or remove space before '<>'
1856+sp_before_angle = remove # ignore/add/remove/force
1857+
1858+# Add or remove space inside '<' and '>'
1859+sp_inside_angle = remove # ignore/add/remove/force
1860+
1861+# Add or remove space after '<>'
1862+sp_after_angle = force # ignore/add/remove/force
1863+
1864+# Add or remove space between '<>' and '(' as found in 'new List<byte>();'
1865+sp_angle_paren = ignore # ignore/add/remove/force
1866+
1867+# Add or remove space between '<>' and a word as in 'List<byte> m;'
1868+sp_angle_word = ignore # ignore/add/remove/force
1869+
1870+# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
1871+sp_before_sparen = force # ignore/add/remove/force
1872+
1873+# Add or remove space inside if-condition '(' and ')'
1874+sp_inside_sparen = remove # ignore/add/remove/force
1875+
1876+# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
1877+sp_after_sparen = force # ignore/add/remove/force
1878+
1879+# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
1880+sp_sparen_brace = add # ignore/add/remove/force
1881+
1882+# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
1883+sp_special_semi = ignore # ignore/add/remove/force
1884+
1885+# Add or remove space before ';'
1886+sp_before_semi = remove # ignore/add/remove/force
1887+
1888+# Add or remove space before ';' in non-empty 'for' statements
1889+sp_before_semi_for = ignore # ignore/add/remove/force
1890+
1891+# Add or remove space before a semicolon of an empty part of a for statment.
1892+sp_before_semi_for_empty = force # ignore/add/remove/force
1893+
1894+# Add or remove space after the final semicolon of an empty part of a for statment: for ( ; ; <here> ).
1895+sp_after_semi_for_empty = ignore # ignore/add/remove/force
1896+
1897+# Add or remove space before '[' (except '[]')
1898+sp_before_square = ignore # ignore/add/remove/force
1899+
1900+# Add or remove space before '[]'
1901+sp_before_squares = ignore # ignore/add/remove/force
1902+
1903+# Add or remove space inside '[' and ']'
1904+sp_inside_square = remove # ignore/add/remove/force
1905+
1906+# Add or remove space after ','
1907+sp_after_comma = force # ignore/add/remove/force
1908+
1909+# Add or remove space before ','
1910+sp_before_comma = remove # ignore/add/remove/force
1911+
1912+# Add or remove space after class ':'
1913+sp_after_class_colon = ignore # ignore/add/remove/force
1914+
1915+# Add or remove space before class ':'
1916+sp_before_class_colon = ignore # ignore/add/remove/force
1917+
1918+# Add or remove space between 'operator' and operator sign
1919+sp_after_operator = ignore # ignore/add/remove/force
1920+
1921+# Add or remove space between the operator symbol and the open paren, as in 'operator ++('
1922+sp_after_operator_sym = ignore # ignore/add/remove/force
1923+
1924+# Add or remove space after C/D cast, ie 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
1925+sp_after_cast = remove # ignore/add/remove/force
1926+
1927+# Add or remove spaces inside cast parens
1928+sp_inside_paren_cast = remove # ignore/add/remove/force
1929+
1930+# Add or remove space between the type and open paren in a C++ cast, ie 'int(exp)' vs 'int (exp)'
1931+sp_cpp_cast_paren = remove # ignore/add/remove/force
1932+
1933+# Add or remove space between 'sizeof' and '('
1934+sp_sizeof_paren = remove # ignore/add/remove/force
1935+
1936+# Add or remove space after the tag keyword (Pawn)
1937+sp_after_tag = ignore # ignore/add/remove/force
1938+
1939+# Add or remove space inside enum '{' and '}'
1940+sp_inside_braces_enum = force # ignore/add/remove/force
1941+
1942+# Add or remove space inside struct/union '{' and '}'
1943+sp_inside_braces_struct = force # ignore/add/remove/force
1944+
1945+# Add or remove space inside '{' and '}'
1946+sp_inside_braces = force # ignore/add/remove/force
1947+
1948+# Add or remove space inside '{}'
1949+sp_inside_braces_empty = ignore # ignore/add/remove/force
1950+
1951+# Add or remove space between return type and function name
1952+# A minimum of 1 is forced except for pointer return types.
1953+sp_type_func = force # ignore/add/remove/force
1954+
1955+# Add or remove space between function name and '(' on function declaration
1956+sp_func_proto_paren = remove # ignore/add/remove/force
1957+
1958+# Add or remove space between function name and '(' on function definition
1959+sp_func_def_paren = remove # ignore/add/remove/force
1960+
1961+# Add or remove space inside empty function '()'
1962+sp_inside_fparens = ignore # ignore/add/remove/force
1963+
1964+# Add or remove space inside function '(' and ')'
1965+sp_inside_fparen = remove # ignore/add/remove/force
1966+
1967+# Add or remove space between ']' and '(' when part of a function call.
1968+sp_square_fparen = ignore # ignore/add/remove/force
1969+
1970+# Add or remove space between ')' and '{' of function
1971+sp_fparen_brace = add # ignore/add/remove/force
1972+
1973+# Add or remove space between function name and '(' on function calls
1974+sp_func_call_paren = remove # ignore/add/remove/force
1975+
1976+# Add or remove space between the user function name and '(' on function calls
1977+# You need to set a keyword to be a user function, like this: 'set func_call_user _' in the config file.
1978+sp_func_call_user_paren = ignore # ignore/add/remove/force
1979+
1980+# Add or remove space between a constructor/destructor and the open paren
1981+sp_func_class_paren = remove # ignore/add/remove/force
1982+
1983+# Add or remove space between 'return' and '('
1984+sp_return_paren = remove # ignore/add/remove/force
1985+
1986+# Add or remove space between '__attribute__' and '('
1987+sp_attribute_paren = remove # ignore/add/remove/force
1988+
1989+# Add or remove space between 'defined' and '(' in '#if defined (FOO)'
1990+sp_defined_paren = remove # ignore/add/remove/force
1991+
1992+# Add or remove space between 'throw' and '(' in 'throw (something)'
1993+sp_throw_paren = ignore # ignore/add/remove/force
1994+
1995+# Add or remove space between macro and value
1996+sp_macro = ignore # ignore/add/remove/force
1997+
1998+# Add or remove space between macro function ')' and value
1999+sp_macro_func = ignore # ignore/add/remove/force
2000+
2001+# Add or remove space between 'else' and '{' if on the same line
2002+sp_else_brace = ignore # ignore/add/remove/force
2003+
2004+# Add or remove space between '}' and 'else' if on the same line
2005+sp_brace_else = ignore # ignore/add/remove/force
2006+
2007+# Add or remove space between '}' and the name of a typedef on the same line
2008+sp_brace_typedef = force # ignore/add/remove/force
2009+
2010+# Add or remove space between 'catch' and '{' if on the same line
2011+sp_catch_brace = ignore # ignore/add/remove/force
2012+
2013+# Add or remove space between '}' and 'catch' if on the same line
2014+sp_brace_catch = ignore # ignore/add/remove/force
2015+
2016+# Add or remove space between 'finally' and '{' if on the same line
2017+sp_finally_brace = ignore # ignore/add/remove/force
2018+
2019+# Add or remove space between '}' and 'finally' if on the same line
2020+sp_brace_finally = ignore # ignore/add/remove/force
2021+
2022+# Add or remove space between 'try' and '{' if on the same line
2023+sp_try_brace = ignore # ignore/add/remove/force
2024+
2025+# Add or remove space between get/set and '{' if on the same line
2026+sp_getset_brace = ignore # ignore/add/remove/force
2027+
2028+# Add or remove space before the '::' operator
2029+sp_before_dc = remove # ignore/add/remove/force
2030+
2031+# Add or remove space after the '::' operator
2032+sp_after_dc = remove # ignore/add/remove/force
2033+
2034+# Add or remove around the D named array initializer ':' operator
2035+sp_d_array_colon = ignore # ignore/add/remove/force
2036+
2037+# Add or remove space after the '!' (not) operator.
2038+sp_not = force # ignore/add/remove/force
2039+
2040+# Add or remove space after the '~' (invert) operator.
2041+sp_inv = remove # ignore/add/remove/force
2042+
2043+# Add or remove space after the '&' (address-of) operator.
2044+# This does not affect the spacing after a '&' that is part of a type.
2045+sp_addr = remove # ignore/add/remove/force
2046+
2047+# Add or remove space around the '.' or '->' operators
2048+sp_member = remove # ignore/add/remove/force
2049+
2050+# Add or remove space after the '*' (dereference) operator.
2051+# This does not affect the spacing after a '*' that is part of a type.
2052+sp_deref = remove # ignore/add/remove/force
2053+
2054+# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'
2055+sp_sign = remove # ignore/add/remove/force
2056+
2057+# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'
2058+sp_incdec = remove # ignore/add/remove/force
2059+
2060+# Add or remove space before a backslash-newline at the end of a line
2061+sp_before_nl_cont = add # ignore/add/remove/force
2062+
2063+# Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
2064+sp_after_oc_scope = ignore # ignore/add/remove/force
2065+
2066+# Add or remove space after the colon in message specs
2067+# '-(int) f:(int) x;' vs '-(int) f: (int) x;'
2068+sp_after_oc_colon = ignore # ignore/add/remove/force
2069+
2070+# Add or remove space before the colon in message specs
2071+# '-(int) f: (int) x;' vs '-(int) f : (int) x;'
2072+sp_before_oc_colon = ignore # ignore/add/remove/force
2073+
2074+# Add or remove space after the colon in message specs
2075+# '[object setValue:1];' vs '[object setValue: 1];'
2076+sp_after_send_oc_colon = ignore # ignore/add/remove/force
2077+
2078+# Add or remove space before the colon in message specs
2079+# '[object setValue:1];' vs '[object setValue :1];'
2080+sp_before_send_oc_colon = ignore # ignore/add/remove/force
2081+
2082+# Add or remove space after the (type) in message specs
2083+# '-(int) f: (int) x;' vs '-(int) f: (int)x;'
2084+sp_after_oc_type = ignore # ignore/add/remove/force
2085+
2086+# Add or remove space around the ':' in 'b ? t : f'
2087+sp_cond_colon = ignore # ignore/add/remove/force
2088+
2089+# Add or remove space around the '?' in 'b ? t : f'
2090+sp_cond_question = ignore # ignore/add/remove/force
2091+
2092+# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
2093+sp_case_label = remove # ignore/add/remove/force
2094+
2095+#
2096+# Code alignment (not left column spaces/tabs)
2097+#
2098+
2099+# Whether to keep non-indenting tabs
2100+align_keep_tabs = false # false/true
2101+
2102+# Whether to use tabs for alinging
2103+align_with_tabs = false # false/true
2104+
2105+# Whether to bump out to the next tab when aligning
2106+align_on_tabstop = false # false/true
2107+
2108+# Whether to left-align numbers
2109+align_number_left = false # false/true
2110+
2111+# Align variable definitions in prototypes and functions
2112+align_func_params = false # false/true
2113+
2114+# Align parameters in single-line functions that have the same name.
2115+# The function names must already be aligned with each other.
2116+align_same_func_call_params = false # false/true
2117+
2118+# The span for aligning variable definitions (0=don't align)
2119+align_var_def_span = 1 # number
2120+
2121+# How to align the star in variable definitions.
2122+# 0=Part of the type 'void * foo;'
2123+# 1=Part of the variable 'void *foo;'
2124+# 2=Dangling 'void *foo;'
2125+align_var_def_star_style = 1 # number
2126+
2127+# How to align the '&' in variable definitions.
2128+# 0=Part of the type
2129+# 1=Part of the variable
2130+# 2=Dangling
2131+align_var_def_amp_style = 0 # number
2132+
2133+# The threshold for aligning variable definitions (0=no limit)
2134+align_var_def_thresh = 1 # number
2135+
2136+# The gap for aligning variable definitions
2137+align_var_def_gap = 0 # number
2138+
2139+# Whether to align the colon in struct bit fields
2140+align_var_def_colon = false # false/true
2141+
2142+# Whether to align inline struct/enum/union variable definitions
2143+align_var_def_inline = false # false/true
2144+
2145+# The span for aligning on '=' in assignments (0=don't align)
2146+align_assign_span = 0 # number
2147+
2148+# The threshold for aligning on '=' in assignments (0=no limit)
2149+align_assign_thresh = 12 # number
2150+
2151+# The span for aligning on '=' in enums (0=don't align)
2152+align_enum_equ_span = 0 # number
2153+
2154+# The threshold for aligning on '=' in enums (0=no limit)
2155+align_enum_equ_thresh = 0 # number
2156+
2157+# The span for aligning struct/union (0=don't align)
2158+align_var_struct_span = 0 # number
2159+
2160+# The threshold for aligning struct/union member definitions (0=no limit)
2161+align_var_struct_thresh = 0 # number
2162+
2163+# The gap for aligning struct/union member definitions
2164+align_var_struct_gap = 0 # number
2165+
2166+# The span for aligning struct initializer values (0=don't align)
2167+align_struct_init_span = 3 # number
2168+
2169+# The minimum space between the type and the synonym of a typedef
2170+align_typedef_gap = 3 # number
2171+
2172+# The span for aligning single-line typedefs (0=don't align)
2173+align_typedef_span = 5 # number
2174+
2175+# How to align typedef'd functions with other typedefs
2176+# 0: Don't mix them at all
2177+# 1: align the open paren with the types
2178+# 2: align the function type name with the other type names
2179+align_typedef_func = 0 # number
2180+
2181+# Controls the positioning of the '*' in typedefs. Just try it.
2182+# 0: Align on typdef type, ignore '*'
2183+# 1: The '*' is part of type name: typedef int *pint;
2184+# 2: The '*' is part of the type, but dangling: typedef int *pint;
2185+align_typedef_star_style = 0 # number
2186+
2187+# Controls the positioning of the '&' in typedefs. Just try it.
2188+# 0: Align on typdef type, ignore '&'
2189+# 1: The '&' is part of type name: typedef int &pint;
2190+# 2: The '&' is part of the type, but dangling: typedef int &pint;
2191+align_typedef_amp_style = 0 # number
2192+
2193+# The span for aligning comments that end lines (0=don't align)
2194+align_right_cmt_span = 3 # number
2195+
2196+# If aligning comments, mix with comments after '}' and #endif with less than 3 spaces before the comment
2197+align_right_cmt_mix = false # false/true
2198+
2199+# If a trailing comment is more than this number of columns away from the text it follows,
2200+# it will qualify for being aligned.
2201+align_right_cmt_gap = 0 # number
2202+
2203+# The span for aligning function prototypes (0=don't align)
2204+align_func_proto_span = 0 # number
2205+
2206+# Minimum gap between the return type and the function name.
2207+align_func_proto_gap = 0 # number
2208+
2209+# Whether to mix aligning prototype and variable declarations.
2210+# If true, align_var_def_XXX options are used instead of align_func_proto_XXX options.
2211+align_mix_var_proto = false # false/true
2212+
2213+# Align single-line functions with function prototypes, uses align_func_proto_span
2214+align_single_line_func = false # false/true
2215+
2216+# Aligning the open brace of single-line functions.
2217+# Requires align_single_line_func=true, uses align_func_proto_span
2218+align_single_line_brace = false # false/true
2219+
2220+# Gap for align_single_line_brace.
2221+align_single_line_brace_gap = 0 # number
2222+
2223+# The span for aligning ObjC msg spec (0=don't align)
2224+align_oc_msg_spec_span = 0 # number
2225+
2226+# Whether to align macros wrapped with a backslash and a newline.
2227+# This will not work right if the macro contains a multi-line comment.
2228+align_nl_cont = true # false/true
2229+
2230+# The minimum space between label and value of a preprocessor define
2231+align_pp_define_gap = 4 # number
2232+
2233+# The span for aligning on '#define' bodies (0=don't align)
2234+align_pp_define_span = 3 # number
2235+
2236+# Align lines that start with '<<' with previous '<<'. Default=true
2237+align_left_shift = true # false/true
2238+
2239+#
2240+# Newline adding and removing options
2241+#
2242+
2243+# Whether to collapse empty blocks between '{' and '}'
2244+nl_collapse_empty_body = true # false/true
2245+
2246+# Don't split one-line braced assignments - 'foo_t f = { 1, 2 };'
2247+nl_assign_leave_one_liners = false # false/true
2248+
2249+# Don't split one-line braced statements inside a class xx { } body
2250+nl_class_leave_one_liners = false # false/true
2251+
2252+# Don't split one-line enums: 'enum foo { BAR = 15 };'
2253+nl_enum_leave_one_liners = false # false/true
2254+
2255+# Don't split one-line get or set functions
2256+nl_getset_leave_one_liners = false # false/true
2257+
2258+# Don't split one-line function definitions - 'int foo() { return 0; }'
2259+nl_func_leave_one_liners = false # false/true
2260+
2261+# Don't split one-line if/else statements - 'if(a) b++;'
2262+nl_if_leave_one_liners = false # false/true
2263+
2264+# Add or remove newlines at the start of the file
2265+nl_start_of_file = remove # ignore/add/remove/force
2266+
2267+# The number of newlines at the start of the file (only used if nl_start_of_file is 'add' or 'force'
2268+nl_start_of_file_min = 0 # number
2269+
2270+# Add or remove newline at the end of the file
2271+nl_end_of_file = force # ignore/add/remove/force
2272+
2273+# The number of newlines at the end of the file (only used if nl_end_of_file is 'add' or 'force')
2274+nl_end_of_file_min = 1 # number
2275+
2276+# Add or remove newline between '=' and '{'
2277+nl_assign_brace = force # ignore/add/remove/force
2278+
2279+# Add or remove newline between '=' and '[' (D only)
2280+nl_assign_square = force # ignore/add/remove/force
2281+
2282+# Add or remove newline after '= [' (D only). Will also affect the newline before the ']'
2283+nl_after_square_assign = force # ignore/add/remove/force
2284+
2285+# The number of newlines after a block of variable definitions
2286+nl_func_var_def_blk = 1 # number
2287+
2288+# Add or remove newline between a function call's ')' and '{', as in:
2289+# list_for_each(item, &list) { }
2290+nl_fcall_brace = force # ignore/add/remove/force
2291+
2292+# Add or remove newline between 'enum' and '{'
2293+nl_enum_brace = force # ignore/add/remove/force
2294+
2295+# Add or remove newline between 'struct and '{'
2296+nl_struct_brace = force # ignore/add/remove/force
2297+
2298+# Add or remove newline between 'union' and '{'
2299+nl_union_brace = force # ignore/add/remove/force
2300+
2301+# Add or remove newline between 'if' and '{'
2302+nl_if_brace = force # ignore/add/remove/force
2303+
2304+# Add or remove newline between '}' and 'else'
2305+nl_brace_else = force # ignore/add/remove/force
2306+
2307+# Add or remove newline between 'else if' and '{'
2308+# If set to ignore, nl_if_brace is used instead
2309+nl_elseif_brace = force # ignore/add/remove/force
2310+
2311+# Add or remove newline between 'else' and '{'
2312+nl_else_brace = force # ignore/add/remove/force
2313+
2314+# Add or remove newline between 'else' and 'if'
2315+nl_else_if = remove # ignore/add/remove/force
2316+
2317+# Add or remove newline between '}' and 'finally'
2318+nl_brace_finally = force # ignore/add/remove/force
2319+
2320+# Add or remove newline between 'finally' and '{'
2321+nl_finally_brace = force # ignore/add/remove/force
2322+
2323+# Add or remove newline between 'try' and '{'
2324+nl_try_brace = force # ignore/add/remove/force
2325+
2326+# Add or remove newline between get/set and '{'
2327+nl_getset_brace = force # ignore/add/remove/force
2328+
2329+# Add or remove newline between 'for' and '{'
2330+nl_for_brace = force # ignore/add/remove/force
2331+
2332+# Add or remove newline between 'catch' and '{'
2333+nl_catch_brace = force # ignore/add/remove/force
2334+
2335+# Add or remove newline between '}' and 'catch'
2336+nl_brace_catch = force # ignore/add/remove/force
2337+
2338+# Add or remove newline between 'while' and '{'
2339+nl_while_brace = force # ignore/add/remove/force
2340+
2341+# Add or remove newline between 'do' and '{'
2342+nl_do_brace = force # ignore/add/remove/force
2343+
2344+# Add or remove newline between '}' and 'while' of 'do' statement
2345+nl_brace_while = force # ignore/add/remove/force
2346+
2347+# Add or remove newline between 'switch' and '{'
2348+nl_switch_brace = force # ignore/add/remove/force
2349+
2350+# Add or remove newline when condition spans two or more lines
2351+nl_multi_line_cond = false # false/true
2352+
2353+# Force a newline in a define after the macro name for multi-line defines.
2354+nl_multi_line_define = true # false/true
2355+
2356+# Whether to put a newline before 'case' statement
2357+nl_before_case = true # false/true
2358+
2359+# Add or remove newline between ')' and 'throw'
2360+nl_before_throw = ignore # ignore/add/remove/force
2361+
2362+# Whether to put a newline after 'case' statement
2363+nl_after_case = true # false/true
2364+
2365+# Newline between namespace and {
2366+nl_namespace_brace = add # ignore/add/remove/force
2367+
2368+# Add or remove newline between 'template<>' and whatever follows.
2369+nl_template_class = add # ignore/add/remove/force
2370+
2371+# Add or remove newline between 'class' and '{'
2372+nl_class_brace = add # ignore/add/remove/force
2373+
2374+# Add or remove newline after each ',' in the constructor member initialization
2375+nl_class_init_args = force # ignore/add/remove/force
2376+
2377+# Add or remove newline between return type and function name in definition
2378+nl_func_type_name = ignore # ignore/add/remove/force
2379+
2380+# Add or remove newline between return type and function name in a prototype
2381+nl_func_proto_type_name = remove # ignore/add/remove/force
2382+
2383+# Add or remove newline between a function name and the opening '('
2384+nl_func_paren = remove # ignore/add/remove/force
2385+
2386+# Add or remove newline after '(' in a function declaration
2387+nl_func_decl_start = remove # ignore/add/remove/force
2388+
2389+# Add or remove newline after each ',' in a function declaration
2390+nl_func_decl_args = remove # ignore/add/remove/force
2391+
2392+# Add or remove newline before the ')' in a function declaration
2393+nl_func_decl_end = remove # ignore/add/remove/force
2394+
2395+# Add or remove newline between function signature and '{'
2396+nl_fdef_brace = add # ignore/add/remove/force
2397+
2398+# Whether to put a newline after 'return' statement
2399+nl_after_return = true # false/true
2400+
2401+# Add or remove a newline between the return keyword and return expression.
2402+nl_return_expr = remove # ignore/add/remove/force
2403+
2404+# Whether to put a newline after semicolons, except in 'for' statements
2405+nl_after_semicolon = true # false/true
2406+
2407+# Whether to put a newline after brace open.
2408+# This also adds a newline before the matching brace close.
2409+nl_after_brace_open = true # false/true
2410+
2411+# If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is
2412+# placed between the open brace and a trailing single-line comment.
2413+nl_after_brace_open_cmt = false # false/true
2414+
2415+# Whether to put a newline after a virtual brace open.
2416+# These occur in un-braced if/while/do/for statement bodies.
2417+nl_after_vbrace_open = true # false/true
2418+
2419+# Whether to alter newlines in '#define' macros
2420+nl_define_macro = true # false/true
2421+
2422+# Whether to not put blanks after '#ifxx', '#elxx', or before '#endif'
2423+nl_squeeze_ifdef = false # false/true
2424+
2425+# Add or remove newline before 'if'
2426+nl_before_if = ignore # ignore/add/remove/force
2427+
2428+# Add or remove newline after 'if'
2429+nl_after_if = ignore # ignore/add/remove/force
2430+
2431+# Add or remove newline before 'for'
2432+nl_before_for = ignore # ignore/add/remove/force
2433+
2434+# Add or remove newline after 'for'
2435+nl_after_for = ignore # ignore/add/remove/force
2436+
2437+# Add or remove newline before 'while'
2438+nl_before_while = ignore # ignore/add/remove/force
2439+
2440+# Add or remove newline after 'while'
2441+nl_after_while = ignore # ignore/add/remove/force
2442+
2443+# Add or remove newline before 'switch'
2444+nl_before_switch = force # ignore/add/remove/force
2445+
2446+# Add or remove newline after 'switch'
2447+nl_after_switch = force # ignore/add/remove/force
2448+
2449+# Add or remove newline before 'do'
2450+nl_before_do = ignore # ignore/add/remove/force
2451+
2452+# Add or remove newline after 'do'
2453+nl_after_do = ignore # ignore/add/remove/force
2454+
2455+# Whether to double-space commented-entries in struct/enum
2456+nl_ds_struct_enum_cmt = false # false/true
2457+
2458+# Whether to double-space before the close brace of a struct/union/enum
2459+nl_ds_struct_enum_close_brace = false # false/true
2460+
2461+# Add or remove a newline around a class colon.
2462+# Related to pos_class_colon, nl_class_init_args, and pos_comma.
2463+nl_class_colon = ignore # ignore/add/remove/force
2464+
2465+# Change simple unbraced if statements into a one-liner
2466+# 'if(b)\n i++;' => 'if(b) i++;'
2467+nl_create_if_one_liner = false # false/true
2468+
2469+# Change simple unbraced for statements into a one-liner
2470+# 'for (i=0;i<5;i++)\n foo(i);' => 'for (i=0;i<5;i++) foo(i);'
2471+nl_create_for_one_liner = false # false/true
2472+
2473+# Change simple unbraced while statements into a one-liner
2474+# 'while (i<5)\n foo(i++);' => 'while (i<5) foo(i++);'
2475+nl_create_while_one_liner = false # false/true
2476+
2477+#
2478+# Positioning options
2479+#
2480+
2481+# The position of arithmetic operators in wrapped expressions
2482+pos_arith = lead # ignore/lead/trail
2483+
2484+# The position of assignment in wrapped expressions
2485+pos_assign = trail # ignore/lead/trail
2486+
2487+# The position of boolean operators in wrapped expressions
2488+pos_bool = lead # ignore/lead/trail
2489+
2490+# The position of the comma in wrapped expressions
2491+pos_comma = trail # ignore/lead/trail
2492+
2493+# The position of the comma in the constructor initialization list
2494+pos_class_comma = trail # ignore/lead/trail
2495+
2496+# The position of colons between constructor and member initialization
2497+pos_class_colon = lead # ignore/lead/trail
2498+
2499+#
2500+# Line Splitting options
2501+#
2502+
2503+# Try to limit code width to N number of columns
2504+code_width = 76 # number
2505+
2506+# Whether to fully split long 'for' statements at semi-colons
2507+ls_for_split_full = true # false/true
2508+
2509+# Whether to fully split long function protos/calls at commas
2510+ls_func_split_full = true # false/true
2511+
2512+#
2513+# Blank line options
2514+#
2515+
2516+# The maximum consecutive newlines
2517+nl_max = 4 # number
2518+
2519+# The number of newlines after a function prototype, if followed by another function prototype
2520+nl_after_func_proto = 0 # number
2521+
2522+# The number of newlines after a function prototype, if not followed by another function prototype
2523+nl_after_func_proto_group = 3 # number
2524+
2525+# The number of newlines after '}' of a multi-line function body
2526+nl_after_func_body = 3 # number
2527+
2528+# The number of newlines after '}' of a single line function body
2529+nl_after_func_body_one_liner = 1 # number
2530+
2531+# The minimum number of newlines before a multi-line comment.
2532+# Doesn't apply if after a brace open or another multi-line comment.
2533+nl_before_block_comment = 2 # number
2534+
2535+# The minimum number of newlines before a single-line C comment.
2536+# Doesn't apply if after a brace open or other single-line C comments.
2537+nl_before_c_comment = 1 # number
2538+
2539+# The minimum number of newlines before a CPP comment.
2540+# Doesn't apply if after a brace open or other CPP comments.
2541+nl_before_cpp_comment = 0 # number
2542+
2543+# Whether to force a newline after a mulit-line comment.
2544+nl_after_multiline_comment = false # false/true
2545+
2546+# The number of newlines before a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
2547+# Will not change the newline count if after a brace open.
2548+# 0 = No change.
2549+nl_before_access_spec = 1 # number
2550+
2551+# The number of newlines after a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
2552+# 0 = No change.
2553+nl_after_access_spec = 1 # number
2554+
2555+# The number of newlines between a function def and the function comment.
2556+# 0 = No change.
2557+nl_comment_func_def = 0 # number
2558+
2559+# Whether to remove blank lines after '{'
2560+eat_blanks_after_open_brace = true # false/true
2561+
2562+# Whether to remove blank lines before '}'
2563+eat_blanks_before_close_brace = true # false/true
2564+
2565+#
2566+# Code modifying options (non-whitespace)
2567+#
2568+
2569+# Add or remove braces on single-line 'do' statement
2570+mod_full_brace_do = add # ignore/add/remove/force
2571+
2572+# Add or remove braces on single-line 'for' statement
2573+mod_full_brace_for = add # ignore/add/remove/force
2574+
2575+# Add or remove braces on single-line function defintions. (Pawn)
2576+mod_full_brace_function = ignore # ignore/add/remove/force
2577+
2578+# Add or remove braces on single-line 'if' statement. Will not remove the braces if they contain an 'else'.
2579+mod_full_brace_if = ignore # ignore/add/remove/force
2580+
2581+# Don't remove braces around statements that span N newlines
2582+mod_full_brace_nl = 0 # number
2583+
2584+# Add or remove braces on single-line 'while' statement
2585+mod_full_brace_while = add # ignore/add/remove/force
2586+
2587+# Add or remove unnecessary paren on 'return' statement
2588+mod_paren_on_return = remove # ignore/add/remove/force
2589+
2590+# Whether to change optional semicolons to real semicolons
2591+mod_pawn_semicolon = false # false/true
2592+
2593+# Add parens on 'while' and 'if' statement around bools
2594+mod_full_paren_if_bool = true # false/true
2595+
2596+# Whether to remove superfluous semicolons
2597+mod_remove_extra_semicolon = true # false/true
2598+
2599+# If a function body exceeds the specified number of newlines and doesn't have a comment after
2600+# the close brace, a comment will be added.
2601+mod_add_long_function_closebrace_comment = 5 # number
2602+
2603+# If a switch body exceeds the specified number of newlines and doesn't have a comment after
2604+# the close brace, a comment will be added.
2605+mod_add_long_switch_closebrace_comment = 5 # number
2606+
2607+# If TRUE, will sort consecutive single-line 'import' statements [Java, D]
2608+mod_sort_import = false # false/true
2609+
2610+# If TRUE, will sort consecutive single-line 'using' statements [C#]
2611+mod_sort_using = false # false/true
2612+
2613+# If TRUE, will sort consecutive single-line '#include' statements [C/C++] and '#import' statements [Obj-C]
2614+# This is generally a bad idea, as it may break your code.
2615+mod_sort_include = false # false/true
2616+
2617+# If TRUE, it will move a 'break' that appears after a fully braced 'case' before the close brace.
2618+mod_move_case_break = false # false/true
2619+
2620+# If TRUE, it will remove a void 'return;' that appears as the last statement in a function.
2621+mod_remove_empty_return = true # false/true
2622+
2623+#
2624+# Comment modifications
2625+#
2626+
2627+# Try to wrap comments at cmt_width columns
2628+cmt_width = 0 # number
2629+
2630+# If false, disable all multi-line comment changes, including cmt_width and leading chars.
2631+# Default is true.
2632+cmt_indent_multi = true # false/true
2633+
2634+# Whether to group c-comments that look like they are in a block
2635+cmt_c_group = false # false/true
2636+
2637+# Whether to put an empty '/*' on the first line of the combined c-comment
2638+cmt_c_nl_start = false # false/true
2639+
2640+# Whether to put a newline before the closing '*/' of the combined c-comment
2641+cmt_c_nl_end = false # false/true
2642+
2643+# Whether to group cpp-comments that look like they are in a block
2644+cmt_cpp_group = false # false/true
2645+
2646+# Whether to put an empty '/*' on the first line of the combined cpp-comment
2647+cmt_cpp_nl_start = false # false/true
2648+
2649+# Whether to put a newline before the closing '*/' of the combined cpp-comment
2650+cmt_cpp_nl_end = false # false/true
2651+
2652+# Whether to change cpp-comments into c-comments
2653+cmt_cpp_to_c = false # false/true
2654+
2655+# Whether to put a star on subsequent comment lines
2656+cmt_star_cont = true # false/true
2657+
2658+# The number of spaces to insert at the start of subsequent comment lines
2659+cmt_sp_before_star_cont = 0 # number
2660+
2661+# The number of spaces to insert after the star on subsequent comment lines
2662+cmt_sp_after_star_cont = 1 # number
2663+
2664+# For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
2665+# the comment are the same length. Default=True
2666+cmt_multi_check_last = true # false/true
2667+
2668+# The filename that contains text to insert at the head of a file if the file doesn't start with a C/C++ comment.
2669+# Will substitue $(filename) with the current file's name.
2670+cmt_insert_file_header = "" # string
2671+
2672+# The filename that contains text to insert before a function implementation if the function isn't preceeded with a C/C++ comment.
2673+# Will substitue $(function) with the function name and $(javaparam) with the javadoc @param and @return stuff.
2674+# Will also substitute $(fclass) with the class name: void CFoo::Bar() { ... }
2675+cmt_insert_func_header = "" # string
2676+
2677+# The filename that contains text to insert before a class if the class isn't preceeded with a C/C++ comment.
2678+# Will substitue $(class) with the class name.
2679+cmt_insert_class_header = "" # string
2680+
2681+# If a preprocessor is encountered when stepping backwards from a function name, then
2682+# this option decides whether the comment should be inserted.
2683+# Affects cmt_insert_func_header and cmt_insert_class_header.
2684+cmt_insert_before_preproc = false # false/true
2685+
2686+#
2687+# Preprocessor options
2688+#
2689+
2690+# Control indent of preprocessors inside #if blocks at brace level 0
2691+pp_indent = remove # ignore/add/remove/force
2692+
2693+# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
2694+pp_indent_at_level = false # false/true
2695+
2696+# If pp_indent_at_level=false, specifies the number of columns to indent per level. Default=1.
2697+pp_indent_count = 1 # number
2698+
2699+# Add or remove space after # based on pp_level of #if blocks
2700+pp_space = add # ignore/add/remove/force
2701+
2702+# Sets the number of spaces added with pp_space
2703+pp_space_count = 1 # number
2704+
2705+# The indent for #region and #endregion in C# and '#pragma region' in C/C++
2706+pp_indent_region = 0 # number
2707+
2708+# Whether to indent the code between #region and #endregion
2709+pp_region_indent_code = false # false/true
2710+
2711+# If pp_indent_at_level=true, sets the indent for #if, #else, and #endif when not at file-level
2712+pp_indent_if = 0 # number
2713+
2714+# Control whether to indent the code between #if, #else and #endif when not at file-level
2715+pp_if_indent_code = false # false/true
2716+
2717+# Whether to indent '#define' at the brace level (true) or from column 1 (false)
2718+pp_define_at_level = false # false/true
2719+
2720+# You can force a token to be a type with the 'type' option.
2721+# Example:
2722+# type myfoo1 myfoo2
2723+#
2724+# You can create custom macro-based indentation using macro-open,
2725+# macro-else and macro-close.
2726+# Example:
2727+# macro-open BEGIN_TEMPLATE_MESSAGE_MAP
2728+# macro-open BEGIN_MESSAGE_MAP
2729+# macro-close END_MESSAGE_MAP
2730+#
2731+# You can assign any keyword to any type with the set option.
2732+# set func_call_user _ N_
2733
2734=== modified file 'configure.ac'
2735--- configure.ac 2009-08-20 16:14:47 +0000
2736+++ configure.ac 2009-09-09 21:03:12 +0000
2737@@ -30,8 +30,6 @@
2738 AC_DEFINE([DRIZZLE_VERSION_ID],RELEASE_ID,
2739 [Version ID that can be easily used for numeric comparison])
2740
2741-AC_DEFINE([_BACKWARD_BACKWARD_WARNING_H],[1],[Hack to disable deprecation warning in gcc])
2742-
2743 # The port that was assigned by IANA.
2744 DRIZZLE_TCP_PORT_DEFAULT=4427
2745
2746@@ -43,11 +41,6 @@
2747 AS_IF([test "x$GPERF" = "x"],
2748 AC_MSG_ERROR("Drizzle requires gperf to build."))
2749
2750-AC_PATH_PROG(LCOV, lcov)
2751-AC_PATH_PROG(GENHTML, genhtml)
2752-
2753-AM_CONDITIONAL(HAVE_LCOV,[test "x$LCOV" != "x"])
2754-
2755 AC_CHECK_PROGS(YACC, ['bison -y'])
2756 AS_IF([test "x$YACC" = "x" -a "$building_from_bzr" = "yes"],[
2757 AC_MSG_ERROR(["bison is required for Drizzle to build from a bzr branch"])
2758@@ -64,7 +57,12 @@
2759 AM_CONDITIONAL([BUILD_GETTEXT],[test "x$MSGMERGE" != "x" -a "x$MSGMERGE" != "x:"])
2760
2761
2762+dnl We need to turn on our CXXFLAGS to make sure it shows up correctly
2763+save_CXXFLAGS="${CXXFLAGS}"
2764+CXXFLAGS="${CXXFLAGS} ${AM_CXXFLAGS}"
2765 AC_CXX_STL_HASH
2766+CXXFLAGS="${save_CXXFLAGS}"
2767+
2768 AC_CXX_CSTDINT
2769 AC_CXX_CINTTYPES
2770
2771@@ -269,21 +267,35 @@
2772 #--------------------------------------------------------------------
2773
2774 AC_HEADER_DIRENT
2775-AC_HEADER_STDC
2776 AC_HEADER_SYS_WAIT
2777 AC_HEADER_STDBOOL
2778+dnl Checks for header files.
2779+dnl mysys/my_lib.cc
2780+AC_CHECK_HEADERS(dirent.h ndir.h sys/dir.h sys/ndir.h)
2781+dnl drizzled/drizzled.cc
2782+AC_CHECK_HEADERS(select.h sys/select.h sys/mman.h)
2783+dnl mysys/mf_tempfile.cc
2784+AC_CHECK_HEADERS(paths.h)
2785+
2786+dnl unverified for now
2787+AC_CHECK_HEADERS(termcap.h asm/termbits.h grp.h)
2788 AC_CHECK_HEADERS(fcntl.h float.h fpu_control.h ieeefp.h)
2789-AC_CHECK_HEADERS(limits.h pwd.h select.h linux/config.h)
2790+AC_CHECK_HEADERS(pwd.h)
2791 AC_CHECK_HEADERS(sys/fpu.h utime.h sys/utime.h )
2792 AC_CHECK_HEADERS(synch.h sys/mman.h sys/socket.h)
2793+AC_CHECK_HEADERS(sched.h)
2794+AC_CHECK_HEADERS(sys/prctl.h ieeefp.h)
2795+AC_CHECK_HEADERS(execinfo.h)
2796+
2797 AC_CHECK_HEADERS([curses.h term.h],[],[],
2798 [[#ifdef HAVE_CURSES_H
2799 # include <curses.h>
2800 #endif
2801 ]])
2802-AC_CHECK_HEADERS(termio.h termios.h sched.h alloca.h)
2803-AC_CHECK_HEADERS(sys/prctl.h ieeefp.h)
2804-AC_CHECK_HEADERS(execinfo.h)
2805+AC_CHECK_HEADERS(termio.h termios.h)
2806+AS_IF([test "$ac_cv_header_termio_h" = "no" -a "$ac_cv_header_termios_h" = "no"],[
2807+ AC_CHECK_FUNC(gtty, [], [AC_CHECK_LIB(compat, gtty)])
2808+])
2809
2810 #--------------------------------------------------------------------
2811 # Check for system libraries. Adds the library to $LIBS
2812@@ -291,88 +303,57 @@
2813 #--------------------------------------------------------------------
2814
2815 AC_CHECK_LIB(m, floor, [], AC_CHECK_LIB(m, __infinity))
2816-
2817+AC_CHECK_LIB(rt, clock_gettime)
2818 AC_CHECK_FUNC(setsockopt, [], [AC_CHECK_LIB(socket, setsockopt)])
2819-AC_CHECK_FUNC(yp_get_default_domain, [],
2820- [AC_CHECK_LIB(nsl, yp_get_default_domain)])
2821-AC_CHECK_FUNC(p2open, [], [AC_CHECK_LIB(gen, p2open)])
2822 # This may get things to compile even if bind-8 is installed
2823 AC_CHECK_FUNC(bind, [], [AC_CHECK_LIB(bind, bind)])
2824-# Check if crypt() exists in libc or libcrypt, sets LIBS if needed
2825-AC_SEARCH_LIBS(crypt, crypt, AC_DEFINE(HAVE_CRYPT, 1, [crypt]))
2826-
2827-# Check rt for aio_read
2828-AC_CHECK_LIB(rt, aio_read)
2829
2830 # For the sched_yield() function on Solaris
2831 AC_CHECK_FUNC(sched_yield, [],
2832 [AC_CHECK_LIB(posix4, [sched_yield],
2833 [AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield function]) LIBS="$LIBS -lposix4"])])
2834
2835-if test "$ac_cv_header_termio_h" = "no" -a "$ac_cv_header_termios_h" = "no"
2836-then
2837- AC_CHECK_FUNC(gtty, [], [AC_CHECK_LIB(compat, gtty)])
2838-fi
2839
2840 AC_CHECK_TYPES([fp_except], [], [], [
2841 #include <sys/types.h>
2842 #include <ieeefp.h>
2843 ])
2844
2845-my_save_LIBS="$LIBS"
2846+save_LIBS="$LIBS"
2847 LIBS=""
2848 AC_CHECK_LIB(dl,dlopen)
2849 AC_CHECK_FUNCS(dlopen)
2850-if test "$ac_cv_func_dlopen" != "yes"
2851-then
2852+AS_IF([test "$ac_cv_func_dlopen" != "yes"],[
2853 AC_MSG_ERROR([Drizzle requires dlopen])
2854-fi
2855+])
2856 LIBDL_LIBS="$LIBS"
2857-LIBS="$my_save_LIBS"
2858+LIBS="$save_LIBS"
2859 AC_SUBST(LIBDL_LIBS)
2860
2861
2862-AC_ARG_WITH([atomic-ops],
2863- [AS_HELP_STRING([--with-atomic-ops=rwlocks|smp|up],
2864- [Implement atomic operations using pthread rwlocks or atomic CPU
2865- instructions for multi-processor or uniprocessor
2866- configuration. By default gcc built-in sync functions are used,
2867- if available and 'smp' configuration otherwise.])],
2868- [with_atomic_ops="$withval"],
2869- [with_atomic_ops=smp])
2870-
2871-case "$with_atomic_ops" in
2872- "up") AC_DEFINE([MY_ATOMIC_MODE_DUMMY], [1],
2873- [Assume single-CPU mode, no concurrency]) ;;
2874- "rwlocks") AC_DEFINE([MY_ATOMIC_MODE_RWLOCKS], [1],
2875- [Use pthread rwlocks for atomic ops]) ;;
2876- "smp")
2877- AC_CACHE_CHECK(
2878- [whether the compiler provides atomic builtins],
2879- [ac_cv_gcc_atomic_builtins],
2880- [AC_RUN_IFELSE(
2881- [AC_LANG_PROGRAM([],[[
2882- int foo= -10; int bar= 10;
2883- if (!__sync_fetch_and_add(&foo, bar) || foo)
2884- return -1;
2885- bar= __sync_lock_test_and_set(&foo, bar);
2886- if (bar || foo != 10)
2887- return -1;
2888- bar= __sync_val_compare_and_swap(&bar, foo, 15);
2889- if (bar)
2890- return -1;
2891- return 0;
2892- ]])],
2893- [ac_cv_gcc_atomic_builtins=yes],
2894- [ac_cv_gcc_atomic_builtins=no])])
2895-
2896- if test "x$ac_cv_gcc_atomic_builtins" = "xyes"; then
2897- AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS, 1,
2898- [Define to 1 if compiler provides atomic builtins.])
2899- fi
2900- ;;
2901- *) AC_MSG_ERROR(["$with_atomic_ops" is not a valid value for --with-atomic-ops]) ;;
2902-esac
2903+AC_CACHE_CHECK(
2904+ [whether the compiler provides atomic builtins],
2905+ [drizzle_cv_gcc_atomic_builtins],
2906+ [AC_RUN_IFELSE(
2907+ [AC_LANG_PROGRAM([],[[
2908+ int foo= -10; int bar= 10;
2909+ if (!__sync_fetch_and_add(&foo, bar) || foo)
2910+ return -1;
2911+ bar= __sync_lock_test_and_set(&foo, bar);
2912+ if (bar || foo != 10)
2913+ return -1;
2914+ bar= __sync_val_compare_and_swap(&bar, foo, 15);
2915+ if (bar)
2916+ return -1;
2917+ return 0;
2918+ ]])],
2919+ [drizzle_cv_gcc_atomic_builtins=yes],
2920+ [drizzle_cv_gcc_atomic_builtins=no])])
2921+
2922+AS_IF([test "x$ac_cv_gcc_atomic_builtins" = "xyes"],[
2923+ AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS, 1,
2924+ [Does the compiler provide atomic builtins.])
2925+])
2926
2927
2928 AC_ARG_WITH([comment],
2929@@ -391,7 +372,6 @@
2930
2931 dnl Checks for typedefs, structures, and compiler characteristics.
2932
2933-AC_STRUCT_TM
2934 # off_t is not a builtin type
2935 AC_CHECK_SIZEOF(off_t, 4)
2936 if test "$ac_cv_sizeof_off_t" -eq 0
2937@@ -399,9 +379,11 @@
2938 AC_MSG_ERROR("Drizzle needs a off_t type.")
2939 fi
2940 AC_CHECK_SIZEOF(size_t)
2941-AC_DEFINE_UNQUOTED([SIZEOF_SIZE_T],[$ac_cv_sizeof_size_t],[Size of size_t as computed by sizeof()])
2942+AC_DEFINE_UNQUOTED([SIZEOF_SIZE_T],[$ac_cv_sizeof_size_t],
2943+ [Size of size_t as computed by sizeof()])
2944 AC_CHECK_SIZEOF(long long)
2945-AC_DEFINE_UNQUOTED(SIZEOF_LONG_LONG,[$ac_cv_sizeof_long_long],[Size of long long as computed by sizeof()])
2946+AC_DEFINE_UNQUOTED(SIZEOF_LONG_LONG,[$ac_cv_sizeof_long_long],
2947+ [Size of long long as computed by sizeof()])
2948
2949 dnl
2950 dnl check if time_t is unsigned
2951@@ -414,27 +396,11 @@
2952 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
2953 AC_CHECK_TYPES([uint, ulong])
2954
2955-DRIZZLE_PTHREAD_YIELD
2956-
2957-
2958-dnl Checks for header files.
2959-AC_CHECK_HEADERS(malloc.h)
2960
2961 dnl Checks for library functions.
2962 AC_FUNC_ALLOCA
2963
2964-AC_CHECK_FUNCS(issetugid)
2965-
2966-# Already-done: stdlib.h string.h unistd.h termios.h
2967-AC_CHECK_HEADERS(stdarg.h dirent.h locale.h ndir.h sys/dir.h \
2968- sys/ndir.h sys/select.h \
2969- sys/mman.h termcap.h termio.h asm/termbits.h grp.h \
2970- paths.h)
2971-
2972-# Already-done: strcasecmp
2973-AC_CHECK_FUNCS(lstat select)
2974-
2975-AC_HEADER_STAT
2976+
2977 DRIZZLE_HAVE_TIOCGWINSZ
2978 DRIZZLE_HAVE_TIOCSTAT
2979
2980@@ -442,34 +408,55 @@
2981
2982 dnl Checks for library functions.
2983
2984-AC_FUNC_UTIME_NULL
2985-AC_FUNC_VPRINTF
2986-
2987 AC_CHECK_FUNCS(fcntl)
2988-if test "x$ac_cv_func_fcntl" != "xyes"
2989-then
2990+AS_IF([test "x$ac_cv_func_fcntl" != "xyes"],[
2991 AC_MSG_ERROR("Drizzle requires fcntl.")
2992-fi
2993-
2994-AC_CONFIG_LIBOBJ_DIR([gnulib])
2995+])
2996+
2997+AC_CACHE_CHECK([working fdatasync],[ac_cv_func_fdatasync],[
2998+ AC_LANG_PUSH(C++)
2999+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
3000+#include <unistd.h>
3001+ ]],[[
3002+fdatasync(4);
3003+ ]])],
3004+ [ac_cv_func_fdatasync=yes],
3005+ [ac_cv_func_fdatasync=no])
3006+ AC_LANG_POP()
3007+])
3008+AS_IF([test "x${ac_cv_func_fdatasync}" = "xyes"],
3009+ [AC_DEFINE([HAVE_FDATASYNC],[1],[If the system has a working fdatasync])])
3010+
3011+AC_CACHE_CHECK([working clock_gettime],[ac_cv_func_clock_gettime],[
3012+ AC_LANG_PUSH(C++)
3013+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
3014+#include <ctime>
3015+ ]],[[
3016+timespec tp;
3017+clock_gettime(CLOCK_REALTIME, &tp);
3018+ ]])],
3019+ [ac_cv_func_clock_gettime=yes],
3020+ [ac_cv_func_clock_gettime=no])
3021+ AC_LANG_POP()
3022+])
3023+AS_IF([test "x${ac_cv_func_clock_gettime}" = "xyes"],
3024+ [AC_DEFINE([HAVE_CLOCK_GETTIME],[1],
3025+ [Do we have the POSIX function clock_gettime])])
3026
3027 AC_CHECK_FUNCS( \
3028 cuserid fchmod \
3029- fdatasync fpresetsticky fpsetmask fsync \
3030- getpassphrase getpwnam \
3031- getpwuid getrlimit getrusage index initgroups isnan \
3032- localtime_r log log2 gethrtime gmtime_r \
3033+ fsync \
3034+ getpwnam \
3035+ getpwuid getrlimit getrusage initgroups isnan \
3036+ localtime_r log2 gethrtime \
3037 madvise \
3038- mkstemp mlockall poll pread pthread_attr_create mmap mmap64 \
3039- pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \
3040- pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \
3041- pthread_key_delete pthread_rwlock_rdlock pthread_setprio \
3042- pthread_setprio_np pthread_setschedparam pthread_sigmask readlink \
3043- realpath rename rwlock_init setupterm \
3044+ mkstemp mlockall poll pread mmap mmap64 \
3045+ readlink \
3046+ rename setupterm \
3047 sigaction \
3048 sigthreadmask \
3049- snprintf strpbrk \
3050- tell tempnam \
3051+ snprintf \
3052+ tempnam \
3053 backtrace backtrace_symbols backtrace_symbols_fd)
3054
3055 AC_LANG_PUSH(C++)
3056@@ -483,156 +470,23 @@
3057 ]])
3058 AC_LANG_POP()
3059
3060-
3061-AM_CONDITIONAL(BUILD_THR_RWLOCK,[test "$ac_cv_func_rwlock_init" -a "$ac_cv_funn_pthread_rwlock_rdlock"])
3062-
3063-
3064-# Sanity check: We chould not have any fseeko symbol unless
3065-# large_file_support=yes
3066-AC_CHECK_FUNC(fseeko,
3067-[if test "$large_file_support" = no -a "x$TARGET_LINUX" = "xtrue";
3068-then
3069- AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!")
3070-fi]
3071-)
3072-
3073-# Check definition of pthread_getspecific
3074-AC_CACHE_CHECK([args to pthread_getspecific], [mysql_cv_getspecific_args],
3075- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3076-#if !defined(_REENTRANT)
3077-#define _REENTRANT
3078-#endif
3079-#ifndef _POSIX_PTHREAD_SEMANTICS
3080-#define _POSIX_PTHREAD_SEMANTICS
3081-#endif
3082-#include <pthread.h>
3083- ]], [[
3084-void *pthread_getspecific(pthread_key_t key);
3085-pthread_getspecific((pthread_key_t) NULL);
3086- ]])],
3087- [mysql_cv_getspecific_args=POSIX],
3088- [mysql_cv_getspecific_args=other])])
3089- if test "$mysql_cv_getspecific_args" = "other"
3090- then
3091- AC_DEFINE([HAVE_NONPOSIX_PTHREAD_GETSPECIFIC], [1],
3092- [For some non posix threads])
3093- fi
3094-
3095- # Check definition of pthread_mutex_init
3096- AC_CACHE_CHECK([args to pthread_mutex_init], [mysql_cv_mutex_init_args],
3097- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3098-#ifndef _REENTRANT
3099-#define _REENTRANT
3100-#endif
3101-#ifndef _POSIX_PTHREAD_SEMANTICS
3102-#define _POSIX_PTHREAD_SEMANTICS
3103-#endif
3104-#include <pthread.h> ]], [[
3105- pthread_mutexattr_t attr;
3106- pthread_mutex_t mp;
3107- pthread_mutex_init(&mp,&attr); ]])],
3108- [mysql_cv_mutex_init_args=POSIX],
3109- [mysql_cv_mutex_init_args=other])])
3110- if test "$mysql_cv_mutex_init_args" = "other"
3111- then
3112- AC_DEFINE([HAVE_NONPOSIX_PTHREAD_MUTEX_INIT], [1],
3113- [For some non posix threads])
3114- fi
3115-#---END:
3116-
3117-#---START: Used in for client configure
3118 # Check definition of readdir_r
3119-AC_CACHE_CHECK([args to readdir_r], [mysql_cv_readdir_r],
3120- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3121-#ifndef _REENTRANT
3122-#define _REENTRANT
3123-#endif
3124-#ifndef _POSIX_PTHREAD_SEMANTICS
3125-#define _POSIX_PTHREAD_SEMANTICS
3126-#endif
3127-#include <pthread.h>
3128-#include <dirent.h>]], [[ int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
3129-readdir_r((DIR *) NULL, (struct dirent *) NULL, (struct dirent **) NULL); ]])],
3130- [mysql_cv_readdir_r=POSIX],
3131- [mysql_cv_readdir_r=other])])
3132-if test "$mysql_cv_readdir_r" = "POSIX"
3133-then
3134- AC_DEFINE([HAVE_READDIR_R], [1], [POSIX readdir_r])
3135-fi
3136-
3137-# Check definition of posix sigwait()
3138-AC_CACHE_CHECK([style of sigwait], [mysql_cv_sigwait],
3139- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3140-#ifndef _REENTRANT
3141-#define _REENTRANT
3142-#endif
3143-#ifndef _POSIX_PTHREAD_SEMANTICS
3144-#define _POSIX_PTHREAD_SEMANTICS
3145-#endif
3146-#include <pthread.h>
3147-#include <signal.h>
3148- ]], [[
3149-#ifndef _AIX
3150-sigset_t set;
3151-int sig;
3152-sigwait(&set,&sig);
3153-#endif
3154- ]])],
3155- [mysql_cv_sigwait=POSIX],
3156- [mysql_cv_sigwait=other])])
3157-if test "$mysql_cv_sigwait" = "POSIX"
3158-then
3159- AC_DEFINE([HAVE_SIGWAIT], [1], [POSIX sigwait])
3160-fi
3161-
3162-if test "$mysql_cv_sigwait" != "POSIX"
3163-then
3164-unset mysql_cv_sigwait
3165-# Check definition of posix sigwait()
3166-AC_CACHE_CHECK([style of sigwait], [mysql_cv_sigwait],
3167- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3168-#ifndef _REENTRANT
3169-#define _REENTRANT
3170-#endif
3171-#ifndef _POSIX_PTHREAD_SEMANTICS
3172-#define _POSIX_PTHREAD_SEMANTICS
3173-#endif
3174-#include <pthread.h>
3175-#include <signal.h>
3176- ]], [[
3177-sigset_t set;
3178-int sig;
3179-sigwait(&set);
3180- ]])],
3181- [mysql_cv_sigwait=NONPOSIX],
3182- [mysql_cv_sigwait=other])])
3183-if test "$mysql_cv_sigwait" = "NONPOSIX"
3184-then
3185- AC_DEFINE([HAVE_NONPOSIX_SIGWAIT], [1], [sigwait with one argument])
3186-fi
3187-fi
3188-#---END:
3189-
3190-# Check if pthread_attr_setscope() exists
3191-AC_CACHE_CHECK([for pthread_attr_setscope], [mysql_cv_pthread_attr_setscope],
3192- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3193-#ifndef _REENTRANT
3194-#define _REENTRANT
3195-#endif
3196-#ifndef _POSIX_PTHREAD_SEMANTICS
3197-#define _POSIX_PTHREAD_SEMANTICS
3198-#endif
3199-#include <pthread.h>
3200- ]], [[
3201-pthread_attr_t thr_attr;
3202-pthread_attr_setscope(&thr_attr,0);
3203- ]])],
3204- [mysql_cv_pthread_attr_setscope=yes],
3205- [mysql_cv_pthread_attr_setscope=no])])
3206-if test "$mysql_cv_pthread_attr_setscope" = "yes"
3207-then
3208- AC_DEFINE([HAVE_PTHREAD_ATTR_SETSCOPE], [1], [pthread_attr_setscope])
3209-fi
3210+AC_LANG_PUSH([C++])
3211+AC_CACHE_CHECK([for POSIX readdir_r],
3212+ [drizzle_cv_readdir_r],
3213+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3214+#include <stdlib.h>
3215+#include <dirent.h>
3216+ ]], [[
3217+readdir_r((DIR *) NULL, (struct dirent *) NULL, (struct dirent **) NULL);
3218+]])],
3219+ [drizzle_cv_readdir_r=yes],
3220+ [drizzle_cv_readdir_r=no])])
3221+AC_LANG_POP()
3222+AS_IF([test "$drizzle_cv_readdir_r" = "no"],[
3223+ AC_MSG_ERROR([POSIX readdir_r is required])
3224+])
3225+
3226
3227 AC_LANG_PUSH([C++])
3228 AC_CHECK_HEADERS(cxxabi.h)
3229@@ -656,7 +510,7 @@
3230
3231 dnl Has to be done late, as the plugin may need to check for existence of
3232 dnl functions tested above
3233-PANDORA_PLUGINS
3234+PANDORA_PLUGINS([drizzled/plugin/config.h])
3235
3236 dnl GCC Precompiled Header Support
3237 dnl re-enable later
3238
3239=== modified file 'drizzled/Makefile.am'
3240--- drizzled/Makefile.am 2009-08-27 00:39:15 +0000
3241+++ drizzled/Makefile.am 2009-09-09 18:03:41 +0000
3242@@ -31,53 +31,10 @@
3243 atomic/pthread_traits.h \
3244 atomic/sun_studio.h \
3245 atomics.h \
3246- authentication.h \
3247 base.h \
3248 cached_item.h \
3249 calendar.h \
3250 check_stack_overrun.h \
3251- statement.h \
3252- statement/alter_schema.h \
3253- statement/alter_table.h \
3254- statement/analyze.h \
3255- statement/change_schema.h \
3256- statement/check.h \
3257- statement/checksum.h \
3258- statement/commit.h \
3259- statement/create_index.h \
3260- statement/create_schema.h \
3261- statement/create_table.h \
3262- statement/delete.h \
3263- statement/drop_index.h \
3264- statement/drop_schema.h \
3265- statement/drop_table.h \
3266- statement/empty_query.h \
3267- statement/flush.h \
3268- statement/insert.h \
3269- statement/insert_select.h \
3270- statement/kill.h \
3271- statement/load.h \
3272- statement/optimize.h \
3273- statement/release_savepoint.h \
3274- statement/rename_table.h \
3275- statement/replace.h \
3276- statement/replace_select.h \
3277- statement/rollback.h \
3278- statement/rollback_to_savepoint.h \
3279- statement/savepoint.h \
3280- statement/select.h \
3281- statement/set_option.h \
3282- statement/show_create.h \
3283- statement/show_create_schema.h \
3284- statement/show_engine_status.h \
3285- statement/show_errors.h \
3286- statement/show_processlist.h \
3287- statement/show_status.h \
3288- statement/show_warnings.h \
3289- statement/start_transaction.h \
3290- statement/truncate.h \
3291- statement/unlock_tables.h \
3292- statement/update.h \
3293 common.h \
3294 comp_creator.h \
3295 cost_vect.h \
3296@@ -88,10 +45,10 @@
3297 definitions.h \
3298 diagnostics_area.h \
3299 discrete_interval.h \
3300+ discrete_intervals_list.h \
3301 dtcollation.h \
3302 enum.h \
3303 enum_nested_loop_state.h \
3304- errmsg.h \
3305 errmsg_print.h \
3306 error.h \
3307 error_injection.h \
3308@@ -234,7 +191,6 @@
3309 hybrid_type_traits_decimal.h \
3310 hybrid_type_traits_integer.h \
3311 index_hint.h \
3312- info_schema.h \
3313 internal_error_handler.h \
3314 item.h \
3315 item/basic_constant.h \
3316@@ -287,8 +243,8 @@
3317 lex_string.h \
3318 lex_symbol.h \
3319 lock.h \
3320- logging.h \
3321 lookup_symbol.h \
3322+ memory/multi_malloc.h \
3323 my_decimal.h\
3324 my_var.h \
3325 name_resolution_context.h \
3326@@ -296,33 +252,35 @@
3327 natural_join_column.h \
3328 nested_join.h \
3329 open_tables_state.h \
3330+ opt_range.h \
3331 optimizer/key_field.h \
3332 optimizer/position.h \
3333 optimizer/sargable_param.h \
3334- opt_range.h \
3335 order.h \
3336 plugin.h \
3337- plugin/applier.h \
3338 plugin/authentication.h \
3339- plugin/error_message_handler.h \
3340+ plugin/client.h \
3341+ plugin/command_applier.h \
3342+ plugin/command_reader.h \
3343+ plugin/command_replicator.h \
3344+ plugin/error_message.h \
3345 plugin/function.h \
3346 plugin/handle.h \
3347+ plugin/info_schema.h \
3348 plugin/library.h \
3349 plugin/listen.h \
3350- plugin/logging_handler.h \
3351+ plugin/listen_tcp.h \
3352+ plugin/logging.h \
3353 plugin/manifest.h \
3354- plugin/protocol.h \
3355- plugin/qcache.h \
3356+ plugin/null_client.h \
3357+ plugin/query_cache.h \
3358 plugin/registry.h \
3359- plugin/replicator.h \
3360 plugin/scheduler.h \
3361 plugin/storage_engine.h \
3362 probes.h \
3363- qcache.h \
3364 query_id.h \
3365 registry.h \
3366 replication_services.h \
3367- scheduling.h \
3368 security_context.h \
3369 select_create.h \
3370 select_dump.h \
3371@@ -341,8 +299,16 @@
3372 session.h \
3373 set_var.h \
3374 show.h \
3375+ slot/authentication.h \
3376+ slot/command_replicator.h \
3377+ slot/command_applier.h \
3378+ slot/error_message.h \
3379 slot/function.h \
3380+ slot/info_schema.h \
3381 slot/listen.h \
3382+ slot/logging.h \
3383+ slot/query_cache.h \
3384+ slot/scheduler.h \
3385 sql_alloc.h \
3386 sql_array.h \
3387 sql_base.h \
3388@@ -353,7 +319,6 @@
3389 sql_load.h \
3390 sql_locale.h \
3391 sql_parse.h \
3392- sql_plugin.h \
3393 sql_select.h \
3394 sql_sort.h \
3395 sql_state.h \
3396@@ -361,6 +326,48 @@
3397 sql_table.h \
3398 sql_union.h \
3399 stacktrace.h \
3400+ statement.h \
3401+ statement/alter_schema.h \
3402+ statement/alter_table.h \
3403+ statement/analyze.h \
3404+ statement/change_schema.h \
3405+ statement/check.h \
3406+ statement/checksum.h \
3407+ statement/commit.h \
3408+ statement/create_index.h \
3409+ statement/create_schema.h \
3410+ statement/create_table.h \
3411+ statement/delete.h \
3412+ statement/drop_index.h \
3413+ statement/drop_schema.h \
3414+ statement/drop_table.h \
3415+ statement/empty_query.h \
3416+ statement/flush.h \
3417+ statement/insert.h \
3418+ statement/insert_select.h \
3419+ statement/kill.h \
3420+ statement/load.h \
3421+ statement/optimize.h \
3422+ statement/release_savepoint.h \
3423+ statement/rename_table.h \
3424+ statement/replace.h \
3425+ statement/replace_select.h \
3426+ statement/rollback.h \
3427+ statement/rollback_to_savepoint.h \
3428+ statement/savepoint.h \
3429+ statement/select.h \
3430+ statement/set_option.h \
3431+ statement/show_create.h \
3432+ statement/show_create_schema.h \
3433+ statement/show_engine_status.h \
3434+ statement/show_errors.h \
3435+ statement/show_processlist.h \
3436+ statement/show_status.h \
3437+ statement/show_warnings.h \
3438+ statement/start_transaction.h \
3439+ statement/truncate.h \
3440+ statement/unlock_tables.h \
3441+ statement/update.h \
3442 stored_key.h \
3443 structs.h \
3444 symbol_hash.h \
3445@@ -368,8 +375,8 @@
3446 table_ident.h \
3447 table_list.h \
3448 table_map_iterator.h \
3449+ table_proto.h \
3450 table_reference.h \
3451- table_proto.h \
3452 table_share.h \
3453 temporal.h \
3454 temporal_format.h \
3455@@ -379,11 +386,11 @@
3456 tztime.h \
3457 unique.h \
3458 unireg.h \
3459+ user_var_entry.h \
3460 utf8.h \
3461 utf8/checked.h \
3462 utf8/core.h \
3463 utf8/unchecked.h \
3464- user_var_entry.h \
3465 xid.h
3466
3467 noinst_LTLIBRARIES = \
3468@@ -406,6 +413,7 @@
3469
3470
3471 noinst_HEADERS = \
3472+ hash.h \
3473 gettext.h \
3474 global.h \
3475 server_includes.h \
3476@@ -413,66 +421,26 @@
3477 util/test.h
3478
3479 drizzled_SOURCES = \
3480- authentication.cc \
3481 cached_item.cc \
3482 calendar.cc \
3483 check_stack_overrun.cc \
3484- statement/alter_schema.cc \
3485- statement/alter_table.cc \
3486- statement/analyze.cc \
3487- statement/change_schema.cc \
3488- statement/check.cc \
3489- statement/checksum.cc \
3490- statement/commit.cc \
3491- statement/create_index.cc \
3492- statement/create_schema.cc \
3493- statement/create_table.cc \
3494- statement/delete.cc \
3495- statement/drop_index.cc \
3496- statement/drop_schema.cc \
3497- statement/drop_table.cc \
3498- statement/empty_query.cc \
3499- statement/flush.cc \
3500- statement/insert.cc \
3501- statement/insert_select.cc \
3502- statement/kill.cc \
3503- statement/load.cc \
3504- statement/optimize.cc \
3505- statement/release_savepoint.cc \
3506- statement/rename_table.cc \
3507- statement/replace.cc \
3508- statement/replace_select.cc \
3509- statement/rollback.cc \
3510- statement/rollback_to_savepoint.cc \
3511- statement/savepoint.cc \
3512- statement/select.cc \
3513- statement/set_option.cc \
3514- statement/show_create.cc \
3515- statement/show_create_schema.cc \
3516- statement/show_engine_status.cc \
3517- statement/show_errors.cc \
3518- statement/show_processlist.cc \
3519- statement/show_status.cc \
3520- statement/show_warnings.cc \
3521- statement/start_transaction.cc \
3522- statement/truncate.cc \
3523- statement/unlock_tables.cc \
3524- statement/update.cc \
3525 comp_creator.cc \
3526 create_field.cc \
3527 current_session.cc \
3528 diagnostics_area.cc \
3529+ discrete_interval.cc \
3530+ discrete_intervals_list.cc \
3531 drizzled.cc \
3532 dtcollation.cc \
3533- errmsg.cc \
3534+ errmsg_print.cc \
3535 error.cc \
3536- errmsg_print.cc \
3537+ field.cc \
3538 field/blob.cc \
3539 field/date.cc \
3540 field/datetime.cc \
3541- field/enum.cc \
3542 field/decimal.cc \
3543 field/double.cc \
3544+ field/enum.cc \
3545 field/int64_t.cc \
3546 field/long.cc \
3547 field/null.cc \
3548@@ -481,7 +449,6 @@
3549 field/str.cc \
3550 field/timestamp.cc \
3551 field/varstring.cc \
3552- field.cc \
3553 field_conv.cc \
3554 field_iterator.cc \
3555 filesort.cc \
3556@@ -497,17 +464,6 @@
3557 function/get_user_var.cc \
3558 function/last_insert.cc \
3559 function/locate.cc \
3560- function/min_max.cc \
3561- function/num1.cc \
3562- function/numhybrid.cc \
3563- function/num_op.cc \
3564- function/row_count.cc \
3565- function/set_user_var.cc \
3566- function/sign.cc \
3567- function/signed.cc \
3568- function/units.cc \
3569- function/unsigned.cc \
3570- function/user_var_as_out_param.cc \
3571 function/math/abs.cc \
3572 function/math/acos.cc \
3573 function/math/asin.cc \
3574@@ -518,10 +474,10 @@
3575 function/math/divide.cc \
3576 function/math/exp.cc \
3577 function/math/floor.cc \
3578+ function/math/int.cc \
3579 function/math/int_divide.cc \
3580+ function/math/int_val.cc \
3581 function/math/integer.cc \
3582- function/math/int.cc \
3583- function/math/int_val.cc \
3584 function/math/ln.cc \
3585 function/math/log.cc \
3586 function/math/minus.cc \
3587@@ -537,6 +493,14 @@
3588 function/math/sin.cc \
3589 function/math/sqrt.cc \
3590 function/math/tan.cc \
3591+ function/min_max.cc \
3592+ function/num1.cc \
3593+ function/num_op.cc \
3594+ function/numhybrid.cc \
3595+ function/row_count.cc \
3596+ function/set_user_var.cc \
3597+ function/sign.cc \
3598+ function/signed.cc \
3599 function/str/alloc_buffer.cc \
3600 function/str/binary.cc \
3601 function/str/char.cc \
3602@@ -573,8 +537,8 @@
3603 function/time/date_format.cc \
3604 function/time/dayname.cc \
3605 function/time/dayofmonth.cc \
3606+ function/time/dayofyear.cc \
3607 function/time/extract.cc \
3608- function/time/dayofyear.cc \
3609 function/time/from_days.cc \
3610 function/time/from_unixtime.cc \
3611 function/time/hour.cc \
3612@@ -584,9 +548,9 @@
3613 function/time/minute.cc \
3614 function/time/month.cc \
3615 function/time/now.cc \
3616- function/time/quarter.cc \
3617 function/time/period_add.cc \
3618 function/time/period_diff.cc \
3619+ function/time/quarter.cc \
3620 function/time/second.cc \
3621 function/time/sysdate_local.cc \
3622 function/time/timestamp_diff.cc \
3623@@ -595,11 +559,15 @@
3624 function/time/unix_timestamp.cc \
3625 function/time/weekday.cc \
3626 function/time/year.cc \
3627+ function/units.cc \
3628+ function/unsigned.cc \
3629+ function/user_var_as_out_param.cc \
3630 ha_trx_info.cc \
3631 hybrid_type_traits.cc \
3632 hybrid_type_traits_decimal.cc \
3633 hybrid_type_traits_integer.cc \
3634 index_hint.cc \
3635+ item.cc \
3636 item/bin_string.cc \
3637 item/cache.cc \
3638 item/cache_decimal.cc \
3639@@ -617,10 +585,10 @@
3640 item/field.cc \
3641 item/float.cc \
3642 item/hex_string.cc \
3643+ item/ident.cc \
3644 item/insert_value.cc \
3645+ item/int.cc \
3646 item/int_with_ref.cc \
3647- item/ident.cc \
3648- item/int.cc \
3649 item/null.cc \
3650 item/num.cc \
3651 item/outer_ref.cc \
3652@@ -633,31 +601,42 @@
3653 item/sum.cc \
3654 item/type_holder.cc \
3655 item/uint.cc \
3656- item.cc \
3657 join.cc \
3658 join_cache.cc \
3659 join_table.cc \
3660 key.cc \
3661 key_map.cc \
3662 lock.cc \
3663- logging.cc \
3664 lookup_symbol.cc \
3665+ memory/multi_malloc.cc \
3666 my_decimal.cc \
3667+ name_resolution_context.cc \
3668 name_resolution_context_state.cc \
3669 natural_join_column.cc \
3670- optimizer/key_field.cc \
3671 opt_range.cc \
3672 opt_sum.cc \
3673+ optimizer/key_field.cc \
3674+ plugin/library.cc \
3675+ plugin/listen_tcp.cc \
3676 plugin/registry.cc \
3677- qcache.cc \
3678+ plugin/loader.cc \
3679 query_id.cc \
3680 records.cc \
3681- scheduling.cc \
3682+ replication_services.cc \
3683 session.cc \
3684 set_var.cc \
3685 show.cc \
3686+ slot/authentication.cc \
3687+ slot/command_replicator.cc \
3688+ slot/command_applier.cc \
3689+ slot/error_message.cc \
3690 slot/function.cc \
3691+ slot/info_schema.cc \
3692 slot/listen.cc \
3693+ slot/logging.cc \
3694+ slot/query_cache.cc \
3695+ slot/scheduler.cc \
3696+ sql_alloc.cc \
3697 sql_base.cc \
3698 sql_delete.cc \
3699 sql_derived.cc \
3700@@ -668,7 +647,6 @@
3701 sql_load.cc \
3702 sql_locale.cc \
3703 sql_parse.cc \
3704- sql_plugin.cc \
3705 sql_select.cc \
3706 sql_state.cc \
3707 sql_string.cc \
3708@@ -677,17 +655,56 @@
3709 sql_update.cc \
3710 sql_yacc.yy \
3711 stacktrace.cc \
3712+ statement/alter_schema.cc \
3713+ statement/alter_table.cc \
3714+ statement/analyze.cc \
3715+ statement/change_schema.cc \
3716+ statement/check.cc \
3717+ statement/checksum.cc \
3718+ statement/commit.cc \
3719+ statement/create_index.cc \
3720+ statement/create_schema.cc \
3721+ statement/create_table.cc \
3722+ statement/delete.cc \
3723+ statement/drop_index.cc \
3724+ statement/drop_schema.cc \
3725+ statement/drop_table.cc \
3726+ statement/empty_query.cc \
3727+ statement/flush.cc \
3728+ statement/insert.cc \
3729+ statement/insert_select.cc \
3730+ statement/kill.cc \
3731+ statement/load.cc \
3732+ statement/optimize.cc \
3733+ statement/release_savepoint.cc \
3734+ statement/rename_table.cc \
3735+ statement/replace.cc \
3736+ statement/replace_select.cc \
3737+ statement/rollback.cc \
3738+ statement/rollback_to_savepoint.cc \
3739+ statement/savepoint.cc \
3740+ statement/select.cc \
3741+ statement/set_option.cc \
3742+ statement/show_create.cc \
3743+ statement/show_create_schema.cc \
3744+ statement/show_engine_status.cc \
3745+ statement/show_errors.cc \
3746+ statement/show_processlist.cc \
3747+ statement/show_status.cc \
3748+ statement/show_warnings.cc \
3749+ statement/start_transaction.cc \
3750+ statement/truncate.cc \
3751+ statement/unlock_tables.cc \
3752+ statement/update.cc \
3753 strfunc.cc \
3754 table.cc \
3755 table_list.cc \
3756- table_map_iterator.cc \
3757+ table_map_iterator.cc \
3758 table_share.cc \
3759 temporal.cc \
3760 temporal_format.cc \
3761 temporal_interval.cc \
3762- thr_malloc.cc \
3763 time.cc \
3764- replication_services.cc \
3765 tztime.cc \
3766 uniques.cc \
3767 user_var_entry.cc \
3768@@ -712,7 +729,6 @@
3769 plugin/storage_engine.h.gch \
3770 sql_base.h.gch \
3771 sql_parse.h.gch \
3772- sql_plugin.h.gch \
3773 util/convert.h.gch \
3774 util/test.h.gch
3775 else
3776@@ -728,6 +744,7 @@
3777 $(PCHHEADERS)
3778
3779 EXTRA_DIST = \
3780+ plugin/config.h.in \
3781 $(BUILT_MAINT_SRC) \
3782 symbol_hash.gperf \
3783 function_hash.gperf \
3784
3785=== modified file 'drizzled/atomic/sun_studio.h'
3786--- drizzled/atomic/sun_studio.h 2009-07-02 03:41:45 +0000
3787+++ drizzled/atomic/sun_studio.h 2009-09-09 00:38:19 +0000
3788@@ -175,4 +175,4 @@
3789 }
3790 #endif /* defined(_KERNEL) || defined(_INT64_TYPE) */
3791
3792-#endif /* DRIZZLED_ATOMIC_SOLARIS_H */
3793+#endif /* DRIZZLED_ATOMIC_SUN_STUDIO_H */
3794
3795=== modified file 'drizzled/atomics.h'
3796--- drizzled/atomics.h 2009-07-30 06:49:08 +0000
3797+++ drizzled/atomics.h 2009-09-09 00:38:19 +0000
3798@@ -136,12 +136,14 @@
3799 struct atomic {
3800 };
3801
3802+/* *INDENT-OFF* */
3803 #define __DRIZZLE_DECL_ATOMIC(T) \
3804 template<> struct atomic<T> \
3805 : internal::atomic_impl<T,T,ATOMIC_TRAITS<T,T> > { \
3806 atomic<T>() : internal::atomic_impl<T,T,ATOMIC_TRAITS<T,T> >() {} \
3807 T operator=( T rhs ) { return store_with_release(rhs); } \
3808 };
3809+/* *INDENT-ON* */
3810
3811
3812 __DRIZZLE_DECL_ATOMIC(long)
3813@@ -158,6 +160,7 @@
3814 /* 32-bit platforms don't have a GCC atomic operation for 64-bit types,
3815 * so we'll use pthread locks to handler 64-bit types on that platforms
3816 */
3817+/* *INDENT-OFF* */
3818 # if SIZEOF_SIZE_T >= SIZEOF_LONG_LONG
3819 __DRIZZLE_DECL_ATOMIC(long long)
3820 __DRIZZLE_DECL_ATOMIC(unsigned long long)
3821@@ -172,7 +175,8 @@
3822 __DRIZZLE_DECL_ATOMIC64(long long)
3823 __DRIZZLE_DECL_ATOMIC64(unsigned long long)
3824 # endif
3825+/* *INDENT-ON* */
3826
3827 }
3828
3829-#endif /* DRIZZLED_ATOMIC_H */
3830+#endif /* DRIZZLED_ATOMICS_H */
3831
3832=== modified file 'drizzled/base.h'
3833--- drizzled/base.h 2009-08-17 22:19:53 +0000
3834+++ drizzled/base.h 2009-09-09 00:38:19 +0000
3835@@ -26,8 +26,8 @@
3836 * @TODO Convert HA_XXX defines into enums and/or bitmaps
3837 */
3838
3839-#ifndef DRIZZLE_SERVER_BASE_H
3840-#define DRIZZLE_SERVER_BASE_H
3841+#ifndef DRIZZLED_BASE_H
3842+#define DRIZZLED_BASE_H
3843
3844 #define CHSIZE_USED
3845
3846@@ -240,7 +240,7 @@
3847 #define HA_VAR_LENGTH_KEY 8
3848 #define HA_NULL_PART_KEY 64
3849 #define HA_USES_COMMENT 4096
3850-#define HA_USES_BLOCK_SIZE ((uint32_t) 32768)
3851+#define HA_USES_BLOCK_SIZE (static_cast<uint32_t>(32768))
3852 #define HA_SORT_ALLOWS_SAME 512 /* Intern bit when sorting records */
3853
3854 /* These flags can be added to key-seg-flag */
3855@@ -269,8 +269,8 @@
3856 #define HA_OPTION_CREATE_FROM_ENGINE 256
3857 #define HA_OPTION_NULL_FIELDS 1024
3858 #define HA_OPTION_PAGE_CHECKSUM 2048
3859-#define HA_OPTION_TEMP_COMPRESS_RECORD ((uint32_t) 16384) /* set by isamchk */
3860-#define HA_OPTION_READ_ONLY_DATA ((uint32_t) 32768) /* Set by isamchk */
3861+static const uint32_t HA_OPTION_TEMP_COMPRESS_RECORD= 16384;/* set by isamchk */
3862+static const uint32_t HA_OPTION_READ_ONLY_DATA= 32768; /* Set by isamchk */
3863
3864 /* Bits in flag to create() */
3865
3866@@ -413,7 +413,7 @@
3867 #define HA_NAMELEN 64 /* Max length of saved filename */
3868 #define NO_SUCH_KEY (~(uint32_t)0) /* used as a key no. */
3869
3870-typedef ulong key_part_map;
3871+typedef unsigned long key_part_map;
3872 #define HA_WHOLE_KEY (~(key_part_map)0)
3873
3874 /* Intern constants in databases */
3875@@ -526,8 +526,8 @@
3876 typedef uint64_t ha_rows;
3877 #define rows2double(A) uint64_t2double(A)
3878
3879-#define HA_POS_ERROR (~ (ha_rows) 0)
3880-#define HA_OFFSET_ERROR (~ (my_off_t) 0)
3881+#define HA_POS_ERROR (~ static_cast<ha_rows>(0))
3882+#define HA_OFFSET_ERROR (~ static_cast<uint64_t>(0))
3883
3884 #if SIZEOF_OFF_T == 4
3885 #define MAX_FILE_SIZE INT32_MAX
3886@@ -537,4 +537,4 @@
3887
3888 #define HA_VARCHAR_PACKLENGTH(field_length) ((field_length) < 256 ? 1 :2)
3889
3890-#endif /* DRIZZLE_SERVER_BASE_H */
3891+#endif /* DRIZZLED_BASE_H */
3892
3893=== modified file 'drizzled/cached_item.cc'
3894--- drizzled/cached_item.cc 2009-06-23 21:20:32 +0000
3895+++ drizzled/cached_item.cc 2009-09-09 00:38:19 +0000
3896@@ -40,18 +40,18 @@
3897 bool use_result_field)
3898 {
3899 if (item->real_item()->type() == Item::FIELD_ITEM &&
3900- !(((Item_field *) (item->real_item()))->field->flags & BLOB_FLAG))
3901+ !((static_cast<Item_field *>(item->real_item()))->field->flags & BLOB_FLAG))
3902 {
3903- Item_field *real_item= (Item_field *) item->real_item();
3904+ Item_field *real_item= static_cast<Item_field *>(item->real_item());
3905 Field *cached_field= use_result_field ? real_item->result_field :
3906 real_item->field;
3907 return new Cached_item_field(cached_field);
3908 }
3909 switch (item->result_type()) {
3910 case STRING_RESULT:
3911- return new Cached_item_str(session, (Item_field *) item);
3912+ return new Cached_item_str(session, static_cast<Item_field *>(item));
3913 case INT_RESULT:
3914- return new Cached_item_int((Item_field *) item);
3915+ return new Cached_item_int(static_cast<Item_field *>(item));
3916 case REAL_RESULT:
3917 return new Cached_item_real(item);
3918 case DECIMAL_RESULT:
3919@@ -73,8 +73,8 @@
3920 */
3921
3922 Cached_item_str::Cached_item_str(Session *session, Item *arg)
3923- :item(arg), value(min(arg->max_length,
3924- (uint32_t)session->variables.max_sort_length))
3925+ :item(arg), value(min(static_cast<size_t>(arg->max_length),
3926+ session->variables.max_sort_length))
3927 {}
3928
3929 bool Cached_item_str::cmp(void)
3930
3931=== modified file 'drizzled/cached_item.h'
3932--- drizzled/cached_item.h 2008-11-16 23:47:43 +0000
3933+++ drizzled/cached_item.h 2009-09-09 00:38:19 +0000
3934@@ -85,7 +85,7 @@
3935 {
3936 field= arg_field;
3937 /* TODO: take the memory allocation below out of the constructor. */
3938- buff= (unsigned char*) sql_calloc(length=field->pack_length());
3939+ buff= reinterpret_cast<unsigned char*>(sql_calloc(length=field->pack_length()));
3940 }
3941 bool cmp(void);
3942 };
3943
3944=== modified file 'drizzled/common.h'
3945--- drizzled/common.h 2009-08-04 06:52:55 +0000
3946+++ drizzled/common.h 2009-09-09 00:38:19 +0000
3947@@ -21,12 +21,10 @@
3948 ** Common definition between mysql server & client
3949 */
3950
3951-#ifndef DRIZZLED_DRIZZLE_COMMON_H
3952-#define DRIZZLED_DRIZZLE_COMMON_H
3953+#ifndef DRIZZLED_COMMON_H
3954+#define DRIZZLED_COMMON_H
3955
3956-#include <unistd.h>
3957-#include <stdint.h>
3958-#include <drizzled/korr.h>
3959+#include "drizzled/korr.h"
3960
3961 /*
3962 This is included in the server and in the client.
3963@@ -114,9 +112,9 @@
3964 /*
3965 Maximum length of comments
3966 */
3967-#define TABLE_COMMENT_MAXLEN 2048
3968-#define COLUMN_COMMENT_MAXLEN 1024
3969-#define INDEX_COMMENT_MAXLEN 1024
3970+static const uint32_t TABLE_COMMENT_MAXLEN= 2048;
3971+static const uint32_t COLUMN_COMMENT_MAXLEN= 1024;
3972+static const uint32_t INDEX_COMMENT_MAXLEN= 1024;
3973
3974 /*
3975 USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain
3976@@ -126,8 +124,7 @@
3977 */
3978 #define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2
3979
3980-#define LOCAL_HOST "localhost"
3981-#define LOCAL_HOST_NAMEDPIPE "."
3982+static const char * const LOCAL_HOST= "localhost";
3983
3984 /*
3985 You should add new commands to the end of this list, otherwise old
3986@@ -303,4 +300,4 @@
3987 #define NET_HEADER_SIZE 4 /* standard header size */
3988 #define COMP_HEADER_SIZE 3 /* compression header extra size */
3989
3990-#endif
3991+#endif /* DRIZZLED_COMMON_H */
3992
3993=== modified file 'drizzled/comp_creator.h'
3994--- drizzled/comp_creator.h 2008-11-18 22:12:56 +0000
3995+++ drizzled/comp_creator.h 2009-09-09 00:38:19 +0000
3996@@ -20,9 +20,9 @@
3997 #ifndef DRIZZLED_COMP_CREATOR_H
3998 #define DRIZZLED_COMP_CREATOR_H
3999
4000+class Item;
4001 class Item_bool_func2;
4002
4003-
4004 class Comp_creator
4005 {
4006 public:
4007@@ -43,6 +43,4 @@
4008 Comp_creator *comp_lt_creator(bool invert);
4009 Comp_creator *comp_ne_creator(bool invert);
4010
4011-
4012-
4013 #endif /* DRIZZLED_COMP_CREATOR_H */
4014
4015=== modified file 'drizzled/create_field.cc'
4016--- drizzled/create_field.cc 2009-07-31 23:47:15 +0000
4017+++ drizzled/create_field.cc 2009-09-09 00:38:19 +0000
4018@@ -22,7 +22,7 @@
4019 */
4020
4021 #include "drizzled/server_includes.h"
4022-#include <errno.h>
4023+#include <cerrno>
4024 #include "drizzled/sql_select.h"
4025 #include "drizzled/error.h"
4026 #include "drizzled/field.h"
4027@@ -219,7 +219,7 @@
4028 flags|= NO_DEFAULT_VALUE_FLAG;
4029
4030 if (fld_length && !(length= (uint32_t) atoi(fld_length)))
4031- fld_length= 0; /* purecov: inspected */
4032+ fld_length= 0;
4033 sign_len= fld_type_modifier & UNSIGNED_FLAG ? 0 : 1;
4034
4035 switch (fld_type)
4036@@ -374,7 +374,7 @@
4037 {
4038 my_error((fld_type == DRIZZLE_TYPE_VARCHAR) ? ER_TOO_BIG_FIELDLENGTH : ER_TOO_BIG_DISPLAYWIDTH,
4039 MYF(0),
4040- fld_name, max_field_charlength); /* purecov: inspected */
4041+ fld_name, max_field_charlength);
4042 return true;
4043 }
4044 fld_type_modifier&= AUTO_INCREMENT_FLAG;
4045
4046=== modified file 'drizzled/create_field.h'
4047--- drizzled/create_field.h 2009-08-05 08:52:52 +0000
4048+++ drizzled/create_field.h 2009-09-09 00:38:19 +0000
4049@@ -70,7 +70,7 @@
4050
4051 inline enum column_format_type column_format() const
4052 {
4053- return (enum column_format_type)
4054+ return static_cast<enum column_format_type>
4055 ((flags >> COLUMN_FORMAT_FLAGS) & COLUMN_FORMAT_MASK);
4056 }
4057
4058
4059=== modified file 'drizzled/db.cc'
4060--- drizzled/db.cc 2009-08-19 23:35:29 +0000
4061+++ drizzled/db.cc 2009-09-09 00:38:19 +0000
4062@@ -38,8 +38,6 @@
4063
4064 using namespace drizzled;
4065
4066-extern drizzled::ReplicationServices replication_services;
4067-
4068 #define MY_DB_OPT_FILE "db.opt"
4069 #define MAX_DROP_TABLE_Q_LEN 1024
4070
4071@@ -190,6 +188,7 @@
4072
4073 bool mysql_create_db(Session *session, const char *db, HA_CREATE_INFO *create_info)
4074 {
4075+ ReplicationServices &replication_services= ReplicationServices::singleton();
4076 char path[FN_REFLEN+16];
4077 long result= 1;
4078 int error_erno;
4079@@ -277,6 +276,7 @@
4080
4081 bool mysql_alter_db(Session *session, const char *db, HA_CREATE_INFO *create_info)
4082 {
4083+ ReplicationServices &replication_services= ReplicationServices::singleton();
4084 long result=1;
4085 int error= 0;
4086 char path[FN_REFLEN+16];
4087@@ -340,7 +340,7 @@
4088
4089 bool mysql_rm_db(Session *session,char *db,bool if_exists)
4090 {
4091- long deleted=0;
4092+ long deleted= 0;
4093 int error= false;
4094 char path[FN_REFLEN+16];
4095 MY_DIR *dirp;
4096@@ -420,10 +420,11 @@
4097 query= session->query;
4098 query_length= session->query_length;
4099 }
4100+ ReplicationServices &replication_services= ReplicationServices::singleton();
4101 replication_services.rawStatement(session, session->getQueryString(), session->getQueryLength());
4102 session->clear_error();
4103 session->server_status|= SERVER_STATUS_DB_DROPPED;
4104- session->my_ok((uint32_t) deleted);
4105+ session->my_ok(deleted);
4106 session->server_status&= ~SERVER_STATUS_DB_DROPPED;
4107 }
4108 else
4109@@ -432,12 +433,13 @@
4110 TableList *tbl;
4111 uint32_t db_len;
4112
4113- if (!(query= (char*) session->alloc(MAX_DROP_TABLE_Q_LEN)))
4114+ if (!(query= reinterpret_cast<char*>(session->alloc(MAX_DROP_TABLE_Q_LEN))))
4115 goto exit; /* not much else we can do */
4116 query_pos= query_data_start= strcpy(query,"drop table ")+11;
4117 query_end= query + MAX_DROP_TABLE_Q_LEN;
4118 db_len= strlen(db);
4119
4120+ ReplicationServices &replication_services= ReplicationServices::singleton();
4121 for (tbl= dropped_tables; tbl; tbl= tbl->next_local)
4122 {
4123 uint32_t tbl_name_len;
4124@@ -447,7 +449,7 @@
4125 if (query_pos + tbl_name_len + 1 >= query_end)
4126 {
4127 /* These DDL methods and logging protected with LOCK_create_db */
4128- replication_services.rawStatement(session, query, (size_t) (query_pos -1 - query));
4129+ replication_services.rawStatement(session, query, query_pos -1 - query);
4130 query_pos= query_data_start;
4131 }
4132
4133@@ -460,7 +462,7 @@
4134 if (query_pos != query_data_start)
4135 {
4136 /* These DDL methods and logging protected with LOCK_create_db */
4137- replication_services.rawStatement(session, query, (size_t) (query_pos -1 - query));
4138+ replication_services.rawStatement(session, query, query_pos -1 - query);
4139 }
4140 }
4141
4142@@ -495,7 +497,7 @@
4143 tot_list_next= &tot_list;
4144
4145 for (uint32_t idx= 0;
4146- idx < (uint32_t) dirp->number_off_files && !session->killed ;
4147+ idx < static_cast<uint32_t>(dirp->number_off_files) && !session->killed ;
4148 idx++)
4149 {
4150 FILEINFO *file=dirp->dir_entry+idx;
4151@@ -532,14 +534,14 @@
4152
4153 /* Drop the table nicely */
4154 *extension= 0; // Remove extension
4155- TableList *table_list=(TableList*)
4156+ TableList *table_list=reinterpret_cast<TableList*>(
4157 session->calloc(sizeof(*table_list) +
4158- db_len + 1 +
4159- strlen(file->name) + 1);
4160+ db_len + 1 +
4161+ strlen(file->name) + 1));
4162
4163 if (!table_list)
4164 goto err;
4165- table_list->db= (char*) (table_list+1);
4166+ table_list->db= reinterpret_cast<char*>(table_list+1);
4167 table_list->table_name= strcpy(table_list->db, db) + db_len + 1;
4168 filename_to_tablename(file->name, table_list->table_name,
4169 strlen(file->name) + 1);
4170@@ -745,7 +747,7 @@
4171 */
4172
4173 new_db_file_name.length= new_db_name->length;
4174- new_db_file_name.str= (char *)malloc(new_db_name->length + 1);
4175+ new_db_file_name.str= reinterpret_cast<char *>(malloc(new_db_name->length + 1));
4176 if (new_db_file_name.str == NULL)
4177 return true; /* the error is set */
4178 memcpy(new_db_file_name.str, new_db_name->str, new_db_name->length);
4179
4180=== modified file 'drizzled/db.h'
4181--- drizzled/db.h 2009-07-09 01:35:10 +0000
4182+++ drizzled/db.h 2009-09-09 00:38:19 +0000
4183@@ -18,8 +18,8 @@
4184 */
4185
4186
4187-#ifndef DRIZZLE_SERVER_DB_H
4188-#define DRIZZLE_SERVER_DB_H
4189+#ifndef DRIZZLED_DB_H
4190+#define DRIZZLED_DB_H
4191
4192 namespace drizzled { namespace message { class Schema; } }
4193
4194@@ -37,4 +37,4 @@
4195 extern int creating_database; // How many database locks are made
4196 extern int creating_table; // How many mysql_create_table() are running
4197
4198-#endif
4199+#endif /* DRIZZLED_DB_H */
4200
4201=== modified file 'drizzled/definitions.h'
4202--- drizzled/definitions.h 2009-08-22 02:06:02 +0000
4203+++ drizzled/definitions.h 2009-09-09 00:38:19 +0000
4204@@ -26,10 +26,10 @@
4205 #ifndef DRIZZLE_SERVER_DEFINITIONS_H
4206 #define DRIZZLE_SERVER_DEFINITIONS_H
4207
4208-#include <drizzled/enum.h>
4209-
4210 #include <stdint.h>
4211
4212+#include "drizzled/enum.h"
4213+
4214 /* These paths are converted to other systems (WIN95) before use */
4215
4216 #define LANGUAGE "english/"
4217@@ -39,15 +39,113 @@
4218
4219 #define ER(X) error_message((X))
4220
4221+#if !defined(FLT_MIN)
4222+#define FLT_MIN ((float)1.40129846432481707e-45)
4223+#endif
4224+#if !defined(FLT_MAX)
4225+#define FLT_MAX ((float)3.40282346638528860e+38)
4226+#endif
4227+
4228+/* From limits.h instead */
4229+#ifndef DBL_MIN
4230+#define DBL_MIN 4.94065645841246544e-324
4231+#endif
4232+#ifndef DBL_MAX
4233+#define DBL_MAX 1.79769313486231470e+308
4234+#endif
4235+#ifndef SIZE_T_MAX
4236+#define SIZE_T_MAX ~((size_t) 0)
4237+#endif
4238+
4239+
4240+/* Define missing math constants. */
4241+#ifndef M_PI
4242+#define M_PI 3.14159265358979323846
4243+#endif
4244+#ifndef M_E
4245+#define M_E 2.7182818284590452354
4246+#endif
4247+#ifndef M_LN2
4248+#define M_LN2 0.69314718055994530942
4249+#endif
4250+
4251+#ifndef FN_LIBCHAR
4252+#define FN_LIBCHAR '/'
4253+#define FN_ROOTDIR "/"
4254+#endif
4255+#define MY_NFILE 64 /* This is only used to save filenames */
4256+#ifndef OS_FILE_LIMIT
4257+#define OS_FILE_LIMIT 65535
4258+#endif
4259+
4260+/*
4261+ How much overhead does malloc have. The code often allocates
4262+ something like 1024-MALLOC_OVERHEAD bytes
4263+*/
4264+#define MALLOC_OVERHEAD 8
4265+
4266+/* get memory in huncs */
4267+static const uint32_t ONCE_ALLOC_INIT= 4096;
4268+/* Typical record cash */
4269+static const uint32_t RECORD_CACHE_SIZE= 64*1024;
4270+/* Typical key cash */
4271+static const uint32_t KEY_CACHE_SIZE= 8*1024*1024;
4272+
4273+/* Default size of a key cache block */
4274+static const uint32_t KEY_CACHE_BLOCK_SIZE= 1024;
4275+
4276+#define MY_FILEPOS_ERROR -1
4277+
4278+/* Defines for time function */
4279+#define SCALE_SEC 100
4280+#define SCALE_USEC 10000
4281+#define MY_HOW_OFTEN_TO_ALARM 2 /* How often we want info on screen */
4282+#define MY_HOW_OFTEN_TO_WRITE 1000 /* How often we want info on screen */
4283+
4284+/* Length of decimal number represented by INT32. */
4285+#define MY_INT32_NUM_DECIMAL_DIGITS 11
4286+
4287+/* Length of decimal number represented by INT64. */
4288+#define MY_INT64_NUM_DECIMAL_DIGITS 21
4289+
4290+/*
4291+ Io buffer size; Must be a power of 2 and
4292+ a multiple of 512. May be
4293+ smaller what the disk page size. This influences the speed of the
4294+ isam btree library. eg to big to slow.
4295+*/
4296+#define IO_SIZE 4096
4297+/* Max file name len */
4298+#define FN_LEN 256
4299+/* Max length of extension (part of FN_LEN) */
4300+#define FN_EXTLEN 20
4301+/* Max length of full path-name */
4302+#define FN_REFLEN 512
4303+/* File extension character */
4304+#define FN_EXTCHAR '.'
4305+/* ~ is used as abbrev for home dir */
4306+#define FN_HOMELIB '~'
4307+/* ./ is used as abbrev for current dir */
4308+#define FN_CURLIB '.'
4309+/* Parent directory; Must be a string */
4310+#define FN_PARENTDIR ".."
4311+
4312+/* Quote argument (before cpp) */
4313+#ifndef QUOTE_ARG
4314+# define QUOTE_ARG(x) #x
4315+#endif
4316+/* Quote argument, (after cpp) */
4317+#ifndef STRINGIFY_ARG
4318+# define STRINGIFY_ARG(x) QUOTE_ARG(x)
4319+#endif
4320 #define LIBLEN FN_REFLEN-FN_LEN /* Max l{ngd p} dev */
4321 /* extra 4+4 bytes for slave tmp tables */
4322 #define MAX_DBKEY_LENGTH (NAME_LEN*2+1+1+4+4)
4323 #define MAX_ALIAS_NAME 256
4324 #define MAX_FIELD_NAME 34 /* Max colum name length +2 */
4325 #define MAX_SYS_VAR_LENGTH 32
4326-#define MAX_KEY MAX_INDEXES /* Max used keys */
4327-#define MAX_REF_PARTS 16 /* Max parts used as ref */
4328-#define MAX_KEY_LENGTH 4096 /* max possible key */
4329+static const uint32_t MAX_REF_PARTS= 16; /* Max parts used as ref */
4330+static const uint32_t MAX_KEY_LENGTH= 4096; /* max possible key */
4331 #define MAX_KEY_LENGTH_DECIMAL_WIDTH 4 /* strlen("4096") */
4332 #if SIZEOF_OFF_T > 4
4333 #define MAX_REFLENGTH 8 /* Max length for record ref */
4334@@ -67,9 +165,9 @@
4335 #define MAX_DATETIME_COMPRESSED_WIDTH 14 /* YYYYMMDDHHMMSS */
4336
4337 #define MAX_TABLES (sizeof(table_map)*8-3) /* Max tables in join */
4338-#define PARAM_TABLE_BIT (((table_map) 1) << (sizeof(table_map)*8-3))
4339-#define OUTER_REF_TABLE_BIT (((table_map) 1) << (sizeof(table_map)*8-2))
4340-#define RAND_TABLE_BIT (((table_map) 1) << (sizeof(table_map)*8-1))
4341+#define PARAM_TABLE_BIT ((static_cast<table_map>(1)) << (sizeof(table_map)*8-3))
4342+#define OUTER_REF_TABLE_BIT ((static_cast<table_map>(1)) << (sizeof(table_map)*8-2))
4343+#define RAND_TABLE_BIT ((static_cast<table_map>(1)) << (sizeof(table_map)*8-1))
4344 #define PSEUDO_TABLE_BITS (PARAM_TABLE_BIT | OUTER_REF_TABLE_BIT | \
4345 RAND_TABLE_BIT)
4346 #define MAX_FIELDS 4096 /* Limit in the .frm file */
4347@@ -103,11 +201,12 @@
4348
4349 /* Defines for use with openfrm, openprt and openfrd */
4350
4351-#define READ_ALL 1 /* openfrm: Read all parameters */
4352-#define CHANGE_FRM 2 /* openfrm: open .frm as O_RDWR */
4353-#define EXTRA_RECORD 8 /* Reservera plats f|r extra record */
4354-#define DONT_GIVE_ERROR 256 /* Don't do frm_error on openfrm */
4355-#define DELAYED_OPEN 4096 /* Open table later */
4356+static const uint32_t READ_ALL= 1; /* openfrm: Read all parameters */
4357+static const uint32_t CHANGE_FRM= 2; /* openfrm: open .frm as O_RDWR */
4358+static const uint32_t EXTRA_RECORD= 8; /* Reservera plats f|r extra record */
4359+static const uint32_t DONT_GIVE_ERROR= 256; /* Don't do frm_error on openfrm */
4360+static const uint32_t DELAYED_OPEN= 4096; /* Open table later */
4361+
4362 /**
4363 This flag is used in function get_all_tables() which fills
4364 I_S tables with data which are retrieved from frm files and storage engine
4365@@ -216,11 +315,11 @@
4366 The cost of average seek
4367 DISK_SEEK_BASE_COST + DISK_SEEK_PROP_COST*BLOCKS_IN_AVG_SEEK =1.0.
4368 */
4369-#define DISK_SEEK_BASE_COST ((double)0.9)
4370+#define DISK_SEEK_BASE_COST (static_cast<double>(0.9))
4371
4372 #define BLOCKS_IN_AVG_SEEK 128
4373
4374-#define DISK_SEEK_PROP_COST ((double)0.1/BLOCKS_IN_AVG_SEEK)
4375+#define DISK_SEEK_PROP_COST (static_cast<double>(0.1)/BLOCKS_IN_AVG_SEEK)
4376
4377
4378 /**
4379@@ -470,7 +569,7 @@
4380 #define HA_LEX_CREATE_IF_NOT_EXISTS 2
4381 #define HA_LEX_CREATE_TABLE_LIKE 4
4382 #define HA_OPTION_NO_CHECKSUM (1L << 17)
4383-#define HA_MAX_REC_LENGTH 65535
4384+static const uint32_t HA_MAX_REC_LENGTH= 65535;
4385
4386 /* Options of START TRANSACTION statement (and later of SET TRANSACTION stmt) */
4387 #define DRIZZLE_START_TRANS_OPT_WITH_CONS_SNAPSHOT 1
4388@@ -540,7 +639,7 @@
4389 #define HA_MRR_NO_NULL_ENDPOINTS 128
4390
4391 typedef int myf;
4392-#define MYF(v) (myf) (v)
4393+#define MYF(v) static_cast<myf>(v)
4394
4395 #define MY_I_S_MAYBE_NULL 1
4396 #define MY_I_S_UNSIGNED 2
4397
4398=== added file 'drizzled/discrete_interval.cc'
4399--- drizzled/discrete_interval.cc 1970-01-01 00:00:00 +0000
4400+++ drizzled/discrete_interval.cc 2009-09-09 00:38:19 +0000
4401@@ -0,0 +1,65 @@
4402+/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
4403+ * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4404+ *
4405+ * Copyright (C) 2008 Sun Microsystems
4406+ *
4407+ * This program is free software; you can redistribute it and/or modify
4408+ * it under the terms of the GNU General Public License as published by
4409+ * the Free Software Foundation; version 2 of the License.
4410+ *
4411+ * This program is distributed in the hope that it will be useful,
4412+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4413+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4414+ * GNU General Public License for more details.
4415+ *
4416+ * You should have received a copy of the GNU General Public License
4417+ * along with this program; if not, write to the Free Software
4418+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
4419+ */
4420+
4421+#include "drizzled/global.h"
4422+
4423+#include "drizzled/discrete_interval.h"
4424+
4425+Discrete_interval::Discrete_interval(uint64_t start,
4426+ uint64_t val,
4427+ uint64_t incr)
4428+ : interval_min(start), interval_values(val),
4429+ interval_max((val == UINT64_MAX) ? val : start + val * incr),
4430+ next(NULL)
4431+{ }
4432+
4433+
4434+Discrete_interval::Discrete_interval()
4435+ : interval_min(0), interval_values(0),
4436+ interval_max(0), next(NULL)
4437+{ }
4438+
4439+
4440+void Discrete_interval::replace(uint64_t start, uint64_t val, uint64_t incr)
4441+{
4442+ interval_min= start;
4443+ interval_values= val;
4444+ interval_max= (val == UINT64_MAX) ? val : start + val * incr;
4445+}
4446+
4447+
4448+bool Discrete_interval::merge_if_contiguous(uint64_t start,
4449+ uint64_t val,
4450+ uint64_t incr)
4451+{
4452+ if (interval_max == start)
4453+ {
4454+ if (val == UINT64_MAX)
4455+ {
4456+ interval_values= interval_max= val;
4457+ }
4458+ else
4459+ {
4460+ interval_values+= val;
4461+ interval_max= start + val * incr;
4462+ }
4463+ return 0;
4464+ }
4465+ return 1;
4466+}
4467
4468=== modified file 'drizzled/discrete_interval.h'
4469--- drizzled/discrete_interval.h 2009-02-12 22:45:08 +0000
4470+++ drizzled/discrete_interval.h 2009-09-09 00:38:19 +0000
4471@@ -18,8 +18,8 @@
4472 */
4473
4474
4475-#ifndef DRIZZLED_DISCRETE_INTERVALS_H
4476-#define DRIZZLED_DISCRETE_INTERVALS_H
4477+#ifndef DRIZZLED_DISCRETE_INTERVAL_H
4478+#define DRIZZLED_DISCRETE_INTERVAL_H
4479
4480 /*
4481 Such interval is "discrete": it is the set of
4482@@ -37,21 +37,9 @@
4483 uint64_t interval_max; // excluded bound. Redundant.
4484 public:
4485 Discrete_interval *next; // used when linked into Discrete_intervals_list
4486- void replace(uint64_t start, uint64_t val, uint64_t incr)
4487- {
4488- interval_min= start;
4489- interval_values= val;
4490- interval_max= (val == UINT64_MAX) ? val : start + val * incr;
4491- }
4492- Discrete_interval(uint64_t start, uint64_t val, uint64_t incr) :
4493- interval_min(start), interval_values(val),
4494- interval_max((val == UINT64_MAX) ? val : start + val * incr),
4495- next(NULL)
4496- {};
4497- Discrete_interval() :
4498- interval_min(0), interval_values(0),
4499- interval_max(0), next(NULL)
4500- {};
4501+ void replace(uint64_t start, uint64_t val, uint64_t incr);
4502+ Discrete_interval(uint64_t start, uint64_t val, uint64_t incr);
4503+ Discrete_interval();
4504 uint64_t minimum() const { return interval_min; };
4505 uint64_t values() const { return interval_values; };
4506 uint64_t maximum() const { return interval_max; };
4507@@ -60,119 +48,10 @@
4508 same increment for that, user of the class has to ensure that). That is
4509 just a space optimization. Returns 0 if merge succeeded.
4510 */
4511- bool merge_if_contiguous(uint64_t start, uint64_t val, uint64_t incr)
4512- {
4513- if (interval_max == start)
4514- {
4515- if (val == UINT64_MAX)
4516- {
4517- interval_values= interval_max= val;
4518- }
4519- else
4520- {
4521- interval_values+= val;
4522- interval_max= start + val * incr;
4523- }
4524- return 0;
4525- }
4526- return 1;
4527- };
4528-};
4529-
4530-
4531-
4532-/* List of Discrete_interval objects */
4533-class Discrete_intervals_list {
4534-private:
4535- Discrete_interval *head;
4536- Discrete_interval *tail;
4537- /*
4538- When many intervals are provided at the beginning of the execution of a
4539- statement (in a replication slave or SET INSERT_ID), "current" points to
4540- the interval being consumed by the thread now (so "current" goes from
4541- "head" to "tail" then to NULL).
4542- */
4543- Discrete_interval *current;
4544- uint32_t elements; // number of elements
4545-
4546- /* helper function for copy construct and assignment operator */
4547- void copy_(const Discrete_intervals_list& from)
4548- {
4549- for (Discrete_interval *i= from.head; i; i= i->next)
4550- {
4551- Discrete_interval j= *i;
4552- append(&j);
4553- }
4554- }
4555-public:
4556- Discrete_intervals_list() :
4557- head(NULL), tail(NULL),
4558- current(NULL), elements(0) {};
4559- Discrete_intervals_list(const Discrete_intervals_list& from) :
4560- head(NULL), tail(NULL),
4561- current(NULL), elements(0)
4562- {
4563- copy_(from);
4564- }
4565- Discrete_intervals_list& operator=(const Discrete_intervals_list& from)
4566- {
4567- empty();
4568- copy_(from);
4569- return *this;
4570- }
4571- void empty_no_free()
4572- {
4573- head= current= NULL;
4574- elements= 0;
4575- }
4576- void empty()
4577- {
4578- for (Discrete_interval *i= head; i;)
4579- {
4580- Discrete_interval *next= i->next;
4581- delete i;
4582- i= next;
4583- }
4584- empty_no_free();
4585- }
4586-
4587- const Discrete_interval* get_next()
4588- {
4589- Discrete_interval *tmp= current;
4590- if (current != NULL)
4591- current= current->next;
4592- return tmp;
4593- }
4594- ~Discrete_intervals_list() { empty(); };
4595- uint64_t minimum() const { return (head ? head->minimum() : 0); };
4596- uint64_t maximum() const { return (head ? tail->maximum() : 0); };
4597- uint32_t nb_elements() const { return elements; }
4598-
4599- bool append(uint64_t start, uint64_t val, uint64_t incr)
4600- {
4601- /* first, see if this can be merged with previous */
4602- if ((head == NULL) || tail->merge_if_contiguous(start, val, incr))
4603- {
4604- /* it cannot, so need to add a new interval */
4605- Discrete_interval *new_interval= new Discrete_interval(start, val, incr);
4606- return(append(new_interval));
4607- }
4608- return(0);
4609- }
4610-
4611- bool append(Discrete_interval *new_interval)
4612- {
4613- if (unlikely(new_interval == NULL))
4614- return(1);
4615- if (head == NULL)
4616- head= current= new_interval;
4617- else
4618- tail->next= new_interval;
4619- tail= new_interval;
4620- elements++;
4621- return(0);
4622- }
4623-
4624-};
4625-
4626-#endif /* DRIZZLED_DISCRETE_INTERVALS_H */
4627+ bool merge_if_contiguous(uint64_t start, uint64_t val, uint64_t incr);
4628+};
4629+
4630+
4631+
4632+
4633+#endif /* DRIZZLED_DISCRETE_INTERVAL_H */
4634
4635=== added file 'drizzled/discrete_intervals_list.cc'
4636--- drizzled/discrete_intervals_list.cc 1970-01-01 00:00:00 +0000
4637+++ drizzled/discrete_intervals_list.cc 2009-09-09 00:38:19 +0000
4638@@ -0,0 +1,105 @@
4639+/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
4640+ * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4641+ *
4642+ * Copyright (C) 2009 Sun Microsystems
4643+ *
4644+ * This program is free software; you can redistribute it and/or modify
4645+ * it under the terms of the GNU General Public License as published by
4646+ * the Free Software Foundation; version 2 of the License.
4647+ *
4648+ * This program is distributed in the hope that it will be useful,
4649+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4650+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4651+ * GNU General Public License for more details.
4652+ *
4653+ * You should have received a copy of the GNU General Public License
4654+ * along with this program; if not, write to the Free Software
4655+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
4656+ */
4657+
4658+#include "drizzled/global.h"
4659+
4660+#include "drizzled/discrete_intervals_list.h"
4661+#include "drizzled/discrete_interval.h"
4662+
4663+void Discrete_intervals_list::copy_(const Discrete_intervals_list& from)
4664+{
4665+ for (Discrete_interval *i= from.head; i; i= i->next)
4666+ {
4667+ Discrete_interval j= *i;
4668+ append(&j);
4669+ }
4670+}
4671+
4672+Discrete_intervals_list::Discrete_intervals_list()
4673+ : head(NULL), tail(NULL), current(NULL), elements(0)
4674+{ }
4675+
4676+Discrete_intervals_list::Discrete_intervals_list(const Discrete_intervals_list& from)
4677+ : head(NULL), tail(NULL), current(NULL), elements(0)
4678+{
4679+ copy_(from);
4680+}
4681+
4682+Discrete_intervals_list& Discrete_intervals_list::operator=(const Discrete_intervals_list& from)
4683+{
4684+ empty();
4685+ copy_(from);
4686+ return *this;
4687+}
4688+
4689+void Discrete_intervals_list::empty()
4690+{
4691+ for (Discrete_interval *i= head; i;)
4692+ {
4693+ Discrete_interval *next= i->next;
4694+ delete i;
4695+ i= next;
4696+ }
4697+ empty_no_free();
4698+}
4699+
4700+const Discrete_interval* Discrete_intervals_list::get_next()
4701+{
4702+ Discrete_interval *tmp= current;
4703+ if (current != NULL)
4704+ current= current->next;
4705+ return tmp;
4706+}
4707+
4708+uint64_t Discrete_intervals_list::minimum() const
4709+{
4710+ return (head) ? head->minimum() : 0;
4711+}
4712+
4713+uint64_t Discrete_intervals_list::maximum() const
4714+{
4715+ return (head) ? tail->maximum() : 0;
4716+}
4717+
4718+bool Discrete_intervals_list::append(uint64_t start,
4719+ uint64_t val,
4720+ uint64_t incr)
4721+{
4722+ /* first, see if this can be merged with previous */
4723+ if ((head == NULL) || tail->merge_if_contiguous(start, val, incr))
4724+ {
4725+ /* it cannot, so need to add a new interval */
4726+ Discrete_interval *new_interval= new Discrete_interval(start, val, incr);
4727+ return(append(new_interval));
4728+ }
4729+ return(0);
4730+}
4731+
4732+bool Discrete_intervals_list::append(Discrete_interval *new_interval)
4733+{
4734+ if (unlikely(new_interval == NULL))
4735+ return(1);
4736+ if (head == NULL)
4737+ head= current= new_interval;
4738+ else
4739+ tail->next= new_interval;
4740+ tail= new_interval;
4741+ elements++;
4742+ return(0);
4743+}
4744
4745=== added file 'drizzled/discrete_intervals_list.h'
4746--- drizzled/discrete_intervals_list.h 1970-01-01 00:00:00 +0000
4747+++ drizzled/discrete_intervals_list.h 2009-09-09 00:38:19 +0000
4748@@ -0,0 +1,72 @@
4749+/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
4750+ * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4751+ *
4752+ * Copyright (C) 2009 Sun Microsystems
4753+ *
4754+ * This program is free software; you can redistribute it and/or modify
4755+ * it under the terms of the GNU General Public License as published by
4756+ * the Free Software Foundation; version 2 of the License.
4757+ *
4758+ * This program is distributed in the hope that it will be useful,
4759+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4760+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4761+ * GNU General Public License for more details.
4762+ *
4763+ * You should have received a copy of the GNU General Public License
4764+ * along with this program; if not, write to the Free Software
4765+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
4766+ */
4767+
4768+
4769+#ifndef DRIZZLED_DISCRETE_INTERVALS_LIST_H
4770+#define DRIZZLED_DISCRETE_INTERVALS_LIST_H
4771+
4772+class Discrete_interval;
4773+
4774+/* List of Discrete_interval objects */
4775+class Discrete_intervals_list {
4776+private:
4777+ Discrete_interval *head;
4778+ Discrete_interval *tail;
4779+ /*
4780+ When many intervals are provided at the beginning of the execution of a
4781+ statement (in a replication slave or SET INSERT_ID), "current" points to
4782+ the interval being consumed by the thread now (so "current" goes from
4783+ "head" to "tail" then to NULL).
4784+ */
4785+ Discrete_interval *current;
4786+ uint32_t elements; // number of elements
4787+
4788+ /* helper function for copy construct and assignment operator */
4789+ void copy_(const Discrete_intervals_list& from);
4790+
4791+public:
4792+ Discrete_intervals_list();
4793+ Discrete_intervals_list(const Discrete_intervals_list& from);
4794+ Discrete_intervals_list& operator=(const Discrete_intervals_list& from);
4795+ ~Discrete_intervals_list() { empty(); };
4796+
4797+ inline void empty_no_free()
4798+ {
4799+ head= current= NULL;
4800+ elements= 0;
4801+ }
4802+
4803+ void empty();
4804+
4805+ const Discrete_interval* get_next();
4806+
4807+ uint64_t minimum() const;
4808+ uint64_t maximum() const;
4809+
4810+ uint32_t nb_elements() const
4811+ {
4812+ return elements;
4813+ }
4814+
4815+ bool append(uint64_t start, uint64_t val, uint64_t incr);
4816+ bool append(Discrete_interval *new_interval);
4817+
4818+};
4819+
4820+#endif /* DRIZZLED_DISCRETE_INTERVALS_LIST_H */
4821
4822=== modified file 'drizzled/drizzled.cc'
4823--- drizzled/drizzled.cc 2009-08-24 14:57:56 +0000
4824+++ drizzled/drizzled.cc 2009-09-09 21:03:12 +0000
4825@@ -18,14 +18,71 @@
4826 */
4827
4828
4829-#include <drizzled/server_includes.h>
4830+#include "drizzled/server_includes.h"
4831+
4832+#include <ctime>
4833+#include <clocale>
4834+#include <csignal>
4835+#include <cerrno>
4836+
4837+#ifdef HAVE_SYS_PRCTL_H
4838+#include <sys/prctl.h>
4839+#endif
4840+
4841+#include <netdb.h>
4842+#include <netinet/tcp.h>
4843+
4844+#include <sys/stat.h>
4845+
4846+#ifdef HAVE_SYSENT_H
4847+# include <sysent.h>
4848+#endif
4849+#ifdef HAVE_PWD_H
4850+# include <pwd.h> // For getpwent
4851+#endif
4852+#ifdef HAVE_GRP_H
4853+# include <grp.h>
4854+#endif
4855+
4856+#include <sys/resource.h>
4857+
4858+#ifdef HAVE_SELECT_H
4859+# include <select.h>
4860+#endif
4861+
4862+#ifdef HAVE_SYS_SELECT_H
4863+# include <sys/select.h>
4864+#endif
4865+
4866+#include <sys/utsname.h>
4867+
4868+#ifdef HAVE_SYS_MMAN_H
4869+# include <sys/mman.h>
4870+#endif
4871+
4872+#if defined(__FreeBSD__) && defined(HAVE_IEEEFP_H)
4873+# include <ieeefp.h>
4874+# ifdef HAVE_FP_EXCEPT // Fix type conflict
4875+typedef fp_except fp_except_t;
4876+# endif
4877+#endif /* __FreeBSD__ && HAVE_IEEEFP_H */
4878+
4879+#ifdef HAVE_FPU_CONTROL_H
4880+# include <fpu_control.h>
4881+#endif
4882+
4883+#ifdef HAVE_SYS_FPU_H
4884+/* for IRIX to use set_fpc_csr() */
4885+# include <sys/fpu.h>
4886+#endif
4887+
4888+#include <google/protobuf/stubs/common.h>
4889+
4890+#include <mysys/my_getopt.h>
4891+#include <mysys/my_pthread.h> // For thr_setconcurency()
4892+#include <drizzled/gettext.h>
4893 #include <drizzled/configmake.h>
4894 #include <drizzled/atomics.h>
4895-
4896-#include <netdb.h>
4897-#include <netinet/tcp.h>
4898-#include <signal.h>
4899-
4900 #include <mysys/my_bit.h>
4901 #include <mysys/hash.h>
4902 #include <drizzled/stacktrace.h>
4903@@ -40,30 +97,12 @@
4904 #include <drizzled/session.h>
4905 #include <drizzled/db.h>
4906 #include <drizzled/item/create.h>
4907-#include <drizzled/errmsg.h>
4908 #include <drizzled/unireg.h>
4909-#include <drizzled/scheduling.h>
4910 #include "drizzled/temporal_format.h" /* For init_temporal_formats() */
4911 #include "drizzled/slot/listen.h"
4912-
4913-#include <google/protobuf/stubs/common.h>
4914-
4915-#if TIME_WITH_SYS_TIME
4916-# include <sys/time.h>
4917-# include <time.h>
4918-#else
4919-# if HAVE_SYS_TIME_H
4920-# include <sys/time.h>
4921-# else
4922-# include <time.h>
4923-# endif
4924-#endif
4925-
4926-#ifdef HAVE_SYS_PRCTL_H
4927-#include <sys/prctl.h>
4928-#endif
4929-
4930-#include <locale.h>
4931+#include "drizzled/slot/error_message.h"
4932+#include "drizzled/plugin/client.h"
4933+
4934
4935 #define mysqld_charset &my_charset_utf8_general_ci
4936
4937@@ -76,50 +115,6 @@
4938 #define MAX_MEM_TABLE_SIZE SIZE_MAX
4939
4940 extern "C" { // Because of SCO 3.2V4.2
4941-#include <errno.h>
4942-#include <sys/stat.h>
4943-#include <mysys/my_getopt.h>
4944-#ifdef HAVE_SYSENT_H
4945-#include <sysent.h>
4946-#endif
4947-#ifdef HAVE_PWD_H
4948-#include <pwd.h> // For getpwent
4949-#endif
4950-#ifdef HAVE_GRP_H
4951-#include <grp.h>
4952-#endif
4953-
4954-#include <sys/resource.h>
4955-
4956-#ifdef HAVE_SELECT_H
4957-# include <select.h>
4958-#endif
4959-
4960-#ifdef HAVE_SYS_SELECT_H
4961-#include <sys/select.h>
4962-#endif
4963-
4964-#include <sys/utsname.h>
4965-
4966-#ifdef HAVE_SYS_MMAN_H
4967-#include <sys/mman.h>
4968-#endif
4969-
4970-#if defined(__FreeBSD__) && defined(HAVE_IEEEFP_H)
4971-#include <ieeefp.h>
4972-#ifdef HAVE_FP_EXCEPT // Fix type conflict
4973-typedef fp_except fp_except_t;
4974-#endif
4975-#endif /* __FreeBSD__ && HAVE_IEEEFP_H */
4976-
4977-#ifdef HAVE_FPU_CONTROL_H
4978-#include <fpu_control.h>
4979-#endif
4980-
4981-#ifdef HAVE_SYS_FPU_H
4982-/* for IRIX to use set_fpc_csr() */
4983-#include <sys/fpu.h>
4984-#endif
4985
4986 inline void setup_fpu()
4987 {
4988@@ -152,14 +147,19 @@
4989
4990 } /* cplusplus */
4991
4992-#include <mysys/my_pthread.h> // For thr_setconcurency()
4993-
4994-#include <drizzled/gettext.h>
4995
4996 #ifdef SOLARIS
4997 extern "C" int gethostname(char *name, int namelen);
4998 #endif
4999
5000+#if defined(BACKTRACE_DEMANGLE)
The diff has been truncated for viewing.