mirror of
https://github.com/MariaDB/server.git
synced 2025-11-06 13:10:12 +03:00
Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/mysql_src/mysql-5.0-xa
This commit is contained in:
@@ -554,6 +554,89 @@ select count(*)-9 from t1 use index (ts) where ts <= '2001-01-01 23:59:59';
|
|||||||
count(*)-9
|
count(*)-9
|
||||||
0
|
0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
a int primary key,
|
||||||
|
s decimal(12),
|
||||||
|
t decimal(12, 5),
|
||||||
|
u decimal(12) unsigned,
|
||||||
|
v decimal(12, 5) unsigned,
|
||||||
|
key (s),
|
||||||
|
key (t),
|
||||||
|
key (u),
|
||||||
|
key (v)
|
||||||
|
) engine=ndb;
|
||||||
|
insert into t1 values
|
||||||
|
( 0, -000000000007, -0000061.00003, 000000000061, 0000965.00042),
|
||||||
|
( 1, -000000000007, -0000061.00042, 000000000061, 0000965.00003),
|
||||||
|
( 2, -071006035767, 4210253.00024, 000000000001, 0000001.84488),
|
||||||
|
( 3, 000000007115, 0000000.77607, 000077350625, 0000018.00013),
|
||||||
|
( 4, -000000068391, -0346486.00000, 000000005071, 0005334.00002),
|
||||||
|
( 5, -521579890459, -1936874.00001, 000000000154, 0000003.00018),
|
||||||
|
( 6, -521579890459, -1936874.00018, 000000000154, 0000003.00001),
|
||||||
|
( 7, 000000000333, 0000051.39140, 000000907958, 0788643.08374),
|
||||||
|
( 8, 000042731229, 0000009.00000, 000000000009, 6428667.00000),
|
||||||
|
( 9, -000008159769, 0000918.00004, 000096951421, 7607730.00008);
|
||||||
|
select count(*)- 5 from t1 use index (s) where s < -000000000007;
|
||||||
|
count(*)- 5
|
||||||
|
0
|
||||||
|
select count(*)- 7 from t1 use index (s) where s <= -000000000007;
|
||||||
|
count(*)- 7
|
||||||
|
0
|
||||||
|
select count(*)- 2 from t1 use index (s) where s = -000000000007;
|
||||||
|
count(*)- 2
|
||||||
|
0
|
||||||
|
select count(*)- 5 from t1 use index (s) where s >= -000000000007;
|
||||||
|
count(*)- 5
|
||||||
|
0
|
||||||
|
select count(*)- 3 from t1 use index (s) where s > -000000000007;
|
||||||
|
count(*)- 3
|
||||||
|
0
|
||||||
|
select count(*)- 4 from t1 use index (t) where t < -0000061.00003;
|
||||||
|
count(*)- 4
|
||||||
|
0
|
||||||
|
select count(*)- 5 from t1 use index (t) where t <= -0000061.00003;
|
||||||
|
count(*)- 5
|
||||||
|
0
|
||||||
|
select count(*)- 1 from t1 use index (t) where t = -0000061.00003;
|
||||||
|
count(*)- 1
|
||||||
|
0
|
||||||
|
select count(*)- 6 from t1 use index (t) where t >= -0000061.00003;
|
||||||
|
count(*)- 6
|
||||||
|
0
|
||||||
|
select count(*)- 5 from t1 use index (t) where t > -0000061.00003;
|
||||||
|
count(*)- 5
|
||||||
|
0
|
||||||
|
select count(*)- 2 from t1 use index (u) where u < 000000000061;
|
||||||
|
count(*)- 2
|
||||||
|
0
|
||||||
|
select count(*)- 4 from t1 use index (u) where u <= 000000000061;
|
||||||
|
count(*)- 4
|
||||||
|
0
|
||||||
|
select count(*)- 2 from t1 use index (u) where u = 000000000061;
|
||||||
|
count(*)- 2
|
||||||
|
0
|
||||||
|
select count(*)- 8 from t1 use index (u) where u >= 000000000061;
|
||||||
|
count(*)- 8
|
||||||
|
0
|
||||||
|
select count(*)- 6 from t1 use index (u) where u > 000000000061;
|
||||||
|
count(*)- 6
|
||||||
|
0
|
||||||
|
select count(*)- 5 from t1 use index (v) where v < 0000965.00042;
|
||||||
|
count(*)- 5
|
||||||
|
0
|
||||||
|
select count(*)- 6 from t1 use index (v) where v <= 0000965.00042;
|
||||||
|
count(*)- 6
|
||||||
|
0
|
||||||
|
select count(*)- 1 from t1 use index (v) where v = 0000965.00042;
|
||||||
|
count(*)- 1
|
||||||
|
0
|
||||||
|
select count(*)- 5 from t1 use index (v) where v >= 0000965.00042;
|
||||||
|
count(*)- 5
|
||||||
|
0
|
||||||
|
select count(*)- 4 from t1 use index (v) where v > 0000965.00042;
|
||||||
|
count(*)- 4
|
||||||
|
0
|
||||||
|
drop table t1;
|
||||||
create table t1(a int primary key, b int not null, index(b));
|
create table t1(a int primary key, b int not null, index(b));
|
||||||
insert into t1 values (1,1), (2,2);
|
insert into t1 values (1,1), (2,2);
|
||||||
set autocommit=0;
|
set autocommit=0;
|
||||||
|
|||||||
@@ -282,55 +282,55 @@ drop table t1;
|
|||||||
|
|
||||||
# decimal (not the new 5.0 thing)
|
# decimal (not the new 5.0 thing)
|
||||||
|
|
||||||
#create table t1 (
|
create table t1 (
|
||||||
# a int primary key,
|
a int primary key,
|
||||||
# s decimal(12),
|
s decimal(12),
|
||||||
# t decimal(12, 5),
|
t decimal(12, 5),
|
||||||
# u decimal(12) unsigned,
|
u decimal(12) unsigned,
|
||||||
# v decimal(12, 5) unsigned,
|
v decimal(12, 5) unsigned,
|
||||||
# key (s),
|
key (s),
|
||||||
# key (t),
|
key (t),
|
||||||
# key (u),
|
key (u),
|
||||||
# key (v)
|
key (v)
|
||||||
#) engine=ndb;
|
) engine=ndb;
|
||||||
##
|
|
||||||
#insert into t1 values
|
|
||||||
# ( 0, -000000000007, -0000061.00003, 000000000061, 0000965.00042),
|
|
||||||
# ( 1, -000000000007, -0000061.00042, 000000000061, 0000965.00003),
|
|
||||||
# ( 2, -071006035767, 4210253.00024, 000000000001, 0000001.84488),
|
|
||||||
# ( 3, 000000007115, 0000000.77607, 000077350625, 0000018.00013),
|
|
||||||
# ( 4, -000000068391, -0346486.00000, 000000005071, 0005334.00002),
|
|
||||||
# ( 5, -521579890459, -1936874.00001, 000000000154, 0000003.00018),
|
|
||||||
# ( 6, -521579890459, -1936874.00018, 000000000154, 0000003.00001),
|
|
||||||
# ( 7, 000000000333, 0000051.39140, 000000907958, 0788643.08374),
|
|
||||||
# ( 8, 000042731229, 0000009.00000, 000000000009, 6428667.00000),
|
|
||||||
# ( 9, -000008159769, 0000918.00004, 000096951421, 7607730.00008);
|
|
||||||
##
|
|
||||||
#select count(*)- 5 from t1 use index (s) where s < -000000000007;
|
|
||||||
#select count(*)- 7 from t1 use index (s) where s <= -000000000007;
|
|
||||||
#select count(*)- 2 from t1 use index (s) where s = -000000000007;
|
|
||||||
#select count(*)- 5 from t1 use index (s) where s >= -000000000007;
|
|
||||||
#select count(*)- 3 from t1 use index (s) where s > -000000000007;
|
|
||||||
##
|
|
||||||
#select count(*)- 4 from t1 use index (t) where t < -0000061.00003;
|
|
||||||
#select count(*)- 5 from t1 use index (t) where t <= -0000061.00003;
|
|
||||||
#select count(*)- 1 from t1 use index (t) where t = -0000061.00003;
|
|
||||||
#select count(*)- 6 from t1 use index (t) where t >= -0000061.00003;
|
|
||||||
#select count(*)- 5 from t1 use index (t) where t > -0000061.00003;
|
|
||||||
##
|
|
||||||
#select count(*)- 2 from t1 use index (u) where u < 000000000061;
|
|
||||||
#select count(*)- 4 from t1 use index (u) where u <= 000000000061;
|
|
||||||
#select count(*)- 2 from t1 use index (u) where u = 000000000061;
|
|
||||||
#select count(*)- 8 from t1 use index (u) where u >= 000000000061;
|
|
||||||
#select count(*)- 6 from t1 use index (u) where u > 000000000061;
|
|
||||||
##
|
|
||||||
#select count(*)- 5 from t1 use index (v) where v < 0000965.00042;
|
|
||||||
#select count(*)- 6 from t1 use index (v) where v <= 0000965.00042;
|
|
||||||
#select count(*)- 1 from t1 use index (v) where v = 0000965.00042;
|
|
||||||
#select count(*)- 5 from t1 use index (v) where v >= 0000965.00042;
|
|
||||||
#select count(*)- 4 from t1 use index (v) where v > 0000965.00042;
|
|
||||||
#
|
#
|
||||||
#drop table t1;
|
insert into t1 values
|
||||||
|
( 0, -000000000007, -0000061.00003, 000000000061, 0000965.00042),
|
||||||
|
( 1, -000000000007, -0000061.00042, 000000000061, 0000965.00003),
|
||||||
|
( 2, -071006035767, 4210253.00024, 000000000001, 0000001.84488),
|
||||||
|
( 3, 000000007115, 0000000.77607, 000077350625, 0000018.00013),
|
||||||
|
( 4, -000000068391, -0346486.00000, 000000005071, 0005334.00002),
|
||||||
|
( 5, -521579890459, -1936874.00001, 000000000154, 0000003.00018),
|
||||||
|
( 6, -521579890459, -1936874.00018, 000000000154, 0000003.00001),
|
||||||
|
( 7, 000000000333, 0000051.39140, 000000907958, 0788643.08374),
|
||||||
|
( 8, 000042731229, 0000009.00000, 000000000009, 6428667.00000),
|
||||||
|
( 9, -000008159769, 0000918.00004, 000096951421, 7607730.00008);
|
||||||
|
#
|
||||||
|
select count(*)- 5 from t1 use index (s) where s < -000000000007;
|
||||||
|
select count(*)- 7 from t1 use index (s) where s <= -000000000007;
|
||||||
|
select count(*)- 2 from t1 use index (s) where s = -000000000007;
|
||||||
|
select count(*)- 5 from t1 use index (s) where s >= -000000000007;
|
||||||
|
select count(*)- 3 from t1 use index (s) where s > -000000000007;
|
||||||
|
#
|
||||||
|
select count(*)- 4 from t1 use index (t) where t < -0000061.00003;
|
||||||
|
select count(*)- 5 from t1 use index (t) where t <= -0000061.00003;
|
||||||
|
select count(*)- 1 from t1 use index (t) where t = -0000061.00003;
|
||||||
|
select count(*)- 6 from t1 use index (t) where t >= -0000061.00003;
|
||||||
|
select count(*)- 5 from t1 use index (t) where t > -0000061.00003;
|
||||||
|
#
|
||||||
|
select count(*)- 2 from t1 use index (u) where u < 000000000061;
|
||||||
|
select count(*)- 4 from t1 use index (u) where u <= 000000000061;
|
||||||
|
select count(*)- 2 from t1 use index (u) where u = 000000000061;
|
||||||
|
select count(*)- 8 from t1 use index (u) where u >= 000000000061;
|
||||||
|
select count(*)- 6 from t1 use index (u) where u > 000000000061;
|
||||||
|
#
|
||||||
|
select count(*)- 5 from t1 use index (v) where v < 0000965.00042;
|
||||||
|
select count(*)- 6 from t1 use index (v) where v <= 0000965.00042;
|
||||||
|
select count(*)- 1 from t1 use index (v) where v = 0000965.00042;
|
||||||
|
select count(*)- 5 from t1 use index (v) where v >= 0000965.00042;
|
||||||
|
select count(*)- 4 from t1 use index (v) where v > 0000965.00042;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# bug#7798
|
# bug#7798
|
||||||
create table t1(a int primary key, b int not null, index(b));
|
create table t1(a int primary key, b int not null, index(b));
|
||||||
|
|||||||
@@ -24,6 +24,28 @@
|
|||||||
#include <trigger_definitions.h>
|
#include <trigger_definitions.h>
|
||||||
#include <NdbSqlUtil.hpp>
|
#include <NdbSqlUtil.hpp>
|
||||||
|
|
||||||
|
#ifndef my_decimal_h
|
||||||
|
|
||||||
|
// sql/my_decimal.h requires many more sql/*.h new to ndb
|
||||||
|
// for now, copy the bit we need TODO proper fix
|
||||||
|
|
||||||
|
#define DECIMAL_MAX_LENGTH ((8 * 9) - 8)
|
||||||
|
|
||||||
|
#ifndef NOT_FIXED_DEC
|
||||||
|
#define NOT_FIXED_DEC 31
|
||||||
|
#endif
|
||||||
|
|
||||||
|
C_MODE_START
|
||||||
|
extern int decimal_bin_size(int, int);
|
||||||
|
C_MODE_END
|
||||||
|
|
||||||
|
inline int my_decimal_get_binary_size(uint precision, uint scale)
|
||||||
|
{
|
||||||
|
return decimal_bin_size((int)precision, (int)scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#define DTIMAP(x, y, z) \
|
#define DTIMAP(x, y, z) \
|
||||||
{ DictTabInfo::y, offsetof(x, z), SimpleProperties::Uint32Value, 0, (~0), 0 }
|
{ DictTabInfo::y, offsetof(x, z), SimpleProperties::Uint32Value, 0, (~0), 0 }
|
||||||
|
|
||||||
@@ -266,6 +288,8 @@ public:
|
|||||||
ExtDouble = NdbSqlUtil::Type::Double,
|
ExtDouble = NdbSqlUtil::Type::Double,
|
||||||
ExtOlddecimal = NdbSqlUtil::Type::Olddecimal,
|
ExtOlddecimal = NdbSqlUtil::Type::Olddecimal,
|
||||||
ExtOlddecimalunsigned = NdbSqlUtil::Type::Olddecimalunsigned,
|
ExtOlddecimalunsigned = NdbSqlUtil::Type::Olddecimalunsigned,
|
||||||
|
ExtDecimal = NdbSqlUtil::Type::Decimal,
|
||||||
|
ExtDecimalunsigned = NdbSqlUtil::Type::Decimalunsigned,
|
||||||
ExtChar = NdbSqlUtil::Type::Char,
|
ExtChar = NdbSqlUtil::Type::Char,
|
||||||
ExtVarchar = NdbSqlUtil::Type::Varchar,
|
ExtVarchar = NdbSqlUtil::Type::Varchar,
|
||||||
ExtBinary = NdbSqlUtil::Type::Binary,
|
ExtBinary = NdbSqlUtil::Type::Binary,
|
||||||
@@ -358,6 +382,19 @@ public:
|
|||||||
(0 + AttributeExtPrecision + (int(AttributeExtScale) > 0)) *
|
(0 + AttributeExtPrecision + (int(AttributeExtScale) > 0)) *
|
||||||
AttributeExtLength;
|
AttributeExtLength;
|
||||||
break;
|
break;
|
||||||
|
case DictTabInfo::ExtDecimal:
|
||||||
|
case DictTabInfo::ExtDecimalunsigned:
|
||||||
|
{
|
||||||
|
// copy from Field_new_decimal ctor
|
||||||
|
uint precision = AttributeExtPrecision;
|
||||||
|
uint scale = AttributeExtScale;
|
||||||
|
if (precision > DECIMAL_MAX_LENGTH || scale >= NOT_FIXED_DEC)
|
||||||
|
precision = DECIMAL_MAX_LENGTH;
|
||||||
|
uint bin_size = my_decimal_get_binary_size(precision, scale);
|
||||||
|
AttributeSize = DictTabInfo::an8Bit;
|
||||||
|
AttributeArraySize = bin_size * AttributeExtLength;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case DictTabInfo::ExtChar:
|
case DictTabInfo::ExtChar:
|
||||||
case DictTabInfo::ExtBinary:
|
case DictTabInfo::ExtBinary:
|
||||||
AttributeSize = DictTabInfo::an8Bit;
|
AttributeSize = DictTabInfo::an8Bit;
|
||||||
|
|||||||
@@ -64,7 +64,9 @@
|
|||||||
#define NDB_TYPE_YEAR 26
|
#define NDB_TYPE_YEAR 26
|
||||||
#define NDB_TYPE_TIMESTAMP 27
|
#define NDB_TYPE_TIMESTAMP 27
|
||||||
#define NDB_TYPE_OLDDECIMALUNSIGNED 28
|
#define NDB_TYPE_OLDDECIMALUNSIGNED 28
|
||||||
|
#define NDB_TYPE_DECIMAL 29
|
||||||
|
#define NDB_TYPE_DECIMALUNSIGNED 30
|
||||||
|
|
||||||
#define NDB_TYPE_MAX 29
|
#define NDB_TYPE_MAX 31
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -186,6 +186,8 @@ public:
|
|||||||
Double = NDB_TYPE_DOUBLE, ///< 64-bit float. 8 byte float, can be used in array
|
Double = NDB_TYPE_DOUBLE, ///< 64-bit float. 8 byte float, can be used in array
|
||||||
Olddecimal = NDB_TYPE_OLDDECIMAL, ///< MySQL < 5.0 signed decimal, Precision, Scale
|
Olddecimal = NDB_TYPE_OLDDECIMAL, ///< MySQL < 5.0 signed decimal, Precision, Scale
|
||||||
Olddecimalunsigned = NDB_TYPE_OLDDECIMALUNSIGNED,
|
Olddecimalunsigned = NDB_TYPE_OLDDECIMALUNSIGNED,
|
||||||
|
Decimal = NDB_TYPE_DECIMAL, ///< MySQL >= 5.0 signed decimal, Precision, Scale
|
||||||
|
Decimalunsigned = NDB_TYPE_DECIMALUNSIGNED,
|
||||||
Char = NDB_TYPE_CHAR, ///< Len. A fixed array of 1-byte chars
|
Char = NDB_TYPE_CHAR, ///< Len. A fixed array of 1-byte chars
|
||||||
Varchar = NDB_TYPE_VARCHAR, ///< Length bytes: 1, Max: 255
|
Varchar = NDB_TYPE_VARCHAR, ///< Length bytes: 1, Max: 255
|
||||||
Binary = NDB_TYPE_BINARY, ///< Len
|
Binary = NDB_TYPE_BINARY, ///< Len
|
||||||
|
|||||||
@@ -95,7 +95,9 @@ public:
|
|||||||
Time = NDB_TYPE_TIME,
|
Time = NDB_TYPE_TIME,
|
||||||
Year = NDB_TYPE_YEAR,
|
Year = NDB_TYPE_YEAR,
|
||||||
Timestamp = NDB_TYPE_TIMESTAMP,
|
Timestamp = NDB_TYPE_TIMESTAMP,
|
||||||
Olddecimalunsigned = NDB_TYPE_OLDDECIMALUNSIGNED
|
Olddecimalunsigned = NDB_TYPE_OLDDECIMALUNSIGNED,
|
||||||
|
Decimal = NDB_TYPE_DECIMAL,
|
||||||
|
Decimalunsigned = NDB_TYPE_DECIMALUNSIGNED
|
||||||
};
|
};
|
||||||
Enum m_typeId; // redundant
|
Enum m_typeId; // redundant
|
||||||
Cmp* m_cmp; // comparison method
|
Cmp* m_cmp; // comparison method
|
||||||
@@ -172,6 +174,8 @@ private:
|
|||||||
static Cmp cmpYear;
|
static Cmp cmpYear;
|
||||||
static Cmp cmpTimestamp;
|
static Cmp cmpTimestamp;
|
||||||
static Cmp cmpOlddecimalunsigned;
|
static Cmp cmpOlddecimalunsigned;
|
||||||
|
static Cmp cmpDecimal;
|
||||||
|
static Cmp cmpDecimalunsigned;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -192,6 +192,14 @@ NdbSqlUtil::m_typeList[] = {
|
|||||||
{ // 28
|
{ // 28
|
||||||
Type::Olddecimalunsigned,
|
Type::Olddecimalunsigned,
|
||||||
cmpOlddecimalunsigned
|
cmpOlddecimalunsigned
|
||||||
|
},
|
||||||
|
{ // 29
|
||||||
|
Type::Decimal,
|
||||||
|
cmpDecimal
|
||||||
|
},
|
||||||
|
{ // 30
|
||||||
|
Type::Decimalunsigned,
|
||||||
|
cmpDecimalunsigned
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -483,6 +491,34 @@ NdbSqlUtil::cmpOlddecimalunsigned(const void* info, const void* p1, unsigned n1,
|
|||||||
return CmpUnknown;
|
return CmpUnknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
NdbSqlUtil::cmpDecimal(const void* info, const void* p1, unsigned n1, const void* p2, unsigned n2, bool full)
|
||||||
|
{
|
||||||
|
const uchar* v1 = (const uchar*)p1;
|
||||||
|
const uchar* v2 = (const uchar*)p2;
|
||||||
|
// compare as binary strings
|
||||||
|
unsigned n = (n1 <= n2 ? n1 : n2);
|
||||||
|
int k = memcmp(v1, v2, n);
|
||||||
|
if (k == 0) {
|
||||||
|
k = (full ? n1 : n) - n2;
|
||||||
|
}
|
||||||
|
return k < 0 ? -1 : k > 0 ? +1 : full ? 0 : CmpUnknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
NdbSqlUtil::cmpDecimalunsigned(const void* info, const void* p1, unsigned n1, const void* p2, unsigned n2, bool full)
|
||||||
|
{
|
||||||
|
const uchar* v1 = (const uchar*)p1;
|
||||||
|
const uchar* v2 = (const uchar*)p2;
|
||||||
|
// compare as binary strings
|
||||||
|
unsigned n = (n1 <= n2 ? n1 : n2);
|
||||||
|
int k = memcmp(v1, v2, n);
|
||||||
|
if (k == 0) {
|
||||||
|
k = (full ? n1 : n) - n2;
|
||||||
|
}
|
||||||
|
return k < 0 ? -1 : k > 0 ? +1 : full ? 0 : CmpUnknown;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
NdbSqlUtil::cmpChar(const void* info, const void* p1, unsigned n1, const void* p2, unsigned n2, bool full)
|
NdbSqlUtil::cmpChar(const void* info, const void* p1, unsigned n1, const void* p2, unsigned n2, bool full)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -954,6 +954,12 @@ operator<<(NdbOut& out, const NdbDictionary::Column& col)
|
|||||||
case NdbDictionary::Column::Olddecimalunsigned:
|
case NdbDictionary::Column::Olddecimalunsigned:
|
||||||
out << "Olddecimalunsigned(" << col.getPrecision() << "," << col.getScale() << ")";
|
out << "Olddecimalunsigned(" << col.getPrecision() << "," << col.getScale() << ")";
|
||||||
break;
|
break;
|
||||||
|
case NdbDictionary::Column::Decimal:
|
||||||
|
out << "Decimal(" << col.getPrecision() << "," << col.getScale() << ")";
|
||||||
|
break;
|
||||||
|
case NdbDictionary::Column::Decimalunsigned:
|
||||||
|
out << "Decimalunsigned(" << col.getPrecision() << "," << col.getScale() << ")";
|
||||||
|
break;
|
||||||
case NdbDictionary::Column::Char:
|
case NdbDictionary::Column::Char:
|
||||||
out << "Char(" << col.getLength() << ";" << csname << ")";
|
out << "Char(" << col.getLength() << ";" << csname << ")";
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -111,6 +111,8 @@ NdbColumnImpl::init(Type t)
|
|||||||
break;
|
break;
|
||||||
case Olddecimal:
|
case Olddecimal:
|
||||||
case Olddecimalunsigned:
|
case Olddecimalunsigned:
|
||||||
|
case Decimal:
|
||||||
|
case Decimalunsigned:
|
||||||
m_precision = 10;
|
m_precision = 10;
|
||||||
m_scale = 0;
|
m_scale = 0;
|
||||||
m_length = 1;
|
m_length = 1;
|
||||||
|
|||||||
@@ -250,6 +250,10 @@ NdbOut& operator<<(NdbOut& out, const NdbRecAttr &r)
|
|||||||
out.print("%.*s", len, r.aRef());
|
out.print("%.*s", len, r.aRef());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case NdbDictionary::Column::Decimal:
|
||||||
|
case NdbDictionary::Column::Decimalunsigned:
|
||||||
|
goto unknown; // TODO
|
||||||
|
break;
|
||||||
// for dates cut-and-paste from field.cc
|
// for dates cut-and-paste from field.cc
|
||||||
case NdbDictionary::Column::Datetime:
|
case NdbDictionary::Column::Datetime:
|
||||||
{
|
{
|
||||||
@@ -359,6 +363,7 @@ NdbOut& operator<<(NdbOut& out, const NdbRecAttr &r)
|
|||||||
j = length;
|
j = length;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
unknown:
|
||||||
default: /* no print functions for the rest, just print type */
|
default: /* no print functions for the rest, just print type */
|
||||||
out << (int) r.getType();
|
out << (int) r.getType();
|
||||||
j = length;
|
j = length;
|
||||||
|
|||||||
@@ -569,6 +569,8 @@ convertColumnTypeToAttrType(NdbDictionary::Column::Type _type)
|
|||||||
case NdbDictionary::Column::Float:
|
case NdbDictionary::Column::Float:
|
||||||
case NdbDictionary::Column::Olddecimal:
|
case NdbDictionary::Column::Olddecimal:
|
||||||
case NdbDictionary::Column::Olddecimalunsigned:
|
case NdbDictionary::Column::Olddecimalunsigned:
|
||||||
|
case NdbDictionary::Column::Decimal:
|
||||||
|
case NdbDictionary::Column::Decimalunsigned:
|
||||||
case NdbDictionary::Column::Double:
|
case NdbDictionary::Column::Double:
|
||||||
return Float;
|
return Float;
|
||||||
case NdbDictionary::Column::Char:
|
case NdbDictionary::Column::Char:
|
||||||
|
|||||||
@@ -147,6 +147,8 @@ HugoCalculator::calcValue(int record,
|
|||||||
case NdbDictionary::Column::Double:
|
case NdbDictionary::Column::Double:
|
||||||
case NdbDictionary::Column::Olddecimal:
|
case NdbDictionary::Column::Olddecimal:
|
||||||
case NdbDictionary::Column::Olddecimalunsigned:
|
case NdbDictionary::Column::Olddecimalunsigned:
|
||||||
|
case NdbDictionary::Column::Decimal:
|
||||||
|
case NdbDictionary::Column::Decimalunsigned:
|
||||||
case NdbDictionary::Column::Binary:
|
case NdbDictionary::Column::Binary:
|
||||||
case NdbDictionary::Column::Datetime:
|
case NdbDictionary::Column::Datetime:
|
||||||
case NdbDictionary::Column::Time:
|
case NdbDictionary::Column::Time:
|
||||||
|
|||||||
@@ -45,9 +45,11 @@ BackupConsumer::create_table_string(const TableS & table,
|
|||||||
pos += sprintf(buf+pos, "%s", "float");
|
pos += sprintf(buf+pos, "%s", "float");
|
||||||
break;
|
break;
|
||||||
case NdbDictionary::Column::Olddecimal:
|
case NdbDictionary::Column::Olddecimal:
|
||||||
|
case NdbDictionary::Column::Decimal:
|
||||||
pos += sprintf(buf+pos, "%s", "decimal");
|
pos += sprintf(buf+pos, "%s", "decimal");
|
||||||
break;
|
break;
|
||||||
case NdbDictionary::Column::Olddecimalunsigned:
|
case NdbDictionary::Column::Olddecimalunsigned:
|
||||||
|
case NdbDictionary::Column::Decimalunsigned:
|
||||||
pos += sprintf(buf+pos, "%s", "decimal unsigned");
|
pos += sprintf(buf+pos, "%s", "decimal unsigned");
|
||||||
break;
|
break;
|
||||||
case NdbDictionary::Column::Char:
|
case NdbDictionary::Column::Char:
|
||||||
|
|||||||
@@ -446,7 +446,6 @@ bool ha_ndbcluster::get_error_message(int error,
|
|||||||
static inline bool ndb_supported_type(enum_field_types type)
|
static inline bool ndb_supported_type(enum_field_types type)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case MYSQL_TYPE_DECIMAL:
|
|
||||||
case MYSQL_TYPE_TINY:
|
case MYSQL_TYPE_TINY:
|
||||||
case MYSQL_TYPE_SHORT:
|
case MYSQL_TYPE_SHORT:
|
||||||
case MYSQL_TYPE_LONG:
|
case MYSQL_TYPE_LONG:
|
||||||
@@ -454,6 +453,8 @@ static inline bool ndb_supported_type(enum_field_types type)
|
|||||||
case MYSQL_TYPE_LONGLONG:
|
case MYSQL_TYPE_LONGLONG:
|
||||||
case MYSQL_TYPE_FLOAT:
|
case MYSQL_TYPE_FLOAT:
|
||||||
case MYSQL_TYPE_DOUBLE:
|
case MYSQL_TYPE_DOUBLE:
|
||||||
|
case MYSQL_TYPE_DECIMAL:
|
||||||
|
case MYSQL_TYPE_NEWDECIMAL:
|
||||||
case MYSQL_TYPE_TIMESTAMP:
|
case MYSQL_TYPE_TIMESTAMP:
|
||||||
case MYSQL_TYPE_DATETIME:
|
case MYSQL_TYPE_DATETIME:
|
||||||
case MYSQL_TYPE_DATE:
|
case MYSQL_TYPE_DATE:
|
||||||
@@ -3493,6 +3494,24 @@ static int create_ndb_column(NDBCOL &col,
|
|||||||
col.setLength(1);
|
col.setLength(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MYSQL_TYPE_NEWDECIMAL:
|
||||||
|
{
|
||||||
|
Field_new_decimal *f= (Field_new_decimal*)field;
|
||||||
|
uint precision= f->field_length;
|
||||||
|
uint scale= f->decimals();
|
||||||
|
if (field->flags & UNSIGNED_FLAG)
|
||||||
|
{
|
||||||
|
col.setType(NDBCOL::Decimalunsigned);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
col.setType(NDBCOL::Decimal);
|
||||||
|
}
|
||||||
|
col.setPrecision(precision);
|
||||||
|
col.setScale(scale);
|
||||||
|
col.setLength(1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
// Date types
|
// Date types
|
||||||
case MYSQL_TYPE_DATETIME:
|
case MYSQL_TYPE_DATETIME:
|
||||||
col.setType(NDBCOL::Datetime);
|
col.setType(NDBCOL::Datetime);
|
||||||
|
|||||||
Reference in New Issue
Block a user