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.
@item
The result of all bitwise operators @code{|}, @code{&}, @code{<<},
@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
Functions}.
are using them in a context where you want an signed result.
@xref{Cast
Functions}.
@item
@strong{NOTE:} When you use subtraction between integers values where
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
for cases where you are subtracting a value from an unsigned entity
and want a negative answer or subtracting an unsigned value from a an
integer column. @xref{Cast Functions}.
for cases where you are subtracting a value from an unsigned entity and
want a negative answer or subtracting an unsigned value from a an
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
To use @code{MATCH ... AGAINST (... IN BOOLEAN MODE)} with your tables,
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
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
in very heavy use.
@item @code{Connect Out}
Slave connecting to master.
@item @code{Copying to tmp table on disk}
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
...
...
@@ -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 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
@subsection Other Functions
...
...
@@ -48361,6 +48371,10 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
@itemize @bullet
@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.
@item
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)}.
@code{ALTER TABLE tablename TYPE=MyISAM} to be
able to use boolean fulltext search}.
@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.
@item
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()
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
value
=
args
[
0
]
->
val
()
-
args
[
1
]
->
val
();
...
...
sql/item_func.h
View file @
6a1b08cb
...
...
@@ -233,8 +233,10 @@ public:
const
char
*
func_name
()
const
{
return
"-"
;
}
double
val
();
longlong
val_int
();
void
fix_length_and_dec
();
};
class
Item_func_mul
:
public
Item_num_op
{
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);
#define TMP_TABLE_ALL_COLUMNS (SELECT_NO_UNLOCK*2)
#define MODE_REAL_AS_FLOAT 1
#define MODE_PIPES_AS_CONCAT 2
#define MODE_ANSI_QUOTES 4
#define MODE_IGNORE_SPACE 8
#define MODE_SERIALIZABLE 16
#define MODE_ONLY_FULL_GROUP_BY 32
#define MODE_REAL_AS_FLOAT 1
#define MODE_PIPES_AS_CONCAT 2
#define MODE_ANSI_QUOTES 4
#define MODE_IGNORE_SPACE 8
#define MODE_SERIALIZABLE 16
#define MODE_ONLY_FULL_GROUP_BY 32
#define MODE_NO_UNSIGNED_SUBTRACTION 64
#define RAID_BLOCK_SIZE 1024
...
...
sql/mysqld.cc
View file @
6a1b08cb
...
...
@@ -351,7 +351,7 @@ time_t start_time;
ulong
opt_sql_mode
=
0L
;
const
char
*
sql_mode_names
[]
=
{
"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
,
""
,
sql_mode_names
};
...
...
@@ -486,7 +486,6 @@ static void close_connections(void)
HANDLE
hTempPipe
=
&
hPipe
;
DBUG_PRINT
(
"quit"
,
(
"Closing named pipes"
)
);
hPipe
=
INVALID_HANDLE_VALUE
;
CancelIo
(
hTempPipe
);
DisconnectNamedPipe
(
hTempPipe
);
CloseHandle
(
hTempPipe
);
}
...
...
@@ -3411,7 +3410,8 @@ static void usage(void)
-t, --tmpdir=path Path for temporary files
\n
\
--sql-mode=option[,option[,option...]] where option can be one of:
\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
\
Default transaction isolation level
\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)
*/
/* TODO: I/O thread should not even log events with the same server id */
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*/
);
flush_relay_log_info
(
rli
);
if
(
rli
->
slave_skip_counter
&&
/* protect against common user error of
...
...
@@ -2297,7 +2297,6 @@ Log_event* next_event(RELAY_LOG_INFO* rli)
DBUG_ASSERT
(
rli
->
cur_log_fd
>=
0
);
my_close
(
rli
->
cur_log_fd
,
MYF
(
MY_WME
));
rli
->
cur_log_fd
=
-
1
;
int
error
;
// purge_first_log will properly set up relay log coordinates in 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
pending
+=
val
;
}
// 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
)
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)
TABLE_LIST
*
lock_table
,
*
ren_table
=
0
;
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
())
{
...
...
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