summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@narttu.mysql.fi>2000-10-11 00:48:03 +0300
committerunknown <monty@narttu.mysql.fi>2000-10-11 00:48:03 +0300
commitf4d7717ceaabc8948c4517dab603f1103222a176 (patch)
treec6677bb9b8f4eee0143a25aa5b5b345004edc2ff
parentdbde9337c201b7a53357d3904c7f0ac5b046ed85 (diff)
downloadmariadb-git-f4d7717ceaabc8948c4517dab603f1103222a176.tar.gz
Portability fixes
Docs/manual.texi: Update for Access 2000 extra/perror.c: Added --silent include/my_pthread.h: Patch for windows scripts/safe_mysqld.sh: Fix of bug in --patch sql/sql_lex.cc: Allow numbers of type 1e1 sql/sql_string.h: Safety fix sql/sql_table.cc: Portability fix BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
-rw-r--r--BitKeeper/etc/logging_ok3
-rw-r--r--Docs/manual.texi4
-rw-r--r--extra/perror.c18
-rw-r--r--include/my_pthread.h6
-rw-r--r--mysys/my_init.c1
-rw-r--r--scripts/safe_mysqld.sh2
-rw-r--r--sql/sql_lex.cc8
-rw-r--r--sql/sql_string.h16
-rw-r--r--sql/sql_table.cc4
9 files changed, 38 insertions, 24 deletions
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok
index 2d75ea486ef..f5cbc2ff8bf 100644
--- a/BitKeeper/etc/logging_ok
+++ b/BitKeeper/etc/logging_ok
@@ -1,2 +1 @@
-monty@tramp.mysql.fi
-monty@donna.mysql.com
+monty@narttu.mysql.fi
diff --git a/Docs/manual.texi b/Docs/manual.texi
index 4c056d1ff90..4d1360f503a 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -30180,6 +30180,10 @@ with these, change the columns to @code{DATETIME}.
In some cases, Access may generate illegal SQL queries that
@strong{MySQL} can't understand. You can fix this by selecting
@code{"Query|SQLSpecific|Pass-Through"} from the Access menu.
+@item
+If you have in Access a column defined as BYTE, Access will try to export this
+as @code(TINYINT} instead of @code{TINYINT UNSIGNED}. This will give you
+problems if you have values > 127 in the column!
@end itemize
@cindex ADO program
diff --git a/extra/perror.c b/extra/perror.c
index 699aac392a1..af8f77e19be 100644
--- a/extra/perror.c
+++ b/extra/perror.c
@@ -17,7 +17,7 @@
/* Return error-text for system error messages and nisam messages */
-#define PERROR_VERSION "2.4"
+#define PERROR_VERSION "2.5"
#include <global.h>
#include <my_sys.h>
@@ -31,6 +31,7 @@ static struct option long_options[] =
{"help", no_argument, 0, '?'},
{"info", no_argument, 0, 'I'},
{"all", no_argument, 0, 'a'},
+ {"silent", no_argument, 0, 's'},
{"verbose", no_argument, 0, 'v'},
{"version", no_argument, 0, 'V'},
{0, 0, 0, 0}
@@ -41,7 +42,7 @@ typedef struct ha_errors {
const char *msg;
} HA_ERRORS;
-static int verbose=0,print_all_codes=0;
+static int verbose=1,print_all_codes=0;
static HA_ERRORS ha_errlist[]=
{
@@ -79,7 +80,8 @@ static void usage(void)
{
print_version();
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
- printf("Usage: %s [OPTIONS] [ERRORCODES]\n",my_progname);
+ printf("Print a description for a system error code or a error code from\na MyISAM/ISAM table handler\n");
+ printf("Usage: %s [OPTIONS] [ERRORCODE [ERRORCODE...]]\n",my_progname);
printf("\n\
-?, --help Displays this help and exits.\n\
-I, --info Synonym for the above.");
@@ -88,7 +90,8 @@ static void usage(void)
-a, --all Print all the error messages and the number.");
#endif
printf("\n\
- -v, --verbose Print info about various stages.\n\
+ -s, --silent Only print the error message\n\
+ -v, --verbose Print error code and message (default).\n\
-V, --version Displays version information and exits.\n");
}
@@ -97,7 +100,7 @@ static int get_options(int *argc,char ***argv)
{
int c,option_index;
- while ((c=getopt_long(*argc,*argv,"avVI?",long_options,
+ while ((c=getopt_long(*argc,*argv,"asvVI?",long_options,
&option_index)) != EOF)
{
switch (c) {
@@ -109,6 +112,9 @@ static int get_options(int *argc,char ***argv)
case 'v':
verbose=1;
break;
+ case 's':
+ verbose=0;
+ break;
case 'V':
print_version();
exit(0);
@@ -183,7 +189,7 @@ int main(int argc,char *argv[])
{
found=1;
if (verbose)
- printf("%3d = %s\n",code,msg);
+ printf("Error code %3d: %s\n",code,msg);
else
puts(msg);
}
diff --git a/include/my_pthread.h b/include/my_pthread.h
index 2ecd4e20482..07c0c3e502e 100644
--- a/include/my_pthread.h
+++ b/include/my_pthread.h
@@ -91,9 +91,9 @@ void pthread_exit(unsigned A); /* was #define pthread_exit(A) ExitThread(A)*/
#define pthread_key_create(A,B) ((*A=TlsAlloc())==0xFFFFFFFF)
#define pthread_getspecific(A) (TlsGetValue(A))
#define my_pthread_getspecific(T,A) ((T) TlsGetValue(A))
-#define my_pthread_getspecific_ptr(T,V) ((T) TlsGetValue(A))
-#define my_pthread_setspecific_ptr(T,V) TlsSetValue(T,V)
-#define pthread_setspecific(A,B) TlsSetValue(A,B)
+#define my_pthread_getspecific_ptr(T,V) ((T) TlsGetValue(V))
+#define my_pthread_setspecific_ptr(T,V) (!TlsSetValue((T),(V)))
+#define pthread_setspecific(A,B) (!TlsSetValue((A),(B)))
#else
#define pthread_key(T,V) __declspec(thread) T V
#define pthread_key_create(A,B) pthread_dummy(0)
diff --git a/mysys/my_init.c b/mysys/my_init.c
index 4e7d1b6b2db..ee70191c571 100644
--- a/mysys/my_init.c
+++ b/mysys/my_init.c
@@ -167,6 +167,7 @@ void my_end(int infoflag)
if (have_tcpip);
WSACleanup( );
#endif /* __WIN__ */
+ my_init_done=0;
} /* my_end */
#ifdef __WIN__
diff --git a/scripts/safe_mysqld.sh b/scripts/safe_mysqld.sh
index f2478c086f7..ee9f40ed5dd 100644
--- a/scripts/safe_mysqld.sh
+++ b/scripts/safe_mysqld.sh
@@ -26,7 +26,7 @@ parse_arguments() {
--datadir=*) DATADIR=`echo "$arg" | sed -e "s;--datadir=;;"` ;;
--pid-file=*) pid_file=`echo "$arg" | sed -e "s;--pid-file=;;"` ;;
--socket=*) MYSQL_UNIX_PORT=`echo "$arg" | sed -e "s;--socket=;;"` ;;
- --port=*) MYSQL_TCP_PORT=`echo "$arg" | sed -e "s;--socket=;;"` ;;
+ --port=*) MYSQL_TCP_PORT=`echo "$arg" | sed -e "s;--port=;;"` ;;
--log=*) log=`echo "$arg" | sed -e "s;--log=;;"` ;;
--err-log=*) err_log=`echo "$arg" | sed -e "s;--err-log=;;"` ;;
--basedir=*) MY_BASEDIR_VERSION=`echo "$arg" | sed -e "s;--basedir=;;"` ;;
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 50c9ab852c1..ca36cb9f205 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -526,7 +526,8 @@ int yylex(void *arg)
}
if (c == 'e' || c == 'E')
{
- if ((c=(yyGet())) == '+' || c == '-')
+ // The following test is written this way to allow numbers of type 1e1
+ if (isdigit(yyPeek()) || (c=(yyGet())) == '+' || c == '-')
{ // Allow 1E+10
if (isdigit(yyPeek())) // Number must have digit after sign
{
@@ -628,7 +629,8 @@ int yylex(void *arg)
yyUnget(); // Fix for next loop
}
while (isdigit(c=yyGet())) ; // Incomplete real or int number
- if ((c == 'e' || c == 'E') && (yyPeek() == '+' || yyPeek() == '-'))
+ if ((c == 'e' || c == 'E') &&
+ (yyPeek() == '+' || yyPeek() == '-' || isdigit(yyPeek())))
{ // Real number
yyUnget();
c= '.'; // Fool next test
@@ -647,7 +649,7 @@ int yylex(void *arg)
if (c == 'e' || c == 'E')
{
c = yyGet();
- if (c != '-' && c != '+')
+ if (c != '-' && c != '+' && !isdigit(c))
{ // No exp sig found
state= STATE_CHAR;
break;
diff --git a/sql/sql_string.h b/sql/sql_string.h
index 8711cf314ad..45c82b82dd0 100644
--- a/sql/sql_string.h
+++ b/sql/sql_string.h
@@ -100,16 +100,16 @@ public:
bool set(ulonglong num);
bool set(double num,uint decimals=2);
inline void free()
+ {
+ if (alloced)
{
- if (alloced)
- {
- alloced=0;
- Alloced_length=0;
- my_free(Ptr,MYF(0));
- Ptr=0;
- }
+ alloced=0;
+ Alloced_length=0;
+ my_free(Ptr,MYF(0));
+ Ptr=0;
+ str_length=0; /* Safety */
}
-
+ }
inline bool alloc(uint32 arg_length)
{
if (arg_length < Alloced_length)
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 3cb40d7d9ed..2d52aa5ff5a 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -867,10 +867,12 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
}
if ((table->table->db_stat & HA_READ_ONLY) && open_for_modify)
{
+ char buff[FN_REFLEN + MYSQL_ERRMSG_SIZE];
net_store_data(packet, table_name);
net_store_data(packet, operator_name);
net_store_data(packet, "error");
- net_store_data(packet, ER(ER_OPEN_AS_READONLY));
+ sprintf(buff, ER(ER_OPEN_AS_READONLY), table_name);
+ net_store_data(packet, buff);
close_thread_tables(thd);
if (my_net_write(&thd->net, (char*) thd->packet.ptr(),
packet->length()))