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
6a1b08cb
Commit
6a1b08cb
authored
Jan 30, 2002
by
monty@hundin.mysql.fi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added --sql-mode=NO_UNSIGNED_SUBTRACTION
parent
2c24b6fb
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
53 additions
and
20 deletions
+53
-20
Docs/manual.texi
Docs/manual.texi
+20
-6
sql/item_func.cc
sql/item_func.cc
+15
-0
sql/item_func.h
sql/item_func.h
+2
-0
sql/mysql_priv.h
sql/mysql_priv.h
+7
-6
sql/mysqld.cc
sql/mysqld.cc
+3
-3
sql/slave.cc
sql/slave.cc
+1
-2
sql/slave.h
sql/slave.h
+1
-1
sql/sql_rename.cc
sql/sql_rename.cc
+4
-2
No files found.
Docs/manual.texi
View file @
6a1b08cb
...
@@ -8133,15 +8133,17 @@ than it had in 3.23.
...
@@ -8133,15 +8133,17 @@ than it had in 3.23.
@item
@item
The result of all bitwise operators @code{|}, @code{&}, @code{<<},
The result of all bitwise operators @code{|}, @code{&}, @code{<<},
@code{>>} and @code{~} is now unsigned. This may cause problems if your
@code{>>} and @code{~} is now unsigned. This may cause problems if your
are using them in a context where you want an signed result.
@xref{Cast
are using them in a context where you want an signed result.
Functions}.
@xref{Cast
Functions}.
@item
@item
@strong{NOTE:} When you use subtraction between integers values where
@strong{NOTE:} When you use subtraction between integers values where
one is of type @code{UNSIGNED}, the result will be unsigned! In other
one is of type @code{UNSIGNED}, the result will be unsigned! In other
words, before upgrading to MySQL 4.0, you should check your application
words, before upgrading to MySQL 4.0, you should check your application
for cases where you are subtracting a value from an unsigned entity
for cases where you are subtracting a value from an unsigned entity and
and want a negative answer or subtracting an unsigned value from a an
want a negative answer or subtracting an unsigned value from a an
integer column. @xref{Cast Functions}.
integer column. You can disable this behaviour by using the
@code{--sql-mode=NO_UNSIGNED_SUBTRACTION} option when starting
@code{mysqld}. @xref{Cast Functions}.
@item
@item
To use @code{MATCH ... AGAINST (... IN BOOLEAN MODE)} with your tables,
To use @code{MATCH ... AGAINST (... IN BOOLEAN MODE)} with your tables,
you need to rebuild them with @code{ALTER TABLE table_name TYPE=MyISAM},
you need to rebuild them with @code{ALTER TABLE table_name TYPE=MyISAM},
...
@@ -19873,6 +19875,8 @@ Means that the thread is flushing the changed table data to disk and
...
@@ -19873,6 +19875,8 @@ Means that the thread is flushing the changed table data to disk and
closing the used tables. This should be a fast operation. If not, then
closing the used tables. This should be a fast operation. If not, then
you should check that you don't have a full disk or that the disk is not
you should check that you don't have a full disk or that the disk is not
in very heavy use.
in very heavy use.
@item @code{Connect Out}
Slave connecting to master.
@item @code{Copying to tmp table on disk}
@item @code{Copying to tmp table on disk}
The temporary result set was larger than @code{tmp_table_size} and the
The temporary result set was larger than @code{tmp_table_size} and the
thread is now changing the in memory based temporary table to a disk
thread is now changing the in memory based temporary table to a disk
...
@@ -32000,6 +32004,12 @@ SELECT (unsigned_column_1+0.0)-(unsigned_column_2+0.0);
...
@@ -32000,6 +32004,12 @@ SELECT (unsigned_column_1+0.0)-(unsigned_column_2+0.0);
The idea is that the columns are converted to floating point before doing
The idea is that the columns are converted to floating point before doing
the subtraction.
the subtraction.
If you get a problem with @code{UNSIGNED} columns in your old MySQL
application when porting to MySQL 4.0, you can use the
@code{--sql-mode=NO_UNSIGNED_SUBTRACTION} option when starting
@code{mysqld}. Note however that as long as you use this, you will not
be able to efficiently use the @code{UNSIGNED BIGINT} column type.
@node Other Functions, Group by functions, Cast Functions, Functions
@node Other Functions, Group by functions, Cast Functions, Functions
@subsection Other Functions
@subsection Other Functions
...
@@ -48361,6 +48371,10 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
...
@@ -48361,6 +48371,10 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
@itemize @bullet
@itemize @bullet
@item
@item
Added sql-mode flag @code{NO_UNSIGNED_SUBTRACTION} to disable unsigned
arithmetic rules when it comes to subtraction. (This will make MySQL 4.0
behave more closely to 3.23 with @code{UNSIGNED} columns).
@item
Added @code{WITH MAX_QUERIES_PER_HOUR=#} to @code{GRANT} command.
Added @code{WITH MAX_QUERIES_PER_HOUR=#} to @code{GRANT} command.
@item
@item
The type returned for all bit functions (@code{|}, @code{<<} ...) are now of
The type returned for all bit functions (@code{|}, @code{<<} ...) are now of
...
@@ -48473,7 +48487,7 @@ Added support for @code{MATCH ... AGAINST(... IN BOOLEAN MODE)}.
...
@@ -48473,7 +48487,7 @@ Added support for @code{MATCH ... AGAINST(... IN BOOLEAN MODE)}.
@code{ALTER TABLE tablename TYPE=MyISAM} to be
@code{ALTER TABLE tablename TYPE=MyISAM} to be
able to use boolean fulltext search}.
able to use boolean fulltext search}.
@item
@item
@code{LOCATE()} and @code{INSTR()} are
case sensitive if n
either
@code{LOCATE()} and @code{INSTR()} are
now case sensitive if
either
argument is a binary string.
argument is a binary string.
@item
@item
Changed @code{RAND()} initialization so that @code{RAND(N)} and
Changed @code{RAND()} initialization so that @code{RAND(N)} and
sql/item_func.cc
View file @
6a1b08cb
...
@@ -280,6 +280,21 @@ longlong Item_func_plus::val_int()
...
@@ -280,6 +280,21 @@ longlong Item_func_plus::val_int()
return
(
longlong
)
Item_func_plus
::
val
();
return
(
longlong
)
Item_func_plus
::
val
();
}
}
/*
The following function is here to allow the user to force
subtraction of UNSIGNED BIGINT to return negative values.
*/
void
Item_func_minus
::
fix_length_and_dec
()
{
Item_num_op
::
fix_length_and_dec
();
if
(
unsigned_flag
&&
(
current_thd
->
sql_mode
&
MODE_NO_UNSIGNED_SUBTRACTION
))
unsigned_flag
=
0
;
}
double
Item_func_minus
::
val
()
double
Item_func_minus
::
val
()
{
{
double
value
=
args
[
0
]
->
val
()
-
args
[
1
]
->
val
();
double
value
=
args
[
0
]
->
val
()
-
args
[
1
]
->
val
();
...
...
sql/item_func.h
View file @
6a1b08cb
...
@@ -233,8 +233,10 @@ public:
...
@@ -233,8 +233,10 @@ public:
const
char
*
func_name
()
const
{
return
"-"
;
}
const
char
*
func_name
()
const
{
return
"-"
;
}
double
val
();
double
val
();
longlong
val_int
();
longlong
val_int
();
void
fix_length_and_dec
();
};
};
class
Item_func_mul
:
public
Item_num_op
class
Item_func_mul
:
public
Item_num_op
{
{
public:
public:
...
...
sql/mysql_priv.h
View file @
6a1b08cb
...
@@ -181,12 +181,13 @@ char* query_table_status(THD *thd,const char *db,const char *table_name);
...
@@ -181,12 +181,13 @@ char* query_table_status(THD *thd,const char *db,const char *table_name);
#define TMP_TABLE_ALL_COLUMNS (SELECT_NO_UNLOCK*2)
#define TMP_TABLE_ALL_COLUMNS (SELECT_NO_UNLOCK*2)
#define MODE_REAL_AS_FLOAT 1
#define MODE_REAL_AS_FLOAT 1
#define MODE_PIPES_AS_CONCAT 2
#define MODE_PIPES_AS_CONCAT 2
#define MODE_ANSI_QUOTES 4
#define MODE_ANSI_QUOTES 4
#define MODE_IGNORE_SPACE 8
#define MODE_IGNORE_SPACE 8
#define MODE_SERIALIZABLE 16
#define MODE_SERIALIZABLE 16
#define MODE_ONLY_FULL_GROUP_BY 32
#define MODE_ONLY_FULL_GROUP_BY 32
#define MODE_NO_UNSIGNED_SUBTRACTION 64
#define RAID_BLOCK_SIZE 1024
#define RAID_BLOCK_SIZE 1024
...
...
sql/mysqld.cc
View file @
6a1b08cb
...
@@ -351,7 +351,7 @@ time_t start_time;
...
@@ -351,7 +351,7 @@ time_t start_time;
ulong
opt_sql_mode
=
0L
;
ulong
opt_sql_mode
=
0L
;
const
char
*
sql_mode_names
[]
=
const
char
*
sql_mode_names
[]
=
{
"REAL_AS_FLOAT"
,
"PIPES_AS_CONCAT"
,
"ANSI_QUOTES"
,
"IGNORE_SPACE"
,
{
"REAL_AS_FLOAT"
,
"PIPES_AS_CONCAT"
,
"ANSI_QUOTES"
,
"IGNORE_SPACE"
,
"SERIALIZE"
,
"ONLY_FULL_GROUP_BY"
,
NullS
};
"SERIALIZE"
,
"ONLY_FULL_GROUP_BY"
,
"NO_UNSIGNED_SUBTRACTION"
,
NullS
};
TYPELIB
sql_mode_typelib
=
{
array_elements
(
sql_mode_names
)
-
1
,
""
,
TYPELIB
sql_mode_typelib
=
{
array_elements
(
sql_mode_names
)
-
1
,
""
,
sql_mode_names
};
sql_mode_names
};
...
@@ -486,7 +486,6 @@ static void close_connections(void)
...
@@ -486,7 +486,6 @@ static void close_connections(void)
HANDLE
hTempPipe
=
&
hPipe
;
HANDLE
hTempPipe
=
&
hPipe
;
DBUG_PRINT
(
"quit"
,
(
"Closing named pipes"
)
);
DBUG_PRINT
(
"quit"
,
(
"Closing named pipes"
)
);
hPipe
=
INVALID_HANDLE_VALUE
;
hPipe
=
INVALID_HANDLE_VALUE
;
CancelIo
(
hTempPipe
);
DisconnectNamedPipe
(
hTempPipe
);
DisconnectNamedPipe
(
hTempPipe
);
CloseHandle
(
hTempPipe
);
CloseHandle
(
hTempPipe
);
}
}
...
@@ -3411,7 +3410,8 @@ static void usage(void)
...
@@ -3411,7 +3410,8 @@ static void usage(void)
-t, --tmpdir=path Path for temporary files
\n
\
-t, --tmpdir=path Path for temporary files
\n
\
--sql-mode=option[,option[,option...]] where option can be one of:
\n
\
--sql-mode=option[,option[,option...]] where option can be one of:
\n
\
REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES,
\n
\
REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES,
\n
\
IGNORE_SPACE, SERIALIZE, ONLY_FULL_GROUP_BY.
\n
\
IGNORE_SPACE, SERIALIZE, ONLY_FULL_GROUP_BY,
\n
\
NO_UNSIGNED_SUBTRACTION.
\n
\
--transaction-isolation
\n
\
--transaction-isolation
\n
\
Default transaction isolation level
\n
\
Default transaction isolation level
\n
\
--temp-pool Use a pool of temporary files
\n
\
--temp-pool Use a pool of temporary files
\n
\
...
...
sql/slave.cc
View file @
6a1b08cb
...
@@ -1541,7 +1541,7 @@ static int exec_relay_log_event(THD* thd, RELAY_LOG_INFO* rli)
...
@@ -1541,7 +1541,7 @@ static int exec_relay_log_event(THD* thd, RELAY_LOG_INFO* rli)
*/
*/
/* TODO: I/O thread should not even log events with the same server id */
/* TODO: I/O thread should not even log events with the same server id */
rli
->
inc_pos
(
ev
->
get_event_len
(),
rli
->
inc_pos
(
ev
->
get_event_len
(),
type_code
!=
STOP_EVENT
?
ev
->
log_pos
:
0
,
type_code
!=
STOP_EVENT
?
ev
->
log_pos
:
LL
(
0
)
,
1
/* skip lock*/
);
1
/* skip lock*/
);
flush_relay_log_info
(
rli
);
flush_relay_log_info
(
rli
);
if
(
rli
->
slave_skip_counter
&&
/* protect against common user error of
if
(
rli
->
slave_skip_counter
&&
/* protect against common user error of
...
@@ -2297,7 +2297,6 @@ Log_event* next_event(RELAY_LOG_INFO* rli)
...
@@ -2297,7 +2297,6 @@ Log_event* next_event(RELAY_LOG_INFO* rli)
DBUG_ASSERT
(
rli
->
cur_log_fd
>=
0
);
DBUG_ASSERT
(
rli
->
cur_log_fd
>=
0
);
my_close
(
rli
->
cur_log_fd
,
MYF
(
MY_WME
));
my_close
(
rli
->
cur_log_fd
,
MYF
(
MY_WME
));
rli
->
cur_log_fd
=
-
1
;
rli
->
cur_log_fd
=
-
1
;
int
error
;
// purge_first_log will properly set up relay log coordinates in rli
// purge_first_log will properly set up relay log coordinates in rli
if
(
rli
->
relay_log
.
purge_first_log
(
rli
))
if
(
rli
->
relay_log
.
purge_first_log
(
rli
))
...
...
sql/slave.h
View file @
6a1b08cb
...
@@ -176,7 +176,7 @@ typedef struct st_relay_log_info
...
@@ -176,7 +176,7 @@ typedef struct st_relay_log_info
pending
+=
val
;
pending
+=
val
;
}
}
// TODO: this probably needs to be fixed
// TODO: this probably needs to be fixed
inline
void
inc_pos
(
ulonglong
val
,
u
int32
log_pos
,
bool
skip_lock
=
0
)
inline
void
inc_pos
(
ulonglong
val
,
u
longlong
log_pos
,
bool
skip_lock
=
0
)
{
{
if
(
!
skip_lock
)
if
(
!
skip_lock
)
pthread_mutex_lock
(
&
data_lock
);
pthread_mutex_lock
(
&
data_lock
);
...
...
sql/sql_rename.cc
View file @
6a1b08cb
...
@@ -35,8 +35,10 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list)
...
@@ -35,8 +35,10 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list)
TABLE_LIST
*
lock_table
,
*
ren_table
=
0
;
TABLE_LIST
*
lock_table
,
*
ren_table
=
0
;
DBUG_ENTER
(
"mysql_rename_tables"
);
DBUG_ENTER
(
"mysql_rename_tables"
);
/* Avoid problems with a rename on a table that we have locked or
/*
if the user is trying to to do this in a transcation context */
Avoid problems with a rename on a table that we have locked or
if the user is trying to to do this in a transcation context
*/
if
(
thd
->
locked_tables
||
thd
->
active_transaction
())
if
(
thd
->
locked_tables
||
thd
->
active_transaction
())
{
{
...
...
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