diff options
author | unknown <monty@mashka.mysql.fi> | 2002-06-12 17:35:04 +0300 |
---|---|---|
committer | unknown <monty@mashka.mysql.fi> | 2002-06-12 17:35:04 +0300 |
commit | 33e636cbb4e00f98634567c0096ee9e90c8ac82f (patch) | |
tree | d524ce8bacc62f53c306da52b90b13e0a3463937 | |
parent | e91d0d898b3f90121227f11fb7552c55ca49d119 (diff) | |
download | mariadb-git-33e636cbb4e00f98634567c0096ee9e90c8ac82f.tar.gz |
Added missing include file to sql_acl.cc (bug in last changeset)
Docs/manual.texi:
Updated Table is full section.
client/mysql.cc:
Applied patch for fixing tee()
sql/sql_acl.cc:
Added include file
-rw-r--r-- | Docs/manual.texi | 42 | ||||
-rw-r--r-- | client/mysql.cc | 60 | ||||
-rw-r--r-- | sql/sql_acl.cc | 1 |
3 files changed, 70 insertions, 33 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index 58ecef18d91..809bfd3346c 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -46661,12 +46661,16 @@ than you have alloacated for @code{mysqld}. @xref{Packet too large}. @cindex table is full -This error occurs in older MySQL versions when an in-memory temporary -table becomes larger than @code{tmp_table_size} bytes. To avoid this -problem, you can use the @code{-O tmp_table_size=#} option to -@code{mysqld} to increase the temporary table size or use the SQL -option @code{SQL_BIG_TABLES} before you issue the problematic -query. @xref{SET OPTION, , @code{SET OPTION}}. +There is a couple of different cases when you can get this error: + +@itemize @bullet +@item +You are using an older MySQL versions ( < 3.23.0) when an in-memory +temporary table becomes larger than @code{tmp_table_size} bytes. To +avoid this problem, you can use the @code{-O tmp_table_size=#} option to +@code{mysqld} to increase the temporary table size or use the SQL option +@code{SQL_BIG_TABLES} before you issue the problematic query. @xref{SET +OPTION, , @code{SET OPTION}}. You can also start @code{mysqld} with the @code{--big-tables} option. This is exactly the same as using @code{SQL_BIG_TABLES} for all queries. @@ -46674,6 +46678,30 @@ This is exactly the same as using @code{SQL_BIG_TABLES} for all queries. In MySQL Version 3.23, in-memory temporary tables will automatically be converted to a disk-based @code{MyISAM} table after the table size gets bigger than @code{tmp_table_size}. +@item +You are using InnoDB tables and run out of room in the InnoDB tablespace. +In this case the solution is to add extend the InnoDB table space. +@item +You are using ISAM/MyISAM tables on a OS that only supports 2G files +and you have hit this limit for the data or index file. +@item +You are using MyISAM tables and the needed data or index size is bigger +than what MySQL has allocated pointers for. (If you don't specify +@code{MAX_ROWS} to @code{CREATE TABLE} MySQL will only allocate pointers +to hold 4G of data). + +One can check the maximum data/index sizes by doing @code{SHOW TABLE +STATUS FROM database LIKE 'table_name} or using @code{myisamchk -dv +database/table_name}. + +If this is the problem, you can fix it by doing something like: + +@code{ALTER TABLE table_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=XXX}. + +You only have to specify @code{AVG_ROW_LENGTH} for tables with BLOB/TEXT +fields as in this case MySQL can't optimise the needed space just based +on the number of rows. +@end itemize @node Cannot create, Commands out of sync, Full table, Common errors @@ -51432,7 +51460,7 @@ now can be specified in octal by beginning the value with a zero. Added @code{RIGHT JOIN}. This makes @code{RIGHT} a reserved word. @item Added @code{@@@@IDENTITY} as a synonym for @code{LAST_INSERT_ID()}. -(This is for Visual Basic compatibility.) +(This is for MSSQL compatibility.) @item Fixed a bug in @code{myisamchk} and @code{REPAIR} when using @code{FULLTEXT} index. diff --git a/client/mysql.cc b/client/mysql.cc index aa4965e1119..47fdf840d3e 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -186,7 +186,7 @@ static void safe_put_field(const char *pos,ulong length); static void xmlencode_print(const char *src, uint length); static void init_pager(); static void end_pager(); -static void init_tee(); +static int init_tee(char *); static void end_tee(); static const char* construct_prompt(); static void init_username(); @@ -619,11 +619,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), end_tee(); } else - if (!opt_outfile) - { - strmov(outfile, argument); - init_tee(); - } + opt_outfile= init_tee(argument); break; case OPT_NOTEE: printf("WARNING: option deprecated; use --disable-tee instead.\n"); @@ -1517,19 +1513,21 @@ static void end_pager() #endif } -static void init_tee() + +static int init_tee(char* newfile) { + FILE* new_outfile; + if (!(new_outfile= my_fopen(newfile, O_APPEND | O_WRONLY, MYF(MY_WME)))) + return 0; if (opt_outfile) - end_tee(); // This resets opt_outfile - if (!(OUTFILE= my_fopen(outfile, O_APPEND | O_WRONLY, MYF(MY_WME)))) - { - init_pager(); - return; - } - opt_outfile= 1; + end_tee(); + OUTFILE = new_outfile; + strmake(outfile,newfile,FN_REFLEN-1); tee_fprintf(stdout, "Logging to file '%s'\n", outfile); + return 1; } + static void end_tee() { my_fclose(OUTFILE, MYF(0)); @@ -1841,29 +1839,39 @@ com_tee(String *buffer, char *line __attribute__((unused))) if (!strlen(outfile)) { printf("No previous outfile available, you must give a filename!\n"); - opt_outfile= 0; return 0; } + else if (opt_outfile) + { + tee_fprintf(stdout, "Currently logging to file '%s'\n", outfile); + return 0; + } + else + param = outfile; //resume using the old outfile } - else - { - while (isspace(*param)) - param++; - end= strmake(file_name, param, sizeof(file_name) - 1); - while (end > file_name && (isspace(end[-1]) || iscntrl(end[-1]))) - end--; - end[0]= 0; - strmov(outfile, file_name); - } + + /* eliminate the spaces before the parameters */ + while (isspace(*param)) + param++; + end= strmake(file_name, param, sizeof(file_name) - 1); + /* remove end space from command line */ + while (end > file_name && (isspace(end[-1]) || iscntrl(end[-1]))) + end--; + end[0]= 0; if (!strlen(outfile)) { printf("No outfile specified!\n"); return 0; } - init_tee(); + opt_outfile= init_tee(file_name); + if (opt_outfile) + tee_fprintf(stdout, "Logging to file '%s'\n", outfile); + else + tee_fprintf(stdout, "Error logging to file '%s'\n",file_name); return 0; } + static int com_notee(String *buffer __attribute__((unused)), char *line __attribute__((unused))) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index a664757cb2a..4b3a20b0014 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -29,6 +29,7 @@ #include "sql_acl.h" #include "hash_filo.h" #include <m_ctype.h> +#include <assert.h> #include <stdarg.h> struct acl_host_and_ip |