Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
0d033042
Commit
0d033042
authored
Feb 16, 2005
by
pekka@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/space/pekka/ndb/version/my41-1.2154.30.2
parents
8e93873d
7c9a155c
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
304 additions
and
61 deletions
+304
-61
mysql-test/r/ndb_index_ordered.result
mysql-test/r/ndb_index_ordered.result
+83
-0
mysql-test/t/ndb_index_ordered.test
mysql-test/t/ndb_index_ordered.test
+52
-0
ndb/include/kernel/signaldata/DictTabInfo.hpp
ndb/include/kernel/signaldata/DictTabInfo.hpp
+16
-4
ndb/include/ndbapi/NdbDictionary.hpp
ndb/include/ndbapi/NdbDictionary.hpp
+7
-6
ndb/include/util/NdbSqlUtil.hpp
ndb/include/util/NdbSqlUtil.hpp
+10
-3
ndb/src/common/util/NdbSqlUtil.cpp
ndb/src/common/util/NdbSqlUtil.cpp
+80
-34
ndb/src/ndbapi/NdbDictionary.cpp
ndb/src/ndbapi/NdbDictionary.cpp
+5
-2
ndb/src/ndbapi/NdbDictionaryImpl.cpp
ndb/src/ndbapi/NdbDictionaryImpl.cpp
+4
-2
ndb/src/ndbapi/NdbRecAttr.cpp
ndb/src/ndbapi/NdbRecAttr.cpp
+14
-1
ndb/test/include/NdbSchemaOp.hpp
ndb/test/include/NdbSchemaOp.hpp
+2
-1
ndb/tools/restore/consumer.cpp
ndb/tools/restore/consumer.cpp
+4
-1
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+27
-7
No files found.
mysql-test/r/ndb_index_ordered.result
View file @
0d033042
...
...
@@ -445,6 +445,89 @@ select count(*)-9 from t1 use index (ts) where ts <= '2001-01-01 23:59:59';
count(*)-9
0
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));
insert into t1 values (1,1), (2,2);
set autocommit=0;
...
...
mysql-test/t/ndb_index_ordered.test
View file @
0d033042
...
...
@@ -249,6 +249,58 @@ select count(*)-9 from t1 use index (ts) where ts <= '2001-01-01 23:59:59';
drop
table
t1
;
# decimal (not the new 5.0 thing)
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
,
-
00000006
8391
,
-
0346486.00000
,
000000005071
,
0005334.00002
),
(
5
,
-
521579890459
,
-
1936874.00001
,
000000000154
,
0000003.00018
),
(
6
,
-
521579890459
,
-
1936874.00018
,
000000000154
,
0000003.00001
),
(
7
,
000000000333
,
0000051.39140
,
000000
907958
,
0788643.08374
),
(
8
,
00004273122
9
,
0000009.00000
,
00000000000
9
,
6428667.00000
),
(
9
,
-
00000
8159769
,
0000918.00004
,
0000
96951421
,
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
create
table
t1
(
a
int
primary
key
,
b
int
not
null
,
index
(
b
));
insert
into
t1
values
(
1
,
1
),
(
2
,
2
);
...
...
ndb/include/kernel/signaldata/DictTabInfo.hpp
View file @
0d033042
...
...
@@ -302,7 +302,8 @@ public:
ExtBigunsigned
=
NdbSqlUtil
::
Type
::
Bigunsigned
,
ExtFloat
=
NdbSqlUtil
::
Type
::
Float
,
ExtDouble
=
NdbSqlUtil
::
Type
::
Double
,
ExtDecimal
=
NdbSqlUtil
::
Type
::
Decimal
,
ExtOlddecimal
=
NdbSqlUtil
::
Type
::
Olddecimal
,
ExtOlddecimalunsigned
=
NdbSqlUtil
::
Type
::
Olddecimalunsigned
,
ExtChar
=
NdbSqlUtil
::
Type
::
Char
,
ExtVarchar
=
NdbSqlUtil
::
Type
::
Varchar
,
ExtBinary
=
NdbSqlUtil
::
Type
::
Binary
,
...
...
@@ -411,9 +412,20 @@ public:
AttributeSize
=
DictTabInfo
::
a64Bit
;
AttributeArraySize
=
AttributeExtLength
;
return
true
;
case
DictTabInfo
:
:
ExtDecimal
:
// not yet implemented anywhere
break
;
case
DictTabInfo
:
:
ExtOlddecimal
:
AttributeType
=
DictTabInfo
::
StringType
;
AttributeSize
=
DictTabInfo
::
an8Bit
;
AttributeArraySize
=
(
1
+
AttributeExtPrecision
+
(
int
(
AttributeExtScale
)
>
0
))
*
AttributeExtLength
;
return
true
;
case
DictTabInfo
:
:
ExtOlddecimalunsigned
:
AttributeType
=
DictTabInfo
::
StringType
;
AttributeSize
=
DictTabInfo
::
an8Bit
;
AttributeArraySize
=
(
0
+
AttributeExtPrecision
+
(
int
(
AttributeExtScale
)
>
0
))
*
AttributeExtLength
;
return
true
;
case
DictTabInfo
:
:
ExtChar
:
case
DictTabInfo
:
:
ExtBinary
:
AttributeType
=
DictTabInfo
::
StringType
;
...
...
ndb/include/ndbapi/NdbDictionary.hpp
View file @
0d033042
...
...
@@ -179,7 +179,7 @@ public:
Bigunsigned
,
///< 64 Bit. 8 byte signed integer, can be used in array
Float
,
///< 32-bit float. 4 bytes float, can be used in array
Double
,
///< 64-bit float. 8 byte float, can be used in array
Decimal
,
///< Precision, Scale are applicab
le
Olddecimal
,
///< MySQL < 5.0 signed decimal, Precision, Sca
le
Char
,
///< Len. A fixed array of 1-byte chars
Varchar
,
///< Max len
Binary
,
///< Len
...
...
@@ -190,7 +190,8 @@ public:
Text
,
///< Text blob
Time
=
25
,
///< Time without date
Year
=
26
,
///< Year 1901-2155 (1 byte)
Timestamp
=
27
///< Unix time
Timestamp
=
27
,
///< Unix time
Olddecimalunsigned
=
28
};
/**
...
...
@@ -276,25 +277,25 @@ public:
/**
* Set precision of column.
* @note Only applicable for
builtin type Decimal
* @note Only applicable for
decimal types
*/
void
setPrecision
(
int
);
/**
* Get precision of column.
* @note Only applicable for
builtin type Decimal
* @note Only applicable for
decimal types
*/
int
getPrecision
()
const
;
/**
* Set scale of column.
* @note Only applicable for
builtin type Decimal
* @note Only applicable for
decimal types
*/
void
setScale
(
int
);
/**
* Get scale of column.
* @note Only applicable for
builtin type Decimal
* @note Only applicable for
decimal types
*/
int
getScale
()
const
;
...
...
ndb/include/util/NdbSqlUtil.hpp
View file @
0d033042
...
...
@@ -75,7 +75,7 @@ public:
Bigunsigned
,
// 64 Bit
Float
,
// 32-bit float
Double
,
// 64-bit float
Decimal
,
// Precision, Scale
Olddecimal
,
// Precision, Scale
Char
,
// Len
Varchar
,
// Max len
Binary
,
// Len
...
...
@@ -86,7 +86,8 @@ public:
Text
,
// Text blob
Time
=
25
,
// Time without date
Year
=
26
,
// Year (size 1 byte)
Timestamp
=
27
// Unix seconds (uint32)
Timestamp
=
27
,
// Unix seconds (uint32)
Olddecimalunsigned
=
28
};
Enum
m_typeId
;
Cmp
*
m_cmp
;
// comparison method
...
...
@@ -109,6 +110,11 @@ public:
static
bool
usable_in_hash_index
(
Uint32
typeId
,
const
void
*
cs
);
static
bool
usable_in_ordered_index
(
Uint32
typeId
,
const
void
*
cs
);
/**
* Compare decimal numbers.
*/
static
int
cmp_olddecimal
(
const
uchar
*
s1
,
const
uchar
*
s2
,
unsigned
n
);
private:
/**
* List of all types. Must match Type::Enum.
...
...
@@ -129,7 +135,7 @@ private:
static
Cmp
cmpBigunsigned
;
static
Cmp
cmpFloat
;
static
Cmp
cmpDouble
;
static
Cmp
cmp
D
ecimal
;
static
Cmp
cmp
Oldd
ecimal
;
static
Cmp
cmpChar
;
static
Cmp
cmpVarchar
;
static
Cmp
cmpBinary
;
...
...
@@ -141,6 +147,7 @@ private:
static
Cmp
cmpTime
;
static
Cmp
cmpYear
;
static
Cmp
cmpTimestamp
;
static
Cmp
cmpOlddecimalunsigned
;
};
#endif
ndb/src/common/util/NdbSqlUtil.cpp
View file @
0d033042
...
...
@@ -76,117 +76,121 @@ NdbSqlUtil::char_like(const char* s1, unsigned n1,
const
NdbSqlUtil
::
Type
NdbSqlUtil
::
m_typeList
[]
=
{
{
{
// 0
Type
::
Undefined
,
NULL
},
{
{
// 1
Type
::
Tinyint
,
cmpTinyint
},
{
{
// 2
Type
::
Tinyunsigned
,
cmpTinyunsigned
},
{
{
// 3
Type
::
Smallint
,
cmpSmallint
},
{
{
// 4
Type
::
Smallunsigned
,
cmpSmallunsigned
},
{
{
// 5
Type
::
Mediumint
,
cmpMediumint
},
{
{
// 6
Type
::
Mediumunsigned
,
cmpMediumunsigned
},
{
{
// 7
Type
::
Int
,
cmpInt
},
{
{
// 8
Type
::
Unsigned
,
cmpUnsigned
},
{
{
// 9
Type
::
Bigint
,
cmpBigint
},
{
{
// 10
Type
::
Bigunsigned
,
cmpBigunsigned
},
{
{
// 11
Type
::
Float
,
cmpFloat
},
{
{
// 12
Type
::
Double
,
cmpDouble
},
{
Type
::
D
ecimal
,
NULL
// cmpD
ecimal
{
// 13
Type
::
Oldd
ecimal
,
cmpOldd
ecimal
},
{
{
// 14
Type
::
Char
,
cmpChar
},
{
{
// 15
Type
::
Varchar
,
cmpVarchar
},
{
{
// 16
Type
::
Binary
,
cmpBinary
},
{
{
// 17
Type
::
Varbinary
,
cmpVarbinary
},
{
{
// 18
Type
::
Datetime
,
cmpDatetime
},
{
{
// 19
Type
::
Date
,
cmpDate
},
{
{
// 20
Type
::
Blob
,
cmpBlob
},
{
{
// 21
Type
::
Text
,
cmpText
},
{
{
// 22
Type
::
Undefined
,
// 5.0 Bit
NULL
},
{
{
// 23
Type
::
Undefined
,
// 5.0 Longvarchar
NULL
},
{
{
// 24
Type
::
Undefined
,
// 5.0 Longvarbinary
NULL
},
{
{
// 25
Type
::
Time
,
cmpTime
},
{
{
// 26
Type
::
Year
,
cmpYear
},
{
{
// 27
Type
::
Timestamp
,
cmpTimestamp
},
{
// 28
Type
::
Olddecimalunsigned
,
cmpOlddecimalunsigned
}
};
...
...
@@ -411,14 +415,56 @@ NdbSqlUtil::cmpDouble(const void* info, const Uint32* p1, const Uint32* p2, Uint
}
int
NdbSqlUtil
::
cmp
Decimal
(
const
void
*
info
,
const
Uint32
*
p1
,
const
Uint32
*
p2
,
Uint32
full
,
Uint32
size
)
NdbSqlUtil
::
cmp
_olddecimal
(
const
uchar
*
s1
,
const
uchar
*
s2
,
unsigned
n
)
{
assert
(
full
>=
size
&&
size
>
0
);
// not used by MySQL or NDB
assert
(
false
);
int
sgn
=
+
1
;
unsigned
i
=
0
;
while
(
i
<
n
)
{
int
c1
=
s1
[
i
];
int
c2
=
s2
[
i
];
if
(
c1
==
c2
)
{
if
(
c1
==
'-'
)
sgn
=
-
1
;
}
else
if
(
c1
==
'-'
)
{
return
-
1
;
}
else
if
(
c2
==
'-'
)
{
return
+
1
;
}
else
if
(
c1
<
c2
)
{
return
-
1
*
sgn
;
}
else
{
return
+
1
*
sgn
;
}
i
++
;
}
return
0
;
}
int
NdbSqlUtil
::
cmpOlddecimal
(
const
void
*
info
,
const
Uint32
*
p1
,
const
Uint32
*
p2
,
Uint32
full
,
Uint32
size
)
{
assert
(
full
>=
size
&&
size
>
0
);
if
(
full
==
size
)
{
union
{
const
Uint32
*
p
;
const
uchar
*
v
;
}
u1
,
u2
;
u1
.
p
=
p1
;
u2
.
p
=
p2
;
return
cmp_olddecimal
(
u1
.
v
,
u2
.
v
,
full
<<
2
);
}
return
CmpUnknown
;
}
int
NdbSqlUtil
::
cmpOlddecimalunsigned
(
const
void
*
info
,
const
Uint32
*
p1
,
const
Uint32
*
p2
,
Uint32
full
,
Uint32
size
)
{
assert
(
full
>=
size
&&
size
>
0
);
if
(
full
==
size
)
{
union
{
const
Uint32
*
p
;
const
uchar
*
v
;
}
u1
,
u2
;
u1
.
p
=
p1
;
u2
.
p
=
p2
;
return
cmp_olddecimal
(
u1
.
v
,
u2
.
v
,
full
<<
2
);
}
return
CmpUnknown
;
}
int
NdbSqlUtil
::
cmpChar
(
const
void
*
info
,
const
Uint32
*
p1
,
const
Uint32
*
p2
,
Uint32
full
,
Uint32
size
)
{
...
...
ndb/src/ndbapi/NdbDictionary.cpp
View file @
0d033042
...
...
@@ -918,8 +918,11 @@ operator<<(NdbOut& out, const NdbDictionary::Column& col)
case
NdbDictionary
:
:
Column
::
Double
:
out
<<
"Double"
;
break
;
case
NdbDictionary
:
:
Column
::
Decimal
:
out
<<
"Decimal("
<<
col
.
getScale
()
<<
","
<<
col
.
getPrecision
()
<<
")"
;
case
NdbDictionary
:
:
Column
::
Olddecimal
:
out
<<
"Olddecimal("
<<
col
.
getPrecision
()
<<
","
<<
col
.
getScale
()
<<
")"
;
break
;
case
NdbDictionary
:
:
Column
::
Olddecimalunsigned
:
out
<<
"Olddecimalunsigned("
<<
col
.
getPrecision
()
<<
","
<<
col
.
getScale
()
<<
")"
;
break
;
case
NdbDictionary
:
:
Column
::
Char
:
out
<<
"Char("
<<
col
.
getLength
()
<<
";"
<<
csname
<<
")"
;
...
...
ndb/src/ndbapi/NdbDictionaryImpl.cpp
View file @
0d033042
...
...
@@ -114,7 +114,8 @@ NdbColumnImpl::init(Type t)
m_length
=
1
;
m_cs
=
NULL
;
break
;
case
Decimal
:
case
Olddecimal
:
case
Olddecimalunsigned
:
m_precision
=
10
;
m_scale
=
0
;
m_length
=
1
;
...
...
@@ -1176,7 +1177,8 @@ columnTypeMapping[] = {
{
DictTabInfo
::
ExtBigunsigned
,
NdbDictionary
::
Column
::
Bigunsigned
},
{
DictTabInfo
::
ExtFloat
,
NdbDictionary
::
Column
::
Float
},
{
DictTabInfo
::
ExtDouble
,
NdbDictionary
::
Column
::
Double
},
{
DictTabInfo
::
ExtDecimal
,
NdbDictionary
::
Column
::
Decimal
},
{
DictTabInfo
::
ExtOlddecimal
,
NdbDictionary
::
Column
::
Olddecimal
},
{
DictTabInfo
::
ExtOlddecimalunsigned
,
NdbDictionary
::
Column
::
Olddecimalunsigned
},
{
DictTabInfo
::
ExtChar
,
NdbDictionary
::
Column
::
Char
},
{
DictTabInfo
::
ExtVarchar
,
NdbDictionary
::
Column
::
Varchar
},
{
DictTabInfo
::
ExtBinary
,
NdbDictionary
::
Column
::
Binary
},
...
...
ndb/src/ndbapi/NdbRecAttr.cpp
View file @
0d033042
...
...
@@ -156,7 +156,8 @@ NdbOut& operator<<(NdbOut& out, const NdbRecAttr &r)
return
out
;
}
uint
length
=
r
.
getColumn
()
->
getLength
();
const
NdbDictionary
::
Column
*
c
=
r
.
getColumn
();
uint
length
=
c
->
getLength
();
if
(
length
>
1
)
out
<<
"["
;
...
...
@@ -208,6 +209,18 @@ NdbOut& operator<<(NdbOut& out, const NdbRecAttr &r)
case
NdbDictionary
:
:
Column
::
Double
:
out
<<
r
.
double_value
();
break
;
case
NdbDictionary
:
:
Column
::
Olddecimal
:
{
short
len
=
1
+
c
->
getPrecision
()
+
(
c
->
getScale
()
>
0
);
out
.
print
(
"%.*s"
,
len
,
r
.
aRef
());
}
break
;
case
NdbDictionary
:
:
Column
::
Olddecimalunsigned
:
{
short
len
=
0
+
c
->
getPrecision
()
+
(
c
->
getScale
()
>
0
);
out
.
print
(
"%.*s"
,
len
,
r
.
aRef
());
}
break
;
// for dates cut-and-paste from field.cc
case
NdbDictionary
:
:
Column
::
Datetime
:
{
...
...
ndb/test/include/NdbSchemaOp.hpp
View file @
0d033042
...
...
@@ -567,7 +567,8 @@ convertColumnTypeToAttrType(NdbDictionary::Column::Type _type)
case
NdbDictionary
:
:
Column
::
Unsigned
:
return
UnSigned
;
case
NdbDictionary
:
:
Column
::
Float
:
case
NdbDictionary
:
:
Column
::
Decimal
:
case
NdbDictionary
:
:
Column
::
Olddecimal
:
case
NdbDictionary
:
:
Column
::
Olddecimalunsigned
:
case
NdbDictionary
:
:
Column
::
Double
:
return
Float
;
case
NdbDictionary
:
:
Column
::
Char
:
...
...
ndb/tools/restore/consumer.cpp
View file @
0d033042
...
...
@@ -44,9 +44,12 @@ BackupConsumer::create_table_string(const TableS & table,
case
NdbDictionary
:
:
Column
::
Float
:
pos
+=
sprintf
(
buf
+
pos
,
"%s"
,
"float"
);
break
;
case
NdbDictionary
:
:
Column
::
D
ecimal
:
case
NdbDictionary
:
:
Column
::
Oldd
ecimal
:
pos
+=
sprintf
(
buf
+
pos
,
"%s"
,
"decimal"
);
break
;
case
NdbDictionary
:
:
Column
::
Olddecimalunsigned
:
pos
+=
sprintf
(
buf
+
pos
,
"%s"
,
"decimal unsigned"
);
break
;
case
NdbDictionary
:
:
Column
::
Char
:
pos
+=
sprintf
(
buf
+
pos
,
"%s"
,
"char"
);
break
;
...
...
sql/ha_ndbcluster.cc
View file @
0d033042
...
...
@@ -2276,10 +2276,14 @@ void ha_ndbcluster::print_results()
fprintf
(
DBUG_FILE
,
"Double
\t
%f"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
D
ecimal
:
{
case
NdbDictionary
:
:
Column
::
Oldd
ecimal
:
{
char
*
value
=
field
->
ptr
;
fprintf
(
DBUG_FILE
,
"Decimal
\t
'%-*s'"
,
field
->
pack_length
(),
value
);
fprintf
(
DBUG_FILE
,
"Olddecimal
\t
'%-*s'"
,
field
->
pack_length
(),
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Olddecimalunsigned
:
{
char
*
value
=
field
->
ptr
;
fprintf
(
DBUG_FILE
,
"Olddecimalunsigned
\t
'%-*s'"
,
field
->
pack_length
(),
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Char
:
{
...
...
@@ -3312,10 +3316,6 @@ static int create_ndb_column(NDBCOL &col,
const
enum
enum_field_types
mysql_type
=
field
->
real_type
();
switch
(
mysql_type
)
{
// Numeric types
case
MYSQL_TYPE_DECIMAL
:
col
.
setType
(
NDBCOL
::
Char
);
col
.
setLength
(
field
->
pack_length
());
break
;
case
MYSQL_TYPE_TINY
:
if
(
field
->
flags
&
UNSIGNED_FLAG
)
col
.
setType
(
NDBCOL
::
Tinyunsigned
);
...
...
@@ -3359,6 +3359,26 @@ static int create_ndb_column(NDBCOL &col,
col
.
setType
(
NDBCOL
::
Double
);
col
.
setLength
(
1
);
break
;
case
MYSQL_TYPE_DECIMAL
:
{
Field_decimal
*
f
=
(
Field_decimal
*
)
field
;
uint
precision
=
f
->
pack_length
();
uint
scale
=
f
->
decimals
();
if
(
field
->
flags
&
UNSIGNED_FLAG
)
{
col
.
setType
(
NDBCOL
::
Olddecimalunsigned
);
precision
-=
(
scale
>
0
);
}
else
{
col
.
setType
(
NDBCOL
::
Olddecimal
);
precision
-=
1
+
(
scale
>
0
);
}
col
.
setPrecision
(
precision
);
col
.
setScale
(
scale
);
col
.
setLength
(
1
);
}
break
;
// Date types
case
MYSQL_TYPE_DATETIME
:
col
.
setType
(
NDBCOL
::
Datetime
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment