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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
0625aef8
Commit
0625aef8
authored
Aug 10, 2004
by
mskold@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug fix for bug#3912
parent
a5dd9f8b
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
58 additions
and
32 deletions
+58
-32
mysql-test/r/ndb_alter_table.result
mysql-test/r/ndb_alter_table.result
+31
-15
mysql-test/t/ndb_alter_table.test
mysql-test/t/ndb_alter_table.test
+3
-2
ndb/src/ndbapi/Ndb.cpp
ndb/src/ndbapi/Ndb.cpp
+14
-9
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+10
-6
No files found.
mysql-test/r/ndb_alter_table.result
View file @
0625aef8
...
@@ -16,13 +16,19 @@ col3 varchar (20) not null,
...
@@ -16,13 +16,19 @@ col3 varchar (20) not null,
col4 varchar(4) not null,
col4 varchar(4) not null,
col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null,
col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null,
col6 int not null, to_be_deleted int) ENGINE=ndbcluster;
col6 int not null, to_be_deleted int) ENGINE=ndbcluster;
insert into t1 values (2,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7), (25, 4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7);
insert into t1 values
(0,4,3,5,"PENDING",1,7),(NULL,4,3,5,"PENDING",1,7),(31,4,3,5,"PENDING",1,7), (7,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7), (100,4,3,5,"PENDING",1,7), (99,4,3,5,"PENDING",1,7), (8,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7);
select * from t1 order by col1;
select * from t1 order by col1;
col1 col2 col3 col4 col5 col6 to_be_deleted
col1 col2 col3 col4 col5 col6 to_be_deleted
2 4 3 5 PENDING 1 7
0 4 3 5 PENDING 1 7
3 4 3 5 PENDING 1 7
1 4 3 5 PENDING 1 7
25 4 3 5 PENDING 1 7
7 4 3 5 PENDING 1 7
26 4 3 5 PENDING 1 7
8 4 3 5 PENDING 1 7
31 4 3 5 PENDING 1 7
32 4 3 5 PENDING 1 7
99 4 3 5 PENDING 1 7
100 4 3 5 PENDING 1 7
101 4 3 5 PENDING 1 7
alter table t1
alter table t1
add column col4_5 varchar(20) not null after col4,
add column col4_5 varchar(20) not null after col4,
add column col7 varchar(30) not null after col5,
add column col7 varchar(30) not null after col5,
...
@@ -31,16 +37,26 @@ change column col2 fourth varchar(30) not null after col3,
...
@@ -31,16 +37,26 @@ change column col2 fourth varchar(30) not null after col3,
modify column col6 int not null first;
modify column col6 int not null first;
select * from t1 order by col1;
select * from t1 order by col1;
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
1 2 3 4 5 PENDING 0000-00-00 00:00:00
1 0 3 4 5 PENDING 0000-00-00 00:00:00
1 3 3 4 5 PENDING 0000-00-00 00:00:00
1 1 3 4 5 PENDING 0000-00-00 00:00:00
1 25 3 4 5 PENDING 0000-00-00 00:00:00
1 7 3 4 5 PENDING 0000-00-00 00:00:00
1 26 3 4 5 PENDING 0000-00-00 00:00:00
1 8 3 4 5 PENDING 0000-00-00 00:00:00
1 31 3 4 5 PENDING 0000-00-00 00:00:00
1 32 3 4 5 PENDING 0000-00-00 00:00:00
1 99 3 4 5 PENDING 0000-00-00 00:00:00
1 100 3 4 5 PENDING 0000-00-00 00:00:00
1 101 3 4 5 PENDING 0000-00-00 00:00:00
insert into t1 values (2, NULL,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00');
insert into t1 values (2, NULL,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00');
select * from t1 order by col1;
select * from t1 order by col1;
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
1 2 3 4 5 PENDING 0000-00-00 00:00:00
1 0 3 4 5 PENDING 0000-00-00 00:00:00
1 3 3 4 5 PENDING 0000-00-00 00:00:00
1 1 3 4 5 PENDING 0000-00-00 00:00:00
1 25 3 4 5 PENDING 0000-00-00 00:00:00
1 7 3 4 5 PENDING 0000-00-00 00:00:00
1 26 3 4 5 PENDING 0000-00-00 00:00:00
1 8 3 4 5 PENDING 0000-00-00 00:00:00
2 27 4 3 5 99 PENDING EXTRA 2004-01-01 00:00:00
1 31 3 4 5 PENDING 0000-00-00 00:00:00
1 32 3 4 5 PENDING 0000-00-00 00:00:00
1 99 3 4 5 PENDING 0000-00-00 00:00:00
1 100 3 4 5 PENDING 0000-00-00 00:00:00
1 101 3 4 5 PENDING 0000-00-00 00:00:00
2 102 4 3 5 99 PENDING EXTRA 2004-01-01 00:00:00
drop table t1;
drop table t1;
mysql-test/t/ndb_alter_table.test
View file @
0625aef8
...
@@ -30,7 +30,8 @@ col3 varchar (20) not null,
...
@@ -30,7 +30,8 @@ col3 varchar (20) not null,
col4
varchar
(
4
)
not
null
,
col4
varchar
(
4
)
not
null
,
col5
enum
(
'PENDING'
,
'ACTIVE'
,
'DISABLED'
)
not
null
,
col5
enum
(
'PENDING'
,
'ACTIVE'
,
'DISABLED'
)
not
null
,
col6
int
not
null
,
to_be_deleted
int
)
ENGINE
=
ndbcluster
;
col6
int
not
null
,
to_be_deleted
int
)
ENGINE
=
ndbcluster
;
insert
into
t1
values
(
2
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
NULL
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
25
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
NULL
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
);
insert
into
t1
values
(
0
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),(
NULL
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),(
31
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
7
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
NULL
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
100
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
99
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
8
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
),
(
NULL
,
4
,
3
,
5
,
"PENDING"
,
1
,
7
);
select
*
from
t1
order
by
col1
;
select
*
from
t1
order
by
col1
;
alter
table
t1
alter
table
t1
add
column
col4_5
varchar
(
20
)
not
null
after
col4
,
add
column
col4_5
varchar
(
20
)
not
null
after
col4
,
...
...
ndb/src/ndbapi/Ndb.cpp
View file @
0625aef8
...
@@ -788,7 +788,7 @@ Ndb::setTupleIdInNdb(Uint32 aTableId, Uint64 val, bool increase )
...
@@ -788,7 +788,7 @@ Ndb::setTupleIdInNdb(Uint32 aTableId, Uint64 val, bool increase )
{
{
// We have a cache sequence
// We have a cache sequence
if
(
val
<=
theFirstTupleId
[
aTableId
]
+
1
)
if
(
val
<=
theFirstTupleId
[
aTableId
]
+
1
)
return
tru
e
;
return
fals
e
;
if
(
val
<=
theLastTupleId
[
aTableId
])
if
(
val
<=
theLastTupleId
[
aTableId
])
{
{
theFirstTupleId
[
aTableId
]
=
val
-
1
;
theFirstTupleId
[
aTableId
]
=
val
-
1
;
...
@@ -811,7 +811,7 @@ Ndb::opTupleIdOnNdb(Uint32 aTableId, Uint64 opValue, Uint32 op)
...
@@ -811,7 +811,7 @@ Ndb::opTupleIdOnNdb(Uint32 aTableId, Uint64 opValue, Uint32 op)
NdbOperation
*
tOperation
;
NdbOperation
*
tOperation
;
Uint64
tValue
;
Uint64
tValue
;
NdbRecAttr
*
tRecAttrResult
;
NdbRecAttr
*
tRecAttrResult
;
int
result
;
Uint64
ret
;
Uint64
ret
;
CHECK_STATUS_MACRO_ZERO
;
CHECK_STATUS_MACRO_ZERO
;
...
@@ -865,8 +865,8 @@ Ndb::opTupleIdOnNdb(Uint32 aTableId, Uint64 opValue, Uint32 op)
...
@@ -865,8 +865,8 @@ Ndb::opTupleIdOnNdb(Uint32 aTableId, Uint64 opValue, Uint32 op)
if
(
tConnection
->
execute
(
Commit
)
==
-
1
)
if
(
tConnection
->
execute
(
Commit
)
==
-
1
)
goto
error_handler
;
goto
error_handler
;
theFirstTupleId
[
aTableId
]
=
~
0
;
theFirstTupleId
[
aTableId
]
=
~
(
Uint64
)
0
;
theLastTupleId
[
aTableId
]
=
~
0
;
theLastTupleId
[
aTableId
]
=
~
(
Uint64
)
0
;
ret
=
opValue
;
ret
=
opValue
;
break
;
break
;
case
2
:
case
2
:
...
@@ -876,15 +876,20 @@ Ndb::opTupleIdOnNdb(Uint32 aTableId, Uint64 opValue, Uint32 op)
...
@@ -876,15 +876,20 @@ Ndb::opTupleIdOnNdb(Uint32 aTableId, Uint64 opValue, Uint32 op)
tOperation
->
read_attr
(
"NEXTID"
,
2
);
tOperation
->
read_attr
(
"NEXTID"
,
2
);
tOperation
->
branch_le
(
2
,
1
,
0
);
tOperation
->
branch_le
(
2
,
1
,
0
);
tOperation
->
write_attr
(
"NEXTID"
,
1
);
tOperation
->
write_attr
(
"NEXTID"
,
1
);
tOperation
->
def_label
(
0
);
tOperation
->
interpret_exit_ok
();
tOperation
->
interpret_exit_ok
();
tOperation
->
def_label
(
0
);
tOperation
->
interpret_exit_nok
(
9999
);
if
(
tConnection
->
execute
(
Commit
)
==
-
1
)
if
(
tConnection
->
execute
(
Commit
)
==
-
1
)
goto
error_handler
;
goto
error_handler
;
theFirstTupleId
[
aTableId
]
=
~
0
;
if
(
result
==
9999
)
theLastTupleId
[
aTableId
]
=
~
0
;
ret
=
~
(
Uint64
)
0
;
else
{
theFirstTupleId
[
aTableId
]
=
theLastTupleId
[
aTableId
]
=
opValue
-
1
;
ret
=
opValue
;
ret
=
opValue
;
}
break
;
break
;
default:
default:
goto
error_handler
;
goto
error_handler
;
...
...
sql/ha_ndbcluster.cc
View file @
0625aef8
...
@@ -1281,7 +1281,7 @@ int ha_ndbcluster::define_read_attrs(byte* buf, NdbOperation* op)
...
@@ -1281,7 +1281,7 @@ int ha_ndbcluster::define_read_attrs(byte* buf, NdbOperation* op)
int
ha_ndbcluster
::
write_row
(
byte
*
record
)
int
ha_ndbcluster
::
write_row
(
byte
*
record
)
{
{
bool
has_auto_increment
;
bool
has_auto_increment
,
auto_increment_field_not_null
;
uint
i
;
uint
i
;
NdbConnection
*
trans
=
m_active_trans
;
NdbConnection
*
trans
=
m_active_trans
;
NdbOperation
*
op
;
NdbOperation
*
op
;
...
@@ -1292,7 +1292,8 @@ int ha_ndbcluster::write_row(byte *record)
...
@@ -1292,7 +1292,8 @@ int ha_ndbcluster::write_row(byte *record)
if
(
table
->
timestamp_default_now
)
if
(
table
->
timestamp_default_now
)
update_timestamp
(
record
+
table
->
timestamp_default_now
-
1
);
update_timestamp
(
record
+
table
->
timestamp_default_now
-
1
);
has_auto_increment
=
(
table
->
next_number_field
&&
record
==
table
->
record
[
0
]);
has_auto_increment
=
(
table
->
next_number_field
&&
record
==
table
->
record
[
0
]);
if
(
has_auto_increment
)
auto_increment_field_not_null
=
table
->
auto_increment_field_not_null
;
if
((
has_auto_increment
)
&&
(
!
auto_increment_field_not_null
))
update_auto_increment
();
update_auto_increment
();
if
(
!
(
op
=
trans
->
getNdbOperation
(
m_tabname
)))
if
(
!
(
op
=
trans
->
getNdbOperation
(
m_tabname
)))
...
@@ -1346,11 +1347,14 @@ int ha_ndbcluster::write_row(byte *record)
...
@@ -1346,11 +1347,14 @@ int ha_ndbcluster::write_row(byte *record)
if
(
trans
->
execute
(
NoCommit
)
!=
0
)
if
(
trans
->
execute
(
NoCommit
)
!=
0
)
DBUG_RETURN
(
ndb_err
(
trans
));
DBUG_RETURN
(
ndb_err
(
trans
));
}
}
if
(
(
has_auto_increment
)
&&
(
!
auto_increment_column_changed
)
)
if
(
(
has_auto_increment
)
&&
(
auto_increment_field_not_null
)
)
{
{
Uint64
next_val
=
(
Uint64
)
table
->
next_number_field
->
val_int
()
+
1
;
Uint64
next_val
=
(
Uint64
)
table
->
next_number_field
->
val_int
()
+
1
;
DBUG_PRINT
(
"info"
,
(
"Setting next auto increment value to %u"
,
next_val
));
DBUG_PRINT
(
"info"
,
m_ndb
->
setAutoIncrementValue
(
m_tabname
,
next_val
,
true
);
(
"Trying to set next auto increment value to %u"
,
next_val
));
if
(
m_ndb
->
setAutoIncrementValue
(
m_tabname
,
next_val
,
true
))
DBUG_PRINT
(
"info"
,
(
"Setting next auto increment value to %u"
,
next_val
));
}
}
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
...
...
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