Merge bk-internal:/home/bk/mysql-5.0
into mysql.com:/home/mysqldev/tulin/mysql-5.0 BitKeeper/etc/logging_ok: auto-union sql/ha_ndbcluster.cc: Auto merged
This commit is contained in:
commit
74ad9e8f1e
@ -67,3 +67,12 @@ SELECT * FROM t1;
|
||||
id id2
|
||||
3 0
|
||||
DROP TABLE t1;
|
||||
create table t1 (a integer);
|
||||
insert into t1 values (1);
|
||||
select 1 as a from t1 union all select 1 from dual limit 1;
|
||||
a
|
||||
1
|
||||
(select 1 as a from t1) union all (select 1 from dual) limit 1;
|
||||
a
|
||||
1
|
||||
drop table t1;
|
||||
|
@ -573,3 +573,37 @@ select * from t1 where a12345678901234567890123456789a1234567890=2;
|
||||
a1234567890123456789012345678901234567890 a12345678901234567890123456789a1234567890
|
||||
5 2
|
||||
drop table t1;
|
||||
create table t1
|
||||
(a bigint, b bigint, c bigint, d bigint,
|
||||
primary key (a,b,c,d))
|
||||
engine=ndb
|
||||
max_rows=200000000;
|
||||
Warnings:
|
||||
Warning 1105 Ndb might have problems storing the max amount of rows specified
|
||||
insert into t1 values
|
||||
(1,2,3,4),(2,3,4,5),(3,4,5,6),
|
||||
(3,2,3,4),(1,3,4,5),(2,4,5,6),
|
||||
(1,2,3,5),(2,3,4,8),(3,4,5,9),
|
||||
(3,2,3,5),(1,3,4,8),(2,4,5,9),
|
||||
(1,2,3,6),(2,3,4,6),(3,4,5,7),
|
||||
(3,2,3,6),(1,3,4,6),(2,4,5,7),
|
||||
(1,2,3,7),(2,3,4,7),(3,4,5,8),
|
||||
(3,2,3,7),(1,3,4,7),(2,4,5,8),
|
||||
(1,3,3,4),(2,4,4,5),(3,5,5,6),
|
||||
(3,3,3,4),(1,4,4,5),(2,5,5,6),
|
||||
(1,3,3,5),(2,4,4,8),(3,5,5,9),
|
||||
(3,3,3,5),(1,4,4,8),(2,5,5,9),
|
||||
(1,3,3,6),(2,4,4,6),(3,5,5,7),
|
||||
(3,3,3,6),(1,4,4,6),(2,5,5,7),
|
||||
(1,3,3,7),(2,4,4,7),(3,5,5,8),
|
||||
(3,3,3,7),(1,4,4,7),(2,5,5,8);
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
48
|
||||
drop table t1;
|
||||
create table t1
|
||||
(a bigint, b bigint, c bigint, d bigint,
|
||||
primary key (a))
|
||||
engine=ndb
|
||||
max_rows=1;
|
||||
drop table t1;
|
||||
|
@ -49,3 +49,13 @@ SELECT * FROM t1;
|
||||
DELETE FROM t1 WHERE id2 = 0 ORDER BY id desc LIMIT 1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#8023 - limit on UNION with from DUAL, causes syntax error
|
||||
#
|
||||
create table t1 (a integer);
|
||||
insert into t1 values (1);
|
||||
# both queries must return one row
|
||||
select 1 as a from t1 union all select 1 from dual limit 1;
|
||||
(select 1 as a from t1) union all (select 1 from dual) limit 1;
|
||||
drop table t1;
|
||||
|
@ -539,3 +539,41 @@ insert into t1 values (1,1),(2,1),(3,1),(4,1),(5,2),(6,1),(7,1);
|
||||
explain select * from t1 where a12345678901234567890123456789a1234567890=2;
|
||||
select * from t1 where a12345678901234567890123456789a1234567890=2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# test fragment creation
|
||||
#
|
||||
# first a table with _many_ fragments per node group
|
||||
# then a table with just one fragment per node group
|
||||
#
|
||||
create table t1
|
||||
(a bigint, b bigint, c bigint, d bigint,
|
||||
primary key (a,b,c,d))
|
||||
engine=ndb
|
||||
max_rows=200000000;
|
||||
insert into t1 values
|
||||
(1,2,3,4),(2,3,4,5),(3,4,5,6),
|
||||
(3,2,3,4),(1,3,4,5),(2,4,5,6),
|
||||
(1,2,3,5),(2,3,4,8),(3,4,5,9),
|
||||
(3,2,3,5),(1,3,4,8),(2,4,5,9),
|
||||
(1,2,3,6),(2,3,4,6),(3,4,5,7),
|
||||
(3,2,3,6),(1,3,4,6),(2,4,5,7),
|
||||
(1,2,3,7),(2,3,4,7),(3,4,5,8),
|
||||
(3,2,3,7),(1,3,4,7),(2,4,5,8),
|
||||
(1,3,3,4),(2,4,4,5),(3,5,5,6),
|
||||
(3,3,3,4),(1,4,4,5),(2,5,5,6),
|
||||
(1,3,3,5),(2,4,4,8),(3,5,5,9),
|
||||
(3,3,3,5),(1,4,4,8),(2,5,5,9),
|
||||
(1,3,3,6),(2,4,4,6),(3,5,5,7),
|
||||
(3,3,3,6),(1,4,4,6),(2,5,5,7),
|
||||
(1,3,3,7),(2,4,4,7),(3,5,5,8),
|
||||
(3,3,3,7),(1,4,4,7),(2,5,5,8);
|
||||
select count(*) from t1;
|
||||
drop table t1;
|
||||
|
||||
create table t1
|
||||
(a bigint, b bigint, c bigint, d bigint,
|
||||
primary key (a))
|
||||
engine=ndb
|
||||
max_rows=1;
|
||||
drop table t1;
|
||||
|
@ -140,9 +140,9 @@ public:
|
||||
enum FragmentType {
|
||||
FragUndefined = 0, ///< Fragmentation type undefined or default
|
||||
FragSingle = 1, ///< Only one fragment
|
||||
FragAllSmall = 2, ///< One fragment per node group
|
||||
FragAllMedium = 3, ///< Default value. Two fragments per node group.
|
||||
FragAllLarge = 4 ///< Eight fragments per node group.
|
||||
FragAllSmall = 2, ///< One fragment per node, default
|
||||
FragAllMedium = 3, ///< two fragments per node
|
||||
FragAllLarge = 4 ///< Four fragments per node.
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -6178,7 +6178,7 @@ void Dbdih::execCREATE_FRAGMENTATION_REQ(Signal * signal){
|
||||
break;
|
||||
case DictTabInfo::AllNodesMediumTable:
|
||||
jam();
|
||||
noOfFragments = csystemnodes;
|
||||
noOfFragments = 2 * csystemnodes;
|
||||
break;
|
||||
case DictTabInfo::AllNodesLargeTable:
|
||||
jam();
|
||||
|
@ -295,7 +295,7 @@ void
|
||||
NdbTableImpl::init(){
|
||||
clearNewProperties();
|
||||
m_frm.clear();
|
||||
m_fragmentType = NdbDictionary::Object::FragAllMedium;
|
||||
m_fragmentType = NdbDictionary::Object::FragAllSmall;
|
||||
m_logging = true;
|
||||
m_kvalue = 6;
|
||||
m_minLoadFactor = 78;
|
||||
|
@ -3659,6 +3659,47 @@ static int create_ndb_column(NDBCOL &col,
|
||||
Create a table in NDB Cluster
|
||||
*/
|
||||
|
||||
static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length)
|
||||
{
|
||||
if (form->s->max_rows == 0) /* default setting, don't set fragmentation */
|
||||
return;
|
||||
/**
|
||||
* get the number of fragments right
|
||||
*/
|
||||
uint no_fragments;
|
||||
{
|
||||
#if MYSQL_VERSION_ID >= 50000
|
||||
uint acc_row_size= 25+2;
|
||||
#else
|
||||
uint acc_row_size= pk_length*4;
|
||||
/* add acc overhead */
|
||||
if (pk_length <= 8)
|
||||
acc_row_size+= 25+2; /* main page will set the limit */
|
||||
else
|
||||
acc_row_size+= 4+4; /* overflow page will set the limit */
|
||||
#endif
|
||||
ulonglong acc_fragment_size= 512*1024*1024;
|
||||
ulonglong max_rows= form->s->max_rows;
|
||||
no_fragments= (max_rows*acc_row_size)/acc_fragment_size+1;
|
||||
}
|
||||
{
|
||||
uint no_nodes= g_ndb_cluster_connection->no_db_nodes();
|
||||
NDBTAB::FragmentType ftype;
|
||||
if (no_fragments > 2*no_nodes)
|
||||
{
|
||||
ftype= NDBTAB::FragAllLarge;
|
||||
if (no_fragments > 4*no_nodes)
|
||||
push_warning(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_UNKNOWN_ERROR,
|
||||
"Ndb might have problems storing the max amount of rows specified");
|
||||
}
|
||||
else if (no_fragments > no_nodes)
|
||||
ftype= NDBTAB::FragAllMedium;
|
||||
else
|
||||
ftype= NDBTAB::FragAllSmall;
|
||||
tab.setFragmentType(ftype);
|
||||
}
|
||||
}
|
||||
|
||||
int ha_ndbcluster::create(const char *name,
|
||||
TABLE *form,
|
||||
HA_CREATE_INFO *info)
|
||||
@ -3760,7 +3801,9 @@ int ha_ndbcluster::create(const char *name,
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ndb_set_fragmentation(tab, form, pk_length);
|
||||
|
||||
if ((my_errno= check_ndb_connection()))
|
||||
DBUG_RETURN(my_errno);
|
||||
|
||||
|
@ -3895,10 +3895,11 @@ select_into:
|
||||
select_from:
|
||||
FROM join_table_list where_clause group_clause having_clause
|
||||
opt_order_clause opt_limit_clause procedure_clause
|
||||
| FROM DUAL_SYM /* oracle compatibility: oracle always requires FROM
|
||||
clause, and DUAL is system table without fields.
|
||||
Is "SELECT 1 FROM DUAL" any better than
|
||||
"SELECT 1" ? Hmmm :) */
|
||||
| FROM DUAL_SYM opt_limit_clause
|
||||
/* oracle compatibility: oracle always requires FROM clause,
|
||||
and DUAL is system table without fields.
|
||||
Is "SELECT 1 FROM DUAL" any better than "SELECT 1" ?
|
||||
Hmmm :) */
|
||||
;
|
||||
|
||||
select_options:
|
||||
|
Loading…
x
Reference in New Issue
Block a user