mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
generalized option for specifying ndb distribution
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
|
||||
// options from from mysqld.cc
|
||||
extern my_bool opt_ndb_optimized_node_selection;
|
||||
extern my_bool opt_ndb_linear_hash;
|
||||
extern enum ndb_distribution opt_ndb_distribution_id;
|
||||
extern const char *opt_ndbcluster_connectstring;
|
||||
|
||||
// Default value for parallelism
|
||||
@@ -7450,7 +7450,7 @@ uint ha_ndbcluster::set_up_partition_info(partition_info *part_info,
|
||||
|
||||
static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length)
|
||||
{
|
||||
NDBTAB::FragmentType ftype;
|
||||
NDBTAB::FragmentType ftype= NDBTAB::DistrKeyHash;
|
||||
ushort node_group[MAX_PARTITIONS];
|
||||
uint no_nodes= g_ndb_cluster_connection->no_db_nodes(), no_fragments, i;
|
||||
DBUG_ENTER("ndb_set_fragmentation");
|
||||
@@ -7481,10 +7481,14 @@ static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length)
|
||||
node_group[0]= 0;
|
||||
for (i= 1; i < no_fragments; i++)
|
||||
node_group[i]= UNDEF_NODEGROUP;
|
||||
if (opt_ndb_linear_hash)
|
||||
switch (opt_ndb_distribution_id)
|
||||
{
|
||||
case ND_KEYHASH:
|
||||
break;
|
||||
case ND_LINHASH:
|
||||
ftype= NDBTAB::DistrKeyLin;
|
||||
else
|
||||
ftype= NDBTAB::DistrKeyHash;
|
||||
break;
|
||||
}
|
||||
tab.setFragmentType(ftype);
|
||||
tab.setNodeGroupIds(&node_group, no_fragments);
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
@@ -113,6 +113,8 @@ struct negated_function_mapping
|
||||
NDB_FUNC_TYPE neg_fun;
|
||||
};
|
||||
|
||||
enum ndb_distribution { ND_KEYHASH= 0, ND_LINHASH= 1 };
|
||||
|
||||
/*
|
||||
Define what functions can be negated in condition pushdown.
|
||||
Note, these HAVE to be in the same order as in definition enum
|
||||
|
||||
@@ -362,7 +362,12 @@ my_bool opt_ndb_shm, opt_ndb_optimized_node_selection;
|
||||
ulong opt_ndb_cache_check_time;
|
||||
const char *opt_ndb_mgmd;
|
||||
ulong opt_ndb_nodeid;
|
||||
bool opt_ndb_linear_hash;
|
||||
|
||||
const char *ndb_distribution_names[]= {"KEYHASH", "LINHASH", NullS};
|
||||
TYPELIB ndb_distribution_typelib= { array_elements(ndb_distribution_names)-1,
|
||||
"", ndb_distribution_names, NULL };
|
||||
const char *opt_ndb_distribution= ndb_distribution_names[ND_KEYHASH];
|
||||
enum ndb_distribution opt_ndb_distribution_id= ND_KEYHASH;
|
||||
#endif
|
||||
my_bool opt_readonly, use_temp_pool, relay_log_purge;
|
||||
my_bool opt_sync_frm, opt_allow_suspicious_udfs;
|
||||
@@ -4879,16 +4884,11 @@ Disable with --skip-ndbcluster (will save memory).",
|
||||
(gptr*) &global_system_variables.ndb_autoincrement_prefetch_sz,
|
||||
(gptr*) &global_system_variables.ndb_autoincrement_prefetch_sz,
|
||||
0, GET_ULONG, REQUIRED_ARG, 32, 1, 256, 0, 0, 0},
|
||||
{"ndb-use-linear-hash", OPT_NDB_LINEAR_HASH,
|
||||
"Flag to indicate whether to use linear hash for default in new tables",
|
||||
(gptr*) &opt_ndb_linear_hash,
|
||||
(gptr*) &opt_ndb_linear_hash,
|
||||
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
|
||||
{"ndb_use_linear_hash", OPT_NDB_LINEAR_HASH,
|
||||
"Flag to indicate whether to use linear hash for default in new tables",
|
||||
(gptr*) &opt_ndb_linear_hash,
|
||||
(gptr*) &opt_ndb_linear_hash,
|
||||
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
|
||||
{"ndb-distibution", OPT_NDB_DISTRIBUTION,
|
||||
"Default distribution for new tables in ndb",
|
||||
(gptr*) &opt_ndb_distribution,
|
||||
(gptr*) &opt_ndb_distribution,
|
||||
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"ndb-force-send", OPT_NDB_FORCE_SEND,
|
||||
"Force send of buffers to ndb immediately without waiting for "
|
||||
"other threads.",
|
||||
@@ -6674,6 +6674,20 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
opt_ndb_constrbuf[opt_ndb_constrbuf_len]= 0;
|
||||
opt_ndbcluster_connectstring= opt_ndb_constrbuf;
|
||||
break;
|
||||
case OPT_NDB_DISTRIBUTION:
|
||||
int id;
|
||||
if ((id= find_type(argument, &ndb_distribution_typelib, 2)) <= 0)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"Unknown ndb distribution type: '%s' "
|
||||
"(should be '%s' or '%s')\n",
|
||||
argument,
|
||||
ndb_distribution_names[ND_KEYHASH],
|
||||
ndb_distribution_names[ND_LINHASH]);
|
||||
exit(1);
|
||||
}
|
||||
opt_ndb_distribution_id= (enum ndb_distribution)(id-1);
|
||||
break;
|
||||
#endif
|
||||
case OPT_INNODB:
|
||||
#ifdef HAVE_INNOBASE_DB
|
||||
|
||||
Reference in New Issue
Block a user