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
1b6b5e88
Commit
1b6b5e88
authored
Jun 24, 2004
by
paul@ice.snake.net
Browse files
Options
Browse Files
Download
Plain Diff
Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1
into ice.snake.net:/Volumes/ice2/MySQL/bk/mysql-4.1
parents
3029ae65
e14aef78
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
143 additions
and
110 deletions
+143
-110
mysql-test/mysql-test-run.sh
mysql-test/mysql-test-run.sh
+5
-3
mysql-test/ndb/ndb_config_2_node.ini
mysql-test/ndb/ndb_config_2_node.ini
+2
-4
mysql-test/ndb/ndbcluster.sh
mysql-test/ndb/ndbcluster.sh
+11
-9
mysql-test/r/alter_table.result
mysql-test/r/alter_table.result
+6
-0
mysql-test/r/ndb_autodiscover2.result
mysql-test/r/ndb_autodiscover2.result
+3
-3
mysql-test/t/alter_table.test
mysql-test/t/alter_table.test
+8
-0
mysql-test/t/ndb_autodiscover2.test
mysql-test/t/ndb_autodiscover2.test
+1
-1
ndb/src/kernel/SimBlockList.cpp
ndb/src/kernel/SimBlockList.cpp
+22
-19
ndb/src/ndbapi/Ndb.cpp
ndb/src/ndbapi/Ndb.cpp
+16
-28
ndb/src/ndbapi/Ndbinit.cpp
ndb/src/ndbapi/Ndbinit.cpp
+11
-17
scripts/make_binary_distribution.sh
scripts/make_binary_distribution.sh
+1
-1
sql/handler.cc
sql/handler.cc
+12
-4
sql/handler.h
sql/handler.h
+1
-1
sql/log.cc
sql/log.cc
+11
-4
sql/mysql_priv.h
sql/mysql_priv.h
+1
-1
sql/mysqld.cc
sql/mysqld.cc
+6
-4
sql/sql_select.cc
sql/sql_select.cc
+18
-9
sql/sql_yacc.yy
sql/sql_yacc.yy
+1
-1
support-files/mysql.spec.sh
support-files/mysql.spec.sh
+7
-1
No files found.
mysql-test/mysql-test-run.sh
View file @
1b6b5e88
...
...
@@ -202,6 +202,7 @@ MASTER_MYPORT=9306
SLAVE_RUNNING
=
0
SLAVE_MYPORT
=
9307
MYSQL_MANAGER_PORT
=
9305
# needs to be out of the way of slaves
NDBCLUSTER_PORT
=
9350
MYSQL_MANAGER_PW_FILE
=
$MYSQL_TEST_DIR
/var/tmp/manager.pwd
MYSQL_MANAGER_LOG
=
$MYSQL_TEST_DIR
/var/log/manager.log
MYSQL_MANAGER_USER
=
root
...
...
@@ -258,6 +259,7 @@ while test $# -gt 0; do
--master_port
=
*
)
MASTER_MYPORT
=
`
$ECHO
"
$1
"
|
$SED
-e
"s;--master_port=;;"
`
;;
--slave_port
=
*
)
SLAVE_MYPORT
=
`
$ECHO
"
$1
"
|
$SED
-e
"s;--slave_port=;;"
`
;;
--manager-port
=
*
)
MYSQL_MANAGER_PORT
=
`
$ECHO
"
$1
"
|
$SED
-e
"s;--manager_port=;;"
`
;;
--ndbcluster_port
=
*
)
NDBCLUSTER_PORT
=
`
$ECHO
"
$1
"
|
$SED
-e
"s;--ndbcluster_port=;;"
`
;;
--with-openssl
)
EXTRA_MASTER_MYSQLD_OPT
=
"
$EXTRA_MASTER_MYSQLD_OPT
\
--ssl-ca=
$BASEDIR
/SSL/cacert.pem
\
...
...
@@ -1426,7 +1428,7 @@ then
if
[
-z
"
$USE_RUNNING_NDBCLUSTER
"
]
then
# Kill any running ndbcluster stuff
./ndb/ndbcluster
--stop
./ndb/ndbcluster
--
port-base
=
$NDBCLUSTER_PORT
--
stop
fi
fi
...
...
@@ -1447,7 +1449,7 @@ then
if
[
-z
"
$USE_RUNNING_NDBCLUSTER
"
]
then
echo
"Starting ndbcluster"
./ndb/ndbcluster
--small
--discless
--initial
--data-dir
=
$MYSQL_TEST_DIR
/var
||
exit
1
./ndb/ndbcluster
--
port-base
=
$NDBCLUSTER_PORT
--
small
--discless
--initial
--data-dir
=
$MYSQL_TEST_DIR
/var
||
exit
1
export
NDB_CONNECTSTRING
=
`
cat
Ndb.cfg
`
else
export
NDB_CONNECTSTRING
=
"
$USE_RUNNING_NDBCLUSTER
"
...
...
@@ -1547,7 +1549,7 @@ then
if
[
-z
"
$USE_RUNNING_NDBCLUSTER
"
]
then
# Kill any running ndbcluster stuff
./ndb/ndbcluster
--stop
./ndb/ndbcluster
--
port-base
=
$NDBCLUSTER_PORT
--
stop
fi
fi
...
...
mysql-test/ndb/ndb_config_2_node.ini
View file @
1b6b5e88
...
...
@@ -43,9 +43,7 @@ HostName: CHOOSE_HOSTNAME_7
[MGM]
Id:
1
ExecuteOnComputer:
1
PortNumber:
CHOOSE_PORT_BASE00
PortNumberStats:
CHOOSE_PORT_BASE01
PortNumber:
CHOOSE_PORT_MGM
[DB]
Id:
2
...
...
@@ -74,4 +72,4 @@ Id: 14
ExecuteOnComputer:
7
[TCP DEFAULT]
PortNumber:
CHOOSE_PORT_
BASE02
PortNumber:
CHOOSE_PORT_
TRANSPORTER
mysql-test/ndb/ndbcluster.sh
View file @
1b6b5e88
...
...
@@ -5,7 +5,7 @@
# This scripts starts the table handler ndbcluster
# configurable parameters, make sure to change in mysqlcluterd as well
port_base
=
"22
"
# using ports port_base{"00","01", etc}
port_base
=
"22
00"
fsdir
=
`
pwd
`
# end configurable parameters
...
...
@@ -85,8 +85,8 @@ fs_ndb=$fsdir/ndbcluster
fs_mgm_1
=
$fs_ndb
/1.ndb_mgm
fs_ndb_2
=
$fs_ndb
/2.ndb_db
fs_ndb_3
=
$fs_ndb
/3.ndb_db
fs_name_2
=
$fs_ndb
/node-2-fs
fs_name_3
=
$fs_ndb
/node-3-fs
fs_name_2
=
$fs_ndb
/node-2-fs
-
$port_base
fs_name_3
=
$fs_ndb
/node-3-fs
-
$port_base
NDB_HOME
=
export
NDB_CONNECTSTRING
...
...
@@ -125,8 +125,9 @@ fi
# set som help variables
ndb_host
=
"localhost"
ndb_port
=
$port_base
"00"
NDB_CONNECTSTRING_BASE
=
"host=
$ndb_host
:
$ndb_port
;nodeid="
ndb_mgmd_port
=
$port_base
port_transporter
=
`
expr
$ndb_mgmd_port
+ 2
`
NDB_CONNECTSTRING_BASE
=
"host=
$ndb_host
:
$ndb_mgmd_port
;nodeid="
# Start management server as deamon
...
...
@@ -145,7 +146,8 @@ sed \
-e
s,
"CHOOSE_HOSTNAME_"
.
*
,
"
$ndb_host
"
,g
\
-e
s,
"CHOOSE_FILESYSTEM_NODE_2"
,
"
$fs_name_2
"
,g
\
-e
s,
"CHOOSE_FILESYSTEM_NODE_3"
,
"
$fs_name_3
"
,g
\
-e
s,
"CHOOSE_PORT_BASE"
,
$port_base
,g
\
-e
s,
"CHOOSE_PORT_MGM"
,
$ndb_mgmd_port
,g
\
-e
s,
"CHOOSE_PORT_TRANSPORTER"
,
$port_transporter
,g
\
< ndb/ndb_config_2_node.ini
\
>
"
$fs_mgm_1
/config.ini"
fi
...
...
@@ -195,7 +197,7 @@ status_ndbcluster
status_ndbcluster
()
{
# Start management client
echo
"show"
|
$exec_mgmtclient
$ndb_host
$ndb_port
echo
"show"
|
$exec_mgmtclient
$ndb_host
$ndb_
mgmd_
port
}
stop_default_ndbcluster
()
{
...
...
@@ -210,11 +212,11 @@ if [ ! -f $cfgfile ] ; then
fi
ndb_host
=
`
cat
$cfgfile
|
sed
-e
"s,.*host=
\(
.*
\)\:
.*,
\1
,1"
`
ndb_port
=
`
cat
$cfgfile
|
sed
-e
"s,.*host=
$ndb_host
\:\(
[0-9]*
\)
.*,
\1
,1"
`
ndb_
mgmd_
port
=
`
cat
$cfgfile
|
sed
-e
"s,.*host=
$ndb_host
\:\(
[0-9]*
\)
.*,
\1
,1"
`
# Start management client
exec_mgmtclient
=
"
$exec_mgmtclient
--try-reconnect=1
$ndb_host
$ndb_port
"
exec_mgmtclient
=
"
$exec_mgmtclient
--try-reconnect=1
$ndb_host
$ndb_
mgmd_
port
"
echo
"
$exec_mgmtclient
"
echo
"all stop"
|
$exec_mgmtclient
...
...
mysql-test/r/alter_table.result
View file @
1b6b5e88
...
...
@@ -470,3 +470,9 @@ t1 CREATE TABLE `t1` (
ALTER TABLE t1 DROP PRIMARY KEY;
ERROR 42000: Can't DROP 'PRIMARY'; check that column/key exists
DROP TABLE t1;
create table t1 (a int, b int, key(a));
insert into t1 values (1,1), (2,2);
alter table t1 drop key no_such_key;
ERROR 42000: Can't DROP 'no_such_key'; check that column/key exists
alter table t1 drop key a;
drop table t1;
mysql-test/r/ndb_autodiscover2.result
View file @
1b6b5e88
select * from t9;
select * from t9
order by a
;
a b
1 2
2 3
4 5
3 4
1 2
4 5
show status like 'handler_discover%';
Variable_name Value
Handler_discover 1
...
...
mysql-test/t/alter_table.test
View file @
1b6b5e88
...
...
@@ -304,3 +304,11 @@ SHOW CREATE TABLE t1;
--
error
1091
ALTER
TABLE
t1
DROP
PRIMARY
KEY
;
DROP
TABLE
t1
;
# BUG#3899
create
table
t1
(
a
int
,
b
int
,
key
(
a
));
insert
into
t1
values
(
1
,
1
),
(
2
,
2
);
--
error
1091
alter
table
t1
drop
key
no_such_key
;
alter
table
t1
drop
key
a
;
drop
table
t1
;
mysql-test/t/ndb_autodiscover2.test
View file @
1b6b5e88
...
...
@@ -5,7 +5,7 @@
# The previous step has simply removed the frm file
# from disk, but left the table in NDB
#
select
*
from
t9
;
select
*
from
t9
order
by
a
;
# handler_discover should be zero
show
status
like
'handler_discover%'
;
...
...
ndb/src/kernel/SimBlockList.cpp
View file @
1b6b5e88
...
...
@@ -34,6 +34,9 @@
#include <Dbtux.hpp>
#include <NdbEnv.h>
#ifndef VM_TRACE
#define NEW_BLOCK(B) new B
#else
enum
SIMBLOCKLIST_DUMMY
{
A_VALUE
=
0
};
static
...
...
@@ -60,13 +63,13 @@ void * operator new (size_t sz, SIMBLOCKLIST_DUMMY dummy){
return
tmp
;
}
#define NEW_BLOCK(B) new(A_VALUE) B
#endif
void
SimBlockList
::
load
(
const
Configuration
&
conf
){
noOfBlocks
=
16
;
theList
=
new
SimulatedBlock
*
[
noOfBlocks
];
for
(
int
i
=
0
;
i
<
noOfBlocks
;
i
++
)
theList
[
i
]
=
0
;
Dbdict
*
dbdict
=
0
;
Dbdih
*
dbdih
=
0
;
...
...
@@ -75,28 +78,28 @@ SimBlockList::load(const Configuration & conf){
Uint32
dl
;
const
ndb_mgm_configuration_iterator
*
p
=
conf
.
getOwnConfigIterator
();
if
(
p
&&
!
ndb_mgm_get_int_parameter
(
p
,
CFG_DB_DISCLESS
,
&
dl
)
&&
dl
){
fs
=
new
(
A_VALUE
)
VoidFs
(
conf
);
fs
=
NEW_BLOCK
(
VoidFs
)
(
conf
);
}
else
{
fs
=
new
(
A_VALUE
)
Ndbfs
(
conf
);
fs
=
NEW_BLOCK
(
Ndbfs
)
(
conf
);
}
}
theList
[
0
]
=
new
(
A_VALUE
)
Dbacc
(
conf
);
theList
[
1
]
=
new
(
A_VALUE
)
Cmvmi
(
conf
);
theList
[
0
]
=
NEW_BLOCK
(
Dbacc
)
(
conf
);
theList
[
1
]
=
NEW_BLOCK
(
Cmvmi
)
(
conf
);
theList
[
2
]
=
fs
;
theList
[
3
]
=
dbdict
=
new
(
A_VALUE
)
Dbdict
(
conf
);
theList
[
4
]
=
dbdih
=
new
(
A_VALUE
)
Dbdih
(
conf
);
theList
[
5
]
=
new
(
A_VALUE
)
Dblqh
(
conf
);
theList
[
6
]
=
new
(
A_VALUE
)
Dbtc
(
conf
);
theList
[
7
]
=
new
(
A_VALUE
)
Dbtup
(
conf
);
theList
[
8
]
=
new
(
A_VALUE
)
Ndbcntr
(
conf
);
theList
[
9
]
=
new
(
A_VALUE
)
Qmgr
(
conf
);
theList
[
10
]
=
new
(
A_VALUE
)
Trix
(
conf
);
theList
[
11
]
=
new
(
A_VALUE
)
Backup
(
conf
);
theList
[
12
]
=
new
(
A_VALUE
)
DbUtil
(
conf
);
theList
[
13
]
=
new
(
A_VALUE
)
Suma
(
conf
);
theList
[
14
]
=
new
(
A_VALUE
)
Grep
(
conf
);
theList
[
15
]
=
new
(
A_VALUE
)
Dbtux
(
conf
);
theList
[
3
]
=
dbdict
=
NEW_BLOCK
(
Dbdict
)
(
conf
);
theList
[
4
]
=
dbdih
=
NEW_BLOCK
(
Dbdih
)
(
conf
);
theList
[
5
]
=
NEW_BLOCK
(
Dblqh
)
(
conf
);
theList
[
6
]
=
NEW_BLOCK
(
Dbtc
)
(
conf
);
theList
[
7
]
=
NEW_BLOCK
(
Dbtup
)
(
conf
);
theList
[
8
]
=
NEW_BLOCK
(
Ndbcntr
)
(
conf
);
theList
[
9
]
=
NEW_BLOCK
(
Qmgr
)
(
conf
);
theList
[
10
]
=
NEW_BLOCK
(
Trix
)
(
conf
);
theList
[
11
]
=
NEW_BLOCK
(
Backup
)
(
conf
);
theList
[
12
]
=
NEW_BLOCK
(
DbUtil
)
(
conf
);
theList
[
13
]
=
NEW_BLOCK
(
Suma
)
(
conf
);
theList
[
14
]
=
NEW_BLOCK
(
Grep
)
(
conf
);
theList
[
15
]
=
NEW_BLOCK
(
Dbtux
)
(
conf
);
// Metadata common part shared by block instances
ptrMetaDataCommon
=
new
MetaData
::
Common
(
*
dbdict
,
*
dbdih
);
...
...
ndb/src/ndbapi/Ndb.cpp
View file @
1b6b5e88
...
...
@@ -38,10 +38,6 @@ Name: Ndb.cpp
#include <NdbEnv.h>
#include <BaseString.hpp>
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
/****************************************************************************
void connect();
...
...
@@ -1028,18 +1024,14 @@ const char * Ndb::getCatalogName() const
void
Ndb
::
setCatalogName
(
const
char
*
a_catalog_name
)
{
if
(
a_catalog_name
)
{
strncpy
(
theDataBase
,
a_catalog_name
,
NDB_MAX_DATABASE_NAME_SIZE
);
// Prepare prefix for faster operations
uint
db_len
=
MIN
(
strlen
(
theDataBase
),
NDB_MAX_DATABASE_NAME_SIZE
-
1
);
uint
schema_len
=
MIN
(
strlen
(
theDataBaseSchema
),
NDB_MAX_SCHEMA_NAME_SIZE
-
1
);
strncpy
(
prefixName
,
theDataBase
,
NDB_MAX_DATABASE_NAME_SIZE
-
1
);
prefixName
[
db_len
]
=
table_name_separator
;
strncpy
(
prefixName
+
db_len
+
1
,
theDataBaseSchema
,
NDB_MAX_SCHEMA_NAME_SIZE
-
1
);
prefixName
[
db_len
+
schema_len
+
1
]
=
table_name_separator
;
prefixName
[
db_len
+
schema_len
+
2
]
=
'\0'
;
prefixEnd
=
prefixName
+
db_len
+
schema_len
+
2
;
snprintf
(
theDataBase
,
sizeof
(
theDataBase
),
"%s"
,
a_catalog_name
?
a_catalog_name
:
""
);
int
len
=
snprintf
(
prefixName
,
sizeof
(
prefixName
),
"%s%c%s%c"
,
theDataBase
,
table_name_separator
,
theDataBaseSchema
,
table_name_separator
);
prefixEnd
=
prefixName
+
(
len
<
sizeof
(
prefixName
)
?
len
:
sizeof
(
prefixName
)
-
1
);
}
}
...
...
@@ -1051,18 +1043,14 @@ const char * Ndb::getSchemaName() const
void
Ndb
::
setSchemaName
(
const
char
*
a_schema_name
)
{
if
(
a_schema_name
)
{
strncpy
(
theDataBaseSchema
,
a_schema_name
,
NDB_MAX_SCHEMA_NAME_SIZE
);
// Prepare prefix for faster operations
uint
db_len
=
MIN
(
strlen
(
theDataBase
),
NDB_MAX_DATABASE_NAME_SIZE
-
1
);
uint
schema_len
=
MIN
(
strlen
(
theDataBaseSchema
),
NDB_MAX_SCHEMA_NAME_SIZE
-
1
);
strncpy
(
prefixName
,
theDataBase
,
NDB_MAX_DATABASE_NAME_SIZE
-
1
);
prefixName
[
db_len
]
=
table_name_separator
;
strncpy
(
prefixName
+
db_len
+
1
,
theDataBaseSchema
,
NDB_MAX_SCHEMA_NAME_SIZE
-
1
);
prefixName
[
db_len
+
schema_len
+
1
]
=
table_name_separator
;
prefixName
[
db_len
+
schema_len
+
2
]
=
'\0'
;
prefixEnd
=
prefixName
+
db_len
+
schema_len
+
2
;
snprintf
(
theDataBaseSchema
,
sizeof
(
theDataBase
),
"%s"
,
a_schema_name
?
a_schema_name
:
""
);
int
len
=
snprintf
(
prefixName
,
sizeof
(
prefixName
),
"%s%c%s%c"
,
theDataBase
,
table_name_separator
,
theDataBaseSchema
,
table_name_separator
);
prefixEnd
=
prefixName
+
(
len
<
sizeof
(
prefixName
)
?
len
:
sizeof
(
prefixName
)
-
1
);
}
}
...
...
ndb/src/ndbapi/Ndbinit.cpp
View file @
1b6b5e88
...
...
@@ -56,7 +56,7 @@ Ndb(const char* aDataBase);
Parameters: aDataBase : Name of the database.
Remark: Connect to the database.
***************************************************************************/
Ndb
::
Ndb
(
const
char
*
aDataBase
,
const
char
*
a
DataBase
Schema
)
:
Ndb
::
Ndb
(
const
char
*
aDataBase
,
const
char
*
aSchema
)
:
theNdbObjectIdMap
(
0
),
thePreparedTransactionsArray
(
NULL
),
theSentTransactionsArray
(
NULL
),
...
...
@@ -121,22 +121,16 @@ Ndb::Ndb( const char* aDataBase , const char* aDataBaseSchema) :
theLastTupleId
[
i
]
=
0
;
}
//for
if
(
aDataBase
)
strncpy
(
theDataBase
,
aDataBase
,
NDB_MAX_DATABASE_NAME_SIZE
);
else
memset
(
theDataBase
,
0
,
sizeof
(
theDataBase
));
strncpy
(
theDataBaseSchema
,
aDataBaseSchema
,
NDB_MAX_SCHEMA_NAME_SIZE
);
// Prepare prefix for faster operations
uint
db_len
=
MIN
(
strlen
(
theDataBase
),
NDB_MAX_DATABASE_NAME_SIZE
-
1
);
uint
schema_len
=
MIN
(
strlen
(
theDataBaseSchema
),
NDB_MAX_SCHEMA_NAME_SIZE
-
1
);
strncpy
(
prefixName
,
theDataBase
,
NDB_MAX_DATABASE_NAME_SIZE
-
1
);
prefixName
[
db_len
]
=
table_name_separator
;
strncpy
(
prefixName
+
db_len
+
1
,
theDataBaseSchema
,
NDB_MAX_SCHEMA_NAME_SIZE
-
1
);
prefixName
[
db_len
+
schema_len
+
1
]
=
table_name_separator
;
prefixName
[
db_len
+
schema_len
+
2
]
=
'\0'
;
prefixEnd
=
prefixName
+
db_len
+
schema_len
+
2
;
snprintf
(
theDataBase
,
sizeof
(
theDataBase
),
"%s"
,
aDataBase
?
aDataBase
:
""
);
snprintf
(
theDataBaseSchema
,
sizeof
(
theDataBaseSchema
),
"%s"
,
aSchema
?
aSchema
:
""
);
int
len
=
snprintf
(
prefixName
,
sizeof
(
prefixName
),
"%s%c%s%c"
,
theDataBase
,
table_name_separator
,
theDataBaseSchema
,
table_name_separator
);
prefixEnd
=
prefixName
+
(
len
<
sizeof
(
prefixName
)
?
len
:
sizeof
(
prefixName
)
-
1
);
NdbMutex_Lock
(
&
createNdbMutex
);
...
...
scripts/make_binary_distribution.sh
View file @
1b6b5e88
...
...
@@ -103,7 +103,7 @@ BIN_FILES="extra/comp_err$BS extra/replace$BS extra/perror$BS \
isam/isamchk
$BS
isam/pack_isam
$BS
\
myisam/myisamchk
$BS
myisam/myisampack
$BS
myisam/myisamlog
$BS
\
myisam/myisam_ftdump
$BS
\
sql/mysqld
$BS
\
sql/mysqld
$BS
sql/mysql_tzinfo_to_sql
$BS
\
client/mysql
$BS
client/mysqlshow
$BS
client/mysqladmin
$BS
\
client/mysqldump
$BS
client/mysqlimport
$BS
\
client/mysqltest
$BS
client/mysqlcheck
$BS
\
...
...
sql/handler.cc
View file @
1b6b5e88
...
...
@@ -385,8 +385,14 @@ int ha_report_binlog_offset_and_commit(THD *thd,
#ifdef HAVE_INNOBASE_DB
THD_TRANS
*
trans
;
trans
=
&
thd
->
transaction
.
all
;
if
(
trans
->
inno
base_tid
)
if
(
trans
->
inno
db_active_trans
)
{
/*
If we updated some InnoDB tables (innodb_active_trans is true), the
binlog coords will be reported into InnoDB during the InnoDB commit
(innobase_report_binlog_offset_and_commit). But if we updated only
non-InnoDB tables, we need an explicit call to report it.
*/
if
((
error
=
innobase_report_binlog_offset_and_commit
(
thd
,
trans
->
innobase_tid
,
log_file_name
,
...
...
@@ -396,6 +402,8 @@ int ha_report_binlog_offset_and_commit(THD *thd,
error
=
1
;
}
}
else
if
(
opt_innodb_safe_binlog
)
// Don't report if not useful
innobase_store_binlog_offset_and_flush_log
(
log_file_name
,
end_offset
);
#endif
return
error
;
}
...
...
sql/handler.h
View file @
1b6b5e88
...
...
@@ -283,7 +283,7 @@ public:
create_time
(
0
),
check_time
(
0
),
update_time
(
0
),
key_used_on_scan
(
MAX_KEY
),
active_index
(
MAX_KEY
),
ref_length
(
sizeof
(
my_off_t
)),
block_size
(
0
),
raid_type
(
0
),
ft_handler
(
0
),
i
mplicit_emptied
(
0
),
inited
(
NONE
)
raid_type
(
0
),
ft_handler
(
0
),
i
nited
(
NONE
),
implicit_emptied
(
0
)
{}
virtual
~
handler
(
void
)
{
/* TODO: DBUG_ASSERT(inited == NONE); */
}
int
ha_open
(
const
char
*
name
,
int
mode
,
int
test_if_locked
);
...
...
sql/log.cc
View file @
1b6b5e88
...
...
@@ -2073,9 +2073,9 @@ bool MYSQL_LOG::cut_spurious_tail()
name
);
DBUG_RETURN
(
1
);
}
sql_print_error
(
"After InnoDB crash recovery,
trying to truncate
"
"
the binary log '%s' at position %s corresponding to th
e "
"
last committed transaction..."
,
name
,
llstr
(
pos
,
llbuf1
)
);
sql_print_error
(
"After InnoDB crash recovery,
checking if the binary log
"
"
'%s' contains rolled back transactions which must b
e "
"
removed from it..."
,
name
);
/* If we have a too long binlog, cut. If too short, print error */
int
fd
=
my_open
(
name
,
O_EXCL
|
O_APPEND
|
O_BINARY
|
O_WRONLY
,
MYF
(
MY_WME
));
if
(
fd
<
0
)
...
...
@@ -2091,10 +2091,17 @@ bool MYSQL_LOG::cut_spurious_tail()
if
(
pos
>
(
actual_size
=
my_seek
(
fd
,
0L
,
MY_SEEK_END
,
MYF
(
MY_WME
))))
{
/*
Note that when we have MyISAM rollback this error message should be
reconsidered.
*/
sql_print_error
(
"The binary log '%s' is shorter than its expected size "
"(actual: %s, expected: %s) so it misses at least one "
"committed transaction; so it should not be used for "
"replication."
,
name
,
llstr
(
actual_size
,
llbuf1
),
"replication or point-in-time recovery. You would need "
"to restart slaves from a fresh master's data "
"snapshot "
,
name
,
llstr
(
actual_size
,
llbuf1
),
llstr
(
pos
,
llbuf2
));
error
=
1
;
goto
err
;
...
...
sql/mysql_priv.h
View file @
1b6b5e88
...
...
@@ -869,7 +869,7 @@ extern ulong rpl_recovery_rank, thread_cache_size;
extern
ulong
com_stat
[(
uint
)
SQLCOM_END
],
com_other
,
back_log
;
extern
ulong
specialflag
,
current_pid
;
extern
ulong
expire_logs_days
,
sync_binlog_period
,
sync_binlog_counter
;
extern
my_bool
relay_log_purge
;
extern
my_bool
relay_log_purge
,
opt_innodb_safe_binlog
;
extern
uint
test_flags
,
select_errors
,
ha_open_options
;
extern
uint
protocol_version
,
mysqld_port
,
dropping_tables
;
extern
uint
delay_key_write_options
,
lower_case_table_names
;
...
...
sql/mysqld.cc
View file @
1b6b5e88
...
...
@@ -2538,6 +2538,9 @@ server.");
if
(
opt_innodb_safe_binlog
)
{
if
(
have_innodb
!=
SHOW_OPTION_YES
)
sql_print_error
(
"Warning: --innodb-safe-binlog is meaningful only if "
"the InnoDB storage engine is enabled in the server."
);
if
(
innobase_flush_log_at_trx_commit
!=
1
)
{
sql_print_error
(
"Warning: --innodb-safe-binlog is meaningful only if "
...
...
@@ -4633,7 +4636,7 @@ replicating a LOAD DATA INFILE command.",
enough, as then user can't set it to 1 so it will always be ignored in the
rest of code.
*/
#if MYSQL_VERSION_ID > 40103
#if MYSQL_VERSION_ID >
=
40103
/*
innodb_safe_binlog is not a variable, just an option. Does not make
sense to make it a variable, as it is only used at startup (and so the
...
...
@@ -4641,9 +4644,8 @@ replicating a LOAD DATA INFILE command.",
effect).
*/
{
"innodb_safe_binlog"
,
OPT_INNODB_SAFE_BINLOG
,
"After a crash recovery by InnoDB, truncate the binary log to the last \
InnoDB committed transaction. Use only if this server updates ONLY InnoDB \
tables."
,
"After a crash recovery by InnoDB, truncate the binary log after the last "
"not-rolled-back statement/transaction."
,
(
gptr
*
)
&
opt_innodb_safe_binlog
,
(
gptr
*
)
&
opt_innodb_safe_binlog
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
1
,
0
,
1
,
0
},
#endif
...
...
sql/sql_select.cc
View file @
1b6b5e88
...
...
@@ -131,7 +131,8 @@ static int remove_dup_with_hash_index(THD *thd,TABLE *table,
static
int
join_init_cache
(
THD
*
thd
,
JOIN_TAB
*
tables
,
uint
table_count
);
static
ulong
used_blob_length
(
CACHE_FIELD
**
ptr
);
static
bool
store_record_in_cache
(
JOIN_CACHE
*
cache
);
static
void
reset_cache
(
JOIN_CACHE
*
cache
);
static
void
reset_cache_read
(
JOIN_CACHE
*
cache
);
static
void
reset_cache_write
(
JOIN_CACHE
*
cache
);
static
void
read_cached_record
(
JOIN_TAB
*
tab
);
static
bool
cmp_buffer_with_ref
(
JOIN_TAB
*
tab
);
static
bool
setup_new_fields
(
THD
*
thd
,
TABLE_LIST
*
tables
,
List
<
Item
>
&
fields
,
...
...
@@ -5843,8 +5844,7 @@ flush_cached_records(JOIN *join,JOIN_TAB *join_tab,bool skip_last)
/* read through all records */
if
((
error
=
join_init_read_record
(
join_tab
)))
{
reset_cache
(
&
join_tab
->
cache
);
join_tab
->
cache
.
records
=
0
;
join_tab
->
cache
.
ptr_record
=
(
uint
)
~
0
;
reset_cache_write
(
&
join_tab
->
cache
);
return
-
error
;
/* No records or error */
}
...
...
@@ -5867,21 +5867,23 @@ flush_cached_records(JOIN *join,JOIN_TAB *join_tab,bool skip_last)
!
join_tab
->
cache
.
select
->
skip_record
()))
{
uint
i
;
reset_cache
(
&
join_tab
->
cache
);
reset_cache
_read
(
&
join_tab
->
cache
);
for
(
i
=
(
join_tab
->
cache
.
records
-
(
skip_last
?
1
:
0
))
;
i
--
>
0
;)
{
read_cached_record
(
join_tab
);
if
(
!
select
||
!
select
->
skip_record
())
if
((
error
=
(
join_tab
->
next_select
)(
join
,
join_tab
+
1
,
0
))
<
0
)
{
reset_cache_write
(
&
join_tab
->
cache
);
return
error
;
/* purecov: inspected */
}
}
}
}
while
(
!
(
error
=
info
->
read_record
(
info
)));
if
(
skip_last
)
read_cached_record
(
join_tab
);
// Restore current record
reset_cache
(
&
join_tab
->
cache
);
join_tab
->
cache
.
records
=
0
;
join_tab
->
cache
.
ptr_record
=
(
uint
)
~
0
;
reset_cache_write
(
&
join_tab
->
cache
);
if
(
error
>
0
)
// Fatal error
return
-
1
;
/* purecov: inspected */
for
(
JOIN_TAB
*
tmp2
=
join
->
join_tab
;
tmp2
!=
join_tab
;
tmp2
++
)
...
...
@@ -7776,7 +7778,6 @@ join_init_cache(THD *thd,JOIN_TAB *tables,uint table_count)
}
}
cache
->
records
=
0
;
cache
->
ptr_record
=
(
uint
)
~
0
;
cache
->
length
=
length
+
blobs
*
sizeof
(
char
*
);
cache
->
blobs
=
blobs
;
*
blob_ptr
=
0
;
/* End sequentel */
...
...
@@ -7784,7 +7785,7 @@ join_init_cache(THD *thd,JOIN_TAB *tables,uint table_count)
if
(
!
(
cache
->
buff
=
(
uchar
*
)
my_malloc
(
size
,
MYF
(
0
))))
DBUG_RETURN
(
1
);
/* Don't use cache */
/* purecov: inspected */
cache
->
end
=
cache
->
buff
+
size
;
reset_cache
(
cache
);
reset_cache
_write
(
cache
);
DBUG_RETURN
(
0
);
}
...
...
@@ -7868,13 +7869,21 @@ store_record_in_cache(JOIN_CACHE *cache)
static
void
reset_cache
(
JOIN_CACHE
*
cache
)
reset_cache
_read
(
JOIN_CACHE
*
cache
)
{
cache
->
record_nr
=
0
;
cache
->
pos
=
cache
->
buff
;
}
static
void
reset_cache_write
(
JOIN_CACHE
*
cache
)
{
reset_cache_read
(
cache
);
cache
->
records
=
0
;
cache
->
ptr_record
=
(
uint
)
~
0
;
}
static
void
read_cached_record
(
JOIN_TAB
*
tab
)
{
...
...
sql/sql_yacc.yy
View file @
1b6b5e88
...
...
@@ -1817,7 +1817,7 @@ alter:
lex->create_info.db_type= DB_TYPE_DEFAULT;
lex->create_info.default_table_charset= thd->variables.collation_database;
lex->create_info.row_type= ROW_TYPE_NOT_USED;
lex->alter_info.
clear
();
lex->alter_info.
reset
();
lex->alter_info.is_simple= 1;
lex->alter_info.flags= 0;
}
...
...
support-files/mysql.spec.sh
View file @
1b6b5e88
...
...
@@ -292,7 +292,7 @@ install -m 644 libmysqld/libmysqld.a $RBR%{_libdir}/mysql
# Save manual to avoid rebuilding
mv
Docs/manual.ps Docs/manual.ps.save
make
dist
clean
make clean
mv
Docs/manual.ps.save Docs/manual.ps
# RPM:s destroys Makefile.in files, so we generate them here
...
...
@@ -482,6 +482,7 @@ fi
%attr
(
755, root, root
)
%
{
_bindir
}
/mysql_install_db
%attr
(
755, root, root
)
%
{
_bindir
}
/mysql_secure_installation
%attr
(
755, root, root
)
%
{
_bindir
}
/mysql_setpermission
%attr
(
755, root, root
)
%
{
_bindir
}
/mysql_tzinfo_to_sql
%attr
(
755, root, root
)
%
{
_bindir
}
/mysql_zap
%attr
(
755, root, root
)
%
{
_bindir
}
/mysqlbug
%attr
(
755, root, root
)
%
{
_bindir
}
/mysqld_multi
...
...
@@ -578,6 +579,11 @@ fi
# The spec file changelog only includes changes made to the spec file
# itself
%changelog
*
Thu Jun 24 2004 Lenz Grimmer <lenz@mysql.com>
- added mysql_tzinfo_to_sql to the server subpackage
- run
"make clean"
instead of
"make distclean"
*
Mon Apr 05 2004 Lenz Grimmer <lenz@mysql.com>
- added ncurses-devel to the build prerequisites
(
BUG 3377
)
...
...
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