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
0462ccfe
Commit
0462ccfe
authored
Jan 08, 2005
by
pekka@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ndb - wl-1442 fix Date ordering
parent
7ef7580b
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
118 additions
and
67 deletions
+118
-67
mysql-test/r/ndb_index_ordered.result
mysql-test/r/ndb_index_ordered.result
+50
-16
mysql-test/t/ndb_index_ordered.test
mysql-test/t/ndb_index_ordered.test
+24
-8
ndb/include/kernel/signaldata/DictTabInfo.hpp
ndb/include/kernel/signaldata/DictTabInfo.hpp
+3
-3
ndb/include/ndbapi/NdbDictionary.hpp
ndb/include/ndbapi/NdbDictionary.hpp
+1
-1
ndb/include/util/NdbSqlUtil.hpp
ndb/include/util/NdbSqlUtil.hpp
+2
-2
ndb/src/common/util/NdbSqlUtil.cpp
ndb/src/common/util/NdbSqlUtil.cpp
+25
-27
ndb/src/ndbapi/NdbDictionary.cpp
ndb/src/ndbapi/NdbDictionary.cpp
+2
-2
ndb/src/ndbapi/NdbDictionaryImpl.cpp
ndb/src/ndbapi/NdbDictionaryImpl.cpp
+2
-2
ndb/test/include/NdbSchemaOp.hpp
ndb/test/include/NdbSchemaOp.hpp
+1
-1
ndb/tools/restore/consumer.cpp
ndb/tools/restore/consumer.cpp
+2
-2
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+6
-3
No files found.
mysql-test/r/ndb_index_ordered.result
View file @
0462ccfe
...
...
@@ -325,19 +325,53 @@ index(ts)
) engine=ndb;
insert into t1 (pk,dt,da,ye,ti) values
(1, '1901-05-05 23:00:59', '1901-05-05', '1901', '23:00:59'),
(2, '1955-12-31 00:00:00', '1955-12-31', '1955', '00:00:00'),
(3, '1999-06-06 06:06:06', '1999-06-06', '1999', '06:06:06'),
(4, '2001-01-01 10:11:11', '2001-01-01', '2001', '10:11:11'),
(5, '2005-01-31 23:59:59', '2005-01-31', '2005', '23:59:59');
select count(*) from t1 use index (dt) where dt > '1900-01-01 00:00:00';
count(*)
5
select count(*) from t1 use index (dt) where dt > '1955-12-31 00:00:00';
count(*)
3
select count(*) from t1 use index (dt) where dt < '2001-01-01 10:11:11';
count(*)
3
select count(*) from t1 use index (dt) where dt < '2001-01-01 10:11:12';
count(*)
4
(2, '1912-09-05 13:00:59', '1912-09-05', '1912', '13:00:59'),
(3, '1945-12-31 00:00:00', '1945-12-31', '1945', '00:00:00'),
(4, '1955-12-31 00:00:00', '1955-12-31', '1955', '00:00:00'),
(5, '1963-06-06 06:06:06', '1963-06-06', '1963', '06:06:06'),
(6, '1993-06-06 06:06:06', '1993-06-06', '1993', '06:06:06'),
(7, '2001-01-01 10:11:10', '2001-01-01', '2001', '10:11:10'),
(8, '2001-01-01 10:11:11', '2001-01-01', '2001', '10:11:11'),
(9, '2005-01-31 23:59:59', '2005-01-31', '2005', '23:59:59');
select count(*)-9 from t1 use index (dt) where dt > '1900-01-01 00:00:00';
count(*)-9
0
select count(*)-6 from t1 use index (dt) where dt >= '1955-12-31 00:00:00';
count(*)-6
0
select count(*)-5 from t1 use index (dt) where dt > '1955-12-31 00:00:00';
count(*)-5
0
select count(*)-5 from t1 use index (dt) where dt < '1970-03-03 22:22:22';
count(*)-5
0
select count(*)-7 from t1 use index (dt) where dt < '2001-01-01 10:11:11';
count(*)-7
0
select count(*)-8 from t1 use index (dt) where dt <= '2001-01-01 10:11:11';
count(*)-8
0
select count(*)-9 from t1 use index (dt) where dt <= '2055-01-01 00:00:00';
count(*)-9
0
select count(*)-9 from t1 use index (da) where da > '1900-01-01';
count(*)-9
0
select count(*)-6 from t1 use index (da) where da >= '1955-12-31';
count(*)-6
0
select count(*)-5 from t1 use index (da) where da > '1955-12-31';
count(*)-5
0
select count(*)-5 from t1 use index (da) where da < '1970-03-03';
count(*)-5
0
select count(*)-6 from t1 use index (da) where da < '2001-01-01';
count(*)-6
0
select count(*)-8 from t1 use index (da) where da <= '2001-01-02';
count(*)-8
0
select count(*)-9 from t1 use index (da) where da <= '2055-01-01';
count(*)-9
0
mysql-test/t/ndb_index_ordered.test
View file @
0462ccfe
...
...
@@ -191,13 +191,29 @@ create table t1 (
insert
into
t1
(
pk
,
dt
,
da
,
ye
,
ti
)
values
(
1
,
'1901-05-05 23:00:59'
,
'1901-05-05'
,
'1901'
,
'23:00:59'
),
(
2
,
'1955-12-31 00:00:00'
,
'1955-12-31'
,
'1955'
,
'00:00:00'
),
(
3
,
'1999-06-06 06:06:06'
,
'1999-06-06'
,
'1999'
,
'06:06:06'
),
(
4
,
'2001-01-01 10:11:11'
,
'2001-01-01'
,
'2001'
,
'10:11:11'
),
(
5
,
'2005-01-31 23:59:59'
,
'2005-01-31'
,
'2005'
,
'23:59:59'
);
(
2
,
'1912-09-05 13:00:59'
,
'1912-09-05'
,
'1912'
,
'13:00:59'
),
(
3
,
'1945-12-31 00:00:00'
,
'1945-12-31'
,
'1945'
,
'00:00:00'
),
(
4
,
'1955-12-31 00:00:00'
,
'1955-12-31'
,
'1955'
,
'00:00:00'
),
(
5
,
'1963-06-06 06:06:06'
,
'1963-06-06'
,
'1963'
,
'06:06:06'
),
(
6
,
'1993-06-06 06:06:06'
,
'1993-06-06'
,
'1993'
,
'06:06:06'
),
(
7
,
'2001-01-01 10:11:10'
,
'2001-01-01'
,
'2001'
,
'10:11:10'
),
(
8
,
'2001-01-01 10:11:11'
,
'2001-01-01'
,
'2001'
,
'10:11:11'
),
(
9
,
'2005-01-31 23:59:59'
,
'2005-01-31'
,
'2005'
,
'23:59:59'
);
# datetime
select
count
(
*
)
from
t1
use
index
(dt) where dt > '1900-01-01 00:00:00'
;
select
count
(
*
)
from
t1
use
index
(dt) where dt > '1955-12-31 00:00:00'
;
select
count
(
*
)
from
t1
use
index
(dt) where dt < '2001-01-01 10:11:11'
;
select
count
(
*
)
from
t1
use
index
(dt) where dt < '2001-01-01 10:11:12'
;
select
count
(
*
)
-
9
from
t1
use
index
(dt) where dt > '1900-01-01 00:00:00'
;
select
count
(
*
)
-
6
from
t1
use
index
(dt) where dt >= '1955-12-31 00:00:00'
;
select
count
(
*
)
-
5
from
t1
use
index
(dt) where dt > '1955-12-31 00:00:00'
;
select
count
(
*
)
-
5
from
t1
use
index
(dt) where dt < '1970-03-03 22:22:22'
;
select
count
(
*
)
-
7
from
t1
use
index
(dt) where dt < '2001-01-01 10:11:11'
;
select
count
(
*
)
-
8
from
t1
use
index
(dt) where dt <= '2001-01-01 10:11:11'
;
select
count
(
*
)
-
9
from
t1
use
index
(dt) where dt <= '2055-01-01 00:00:00'
;
# date
select
count
(
*
)
-
9
from
t1
use
index
(da) where da > '1900-01-01'
;
select
count
(
*
)
-
6
from
t1
use
index
(da) where da >= '1955-12-31'
;
select
count
(
*
)
-
5
from
t1
use
index
(da) where da > '1955-12-31'
;
select
count
(
*
)
-
5
from
t1
use
index
(da) where da < '1970-03-03'
;
select
count
(
*
)
-
6
from
t1
use
index
(da) where da < '2001-01-01'
;
select
count
(
*
)
-
8
from
t1
use
index
(da) where da <= '2001-01-02'
;
select
count
(
*
)
-
9
from
t1
use
index
(da) where da <= '2055-01-01'
;
ndb/include/kernel/signaldata/DictTabInfo.hpp
View file @
0462ccfe
...
...
@@ -308,7 +308,7 @@ public:
ExtBinary
=
NdbSqlUtil
::
Type
::
Binary
,
ExtVarbinary
=
NdbSqlUtil
::
Type
::
Varbinary
,
ExtDatetime
=
NdbSqlUtil
::
Type
::
Datetime
,
Ext
Timespec
=
NdbSqlUtil
::
Type
::
Timespec
,
Ext
Date
=
NdbSqlUtil
::
Type
::
Date
,
ExtBlob
=
NdbSqlUtil
::
Type
::
Blob
,
ExtText
=
NdbSqlUtil
::
Type
::
Text
};
...
...
@@ -428,10 +428,10 @@ public:
AttributeSize
=
DictTabInfo
::
an8Bit
;
AttributeArraySize
=
8
*
AttributeExtLength
;
return
true
;
case
DictTabInfo
:
:
Ext
Timespec
:
case
DictTabInfo
:
:
Ext
Date
:
AttributeType
=
DictTabInfo
::
StringType
;
AttributeSize
=
DictTabInfo
::
an8Bit
;
AttributeArraySize
=
12
*
AttributeExtLength
;
AttributeArraySize
=
3
*
AttributeExtLength
;
return
true
;
case
DictTabInfo
:
:
ExtBlob
:
case
DictTabInfo
:
:
ExtText
:
...
...
ndb/include/ndbapi/NdbDictionary.hpp
View file @
0462ccfe
...
...
@@ -185,7 +185,7 @@ public:
Binary
,
///< Len
Varbinary
,
///< Max len
Datetime
,
///< Precision down to 1 sec (sizeof(Datetime) == 8 bytes )
Timespec
,
///< Precision down to 1 nsec(sizeof(Datetime) == 12
bytes )
Date
,
///< Precision down to 1 day(sizeof(Date) == 4
bytes )
Blob
,
///< Binary large object (see NdbBlob)
Text
///< Text blob
};
...
...
ndb/include/util/NdbSqlUtil.hpp
View file @
0462ccfe
...
...
@@ -81,7 +81,7 @@ public:
Binary
,
// Len
Varbinary
,
// Max len
Datetime
,
// Precision down to 1 sec (size 8 bytes)
Timespec
,
// Precision down to 1 nsec (size 12
bytes)
Date
,
// Precision down to 1 day (size 4
bytes)
Blob
,
// Blob
Text
// Text blob
};
...
...
@@ -132,7 +132,7 @@ private:
static
Cmp
cmpBinary
;
static
Cmp
cmpVarbinary
;
static
Cmp
cmpDatetime
;
static
Cmp
cmp
Timespec
;
static
Cmp
cmp
Date
;
static
Cmp
cmpBlob
;
static
Cmp
cmpText
;
};
...
...
ndb/src/common/util/NdbSqlUtil.cpp
View file @
0462ccfe
...
...
@@ -153,8 +153,8 @@ NdbSqlUtil::m_typeList[] = {
cmpDatetime
},
{
Type
::
Timespec
,
cmp
Timespec
Type
::
Date
,
cmp
Date
},
{
Type
::
Blob
,
...
...
@@ -485,36 +485,34 @@ NdbSqlUtil::cmpDatetime(const void* info, const Uint32* p1, const Uint32* p2, Ui
}
int
NdbSqlUtil
::
cmp
Timespec
(
const
void
*
info
,
const
Uint32
*
p1
,
const
Uint32
*
p2
,
Uint32
full
,
Uint32
size
)
NdbSqlUtil
::
cmp
Date
(
const
void
*
info
,
const
Uint32
*
p1
,
const
Uint32
*
p2
,
Uint32
full
,
Uint32
size
)
{
#ifdef ndb_date_is_4_byte_native_int
assert
(
full
>=
size
&&
size
>
0
);
union
{
Uint32
p
[
2
];
Int32
v
;
}
u1
,
u2
;
u1
.
p
[
0
]
=
p1
[
0
];
u2
.
p
[
0
]
=
p2
[
0
];
if
(
u1
.
v
<
u2
.
v
)
return
-
1
;
if
(
u1
.
v
>
u2
.
v
)
return
+
1
;
return
0
;
#else
assert
(
full
>=
size
&&
size
>
0
);
/*
* Timespec is CC YY MM DD hh mm ss \0 NN NN NN NN
*
* Not used via MySQL.
*/
union
{
const
Uint32
*
p
;
const
unsigned
char
*
v
;
}
u1
,
u2
;
u1
.
p
=
p1
;
u2
.
p
=
p2
;
// no format check
int
k
=
memcmp
(
u1
.
v
,
u2
.
v
,
4
);
if
(
k
!=
0
)
return
k
<
0
?
-
1
:
+
1
;
if
(
size
>=
2
)
{
k
=
memcmp
(
u1
.
v
+
4
,
u2
.
v
+
4
,
4
);
if
(
k
!=
0
)
return
k
<
0
?
-
1
:
+
1
;
if
(
size
>=
3
)
{
Uint32
n1
=
*
(
const
Uint32
*
)(
u1
.
v
+
8
);
Uint32
n2
=
*
(
const
Uint32
*
)(
u2
.
v
+
8
);
if
(
n1
<
n2
)
return
-
1
;
if
(
n2
>
n1
)
return
+
1
;
return
0
;
}
}
return
CmpUnknown
;
// from Field_newdate::val_int
Uint64
j1
=
uint3korr
(
u1
.
v
);
Uint64
j2
=
uint3korr
(
u2
.
v
);
j1
=
(
j1
%
32L
)
+
(
j1
/
32L
%
16L
)
*
100L
+
(
j1
/
(
16L
*
32L
))
*
10000L
;
j2
=
(
j2
%
32L
)
+
(
j2
/
32L
%
16L
)
*
100L
+
(
j2
/
(
16L
*
32L
))
*
10000L
;
if
(
j1
<
j2
)
return
-
1
;
if
(
j1
>
j2
)
return
+
1
;
return
0
;
#endif
}
int
...
...
ndb/src/ndbapi/NdbDictionary.cpp
View file @
0462ccfe
...
...
@@ -936,8 +936,8 @@ operator<<(NdbOut& out, const NdbDictionary::Column& col)
case
NdbDictionary
:
:
Column
::
Datetime
:
out
<<
"Datetime"
;
break
;
case
NdbDictionary
:
:
Column
::
Timespec
:
out
<<
"
Timespec
"
;
case
NdbDictionary
:
:
Column
::
Date
:
out
<<
"
Date
"
;
break
;
case
NdbDictionary
:
:
Column
::
Blob
:
out
<<
"Blob("
<<
col
.
getInlineSize
()
<<
","
<<
col
.
getPartSize
()
...
...
ndb/src/ndbapi/NdbDictionaryImpl.cpp
View file @
0462ccfe
...
...
@@ -130,7 +130,7 @@ NdbColumnImpl::init(Type t)
case
Binary
:
case
Varbinary
:
case
Datetime
:
case
Timespec
:
case
Date
:
m_precision
=
0
;
m_scale
=
0
;
m_length
=
1
;
...
...
@@ -1174,7 +1174,7 @@ columnTypeMapping[] = {
{
DictTabInfo
::
ExtBinary
,
NdbDictionary
::
Column
::
Binary
},
{
DictTabInfo
::
ExtVarbinary
,
NdbDictionary
::
Column
::
Varbinary
},
{
DictTabInfo
::
ExtDatetime
,
NdbDictionary
::
Column
::
Datetime
},
{
DictTabInfo
::
Ext
Timespec
,
NdbDictionary
::
Column
::
Timespec
},
{
DictTabInfo
::
Ext
Date
,
NdbDictionary
::
Column
::
Date
},
{
DictTabInfo
::
ExtBlob
,
NdbDictionary
::
Column
::
Blob
},
{
DictTabInfo
::
ExtText
,
NdbDictionary
::
Column
::
Text
},
{
-
1
,
-
1
}
...
...
ndb/test/include/NdbSchemaOp.hpp
View file @
0462ccfe
...
...
@@ -576,7 +576,7 @@ convertColumnTypeToAttrType(NdbDictionary::Column::Type _type)
case
NdbDictionary
:
:
Column
::
Varbinary
:
return
String
;
case
NdbDictionary
:
:
Column
::
Datetime
:
case
NdbDictionary
:
:
Column
::
Timespec
:
case
NdbDictionary
:
:
Column
::
Date
:
case
NdbDictionary
:
:
Column
::
Undefined
:
default:
return
NoAttrTypeDef
;
...
...
ndb/tools/restore/consumer.cpp
View file @
0462ccfe
...
...
@@ -71,8 +71,8 @@ BackupConsumer::create_table_string(const TableS & table,
case
NdbDictionary
:
:
Column
::
Datetime
:
pos
+=
sprintf
(
buf
+
pos
,
"%s"
,
"datetime"
);
break
;
case
NdbDictionary
:
:
Column
::
Timespec
:
pos
+=
sprintf
(
buf
+
pos
,
"%s"
,
"
tim
e"
);
case
NdbDictionary
:
:
Column
::
Date
:
pos
+=
sprintf
(
buf
+
pos
,
"%s"
,
"
dat
e"
);
break
;
case
NdbDictionary
:
:
Column
::
Undefined
:
// pos += sprintf(buf+pos, "%s", "varchar binary");
...
...
sql/ha_ndbcluster.cc
View file @
0462ccfe
...
...
@@ -2259,9 +2259,9 @@ void ha_ndbcluster::print_results()
fprintf
(
DBUG_FILE
,
"Datetime
\t
%llu"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Timespec
:
{
case
NdbDictionary
:
:
Column
::
Date
:
{
Uint64
value
=
(
Uint64
)
*
field
->
ptr
;
fprintf
(
DBUG_FILE
,
"
Timespec
\t
%llu"
,
value
);
fprintf
(
DBUG_FILE
,
"
Date
\t
%llu"
,
value
);
break
;
}
case
NdbDictionary
:
:
Column
::
Blob
:
{
...
...
@@ -3323,8 +3323,11 @@ static int create_ndb_column(NDBCOL &col,
col
.
setType
(
NDBCOL
::
Datetime
);
col
.
setLength
(
1
);
break
;
case
MYSQL_TYPE_DATE
:
case
MYSQL_TYPE_NEWDATE
:
col
.
setType
(
NDBCOL
::
Date
);
col
.
setLength
(
1
);
break
;
case
MYSQL_TYPE_DATE
:
// ?
case
MYSQL_TYPE_TIME
:
case
MYSQL_TYPE_YEAR
:
col
.
setType
(
NDBCOL
::
Char
);
...
...
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