23 #include <plugin/utility_dictionary/dictionary.h>
25 #include <drizzled/atomics.h>
26 #include <drizzled/session.h>
27 #include <drizzled/sql_lex.h>
32 #define LARGEST_RANDOM_STRING 512
34 static const char ALPHANUMERICS[]=
35 "0123456789ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstuvwxyz";
37 #define ALPHANUMERICS_SIZE (sizeof(ALPHANUMERICS)-1)
39 static size_t get_alpha_num(
void)
41 return (
size_t)random() % ALPHANUMERICS_SIZE;
44 utility_dictionary::RandomString::RandomString() :
45 plugin::TableFunction(
"DATA_DICTIONARY",
"RANDOM_STRING")
47 add_field(
"VALUE", plugin::TableFunction::STRING, LARGEST_RANDOM_STRING,
false);
50 bool utility_dictionary::RandomString::Generator::populate()
52 if (lex().isSumExprUsed() && count > 0)
55 if (lex().current_select->group_list.elements && count > 0)
58 if (lex().current_select->explicit_limit or count == 0)
60 uint32_t random_char_number= random() % LARGEST_RANDOM_STRING;
61 char buffer[LARGEST_RANDOM_STRING];
63 for (uint32_t x= 0; x < random_char_number; x++)
64 buffer[x]= ALPHANUMERICS[get_alpha_num()];
65 buffer[random_char_number]= 0;
67 push(buffer, random_char_number);
TODO: Rename this file - func.h is stupid.