|
|
Subject: bk commit into 4.1 tree (1.1430) - msg#00456
List: db.mysql.devel
Below is the list of changes that have just been committed into a local
4.1 repository of bar. When bar does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html
ChangeSet
1.1430 03/01/29 17:56:18 bar@xxxxxxxxxxxxxxxx +1 -0
conf_to_src.c:
GeGetting closer
strings/conf_to_src.c
1.10 03/01/29 17:55:48 bar@xxxxxxxxxxxxxxxx +93 -145
GeGetting closer
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: bar
# Host: bar.mysql.r18.ru
# Root: /usr/home/bar/mysql-4.1
--- 1.9/strings/conf_to_src.c Wed Jan 29 16:32:43 2003
+++ 1.10/strings/conf_to_src.c Wed Jan 29 17:55:48 2003
@@ -14,8 +14,6 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-/* can't use -lmysys because this prog is used to create -lstrings */
-
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
@@ -32,93 +30,27 @@
#define TO_LOWER_TABLE_SIZE 256
#define TO_UPPER_TABLE_SIZE 256
#define SORT_ORDER_TABLE_SIZE 256
-#define ROW_LEN 16
-char *prog;
-char buf[1024], *p, *endptr;
+#define MAX_BUF 16*1024
+
+static CHARSET_INFO all_charsets[256];
void
-print_array(FILE *f, const char *set, const char *name, int n)
+print_array(FILE *f, const char *set, const char *name, uchar *a, int n)
{
int i;
- char val[100];
-
- printf("uchar %s_%s[] = {\n", name, set);
- p = buf;
- *buf = '\0';
- for (i = 0; i < n; ++i)
+ fprintf(f,"uchar %s_%s[] = {\n", name, set);
+
+ for (i=0 ;i<n ; i++)
{
- /* get a word from f */
- endptr = p;
- for (;;)
- {
- while (isspace((* (unsigned char*) endptr)))
- ++endptr;
- if (*endptr && *endptr != '#') /* not comment */
- break;
- if ((fgets(buf, sizeof(buf), f)) == NULL)
- return; /* XXX: break silently */
- endptr = buf;
- }
-
- p = val;
- while (!isspace((* (unsigned char*) endptr)))
- *p++ = *endptr++;
- *p = '\0';
- p = endptr;
-
- /* write the value out */
-
- if (i == 0 || i % ROW_LEN == n % ROW_LEN)
- printf(" ");
-
- printf("%3d", (unsigned char) strtol(val, (char **) NULL, 16));
-
- if (i < n - 1)
- printf(",");
-
- if ((i+1) % ROW_LEN == n % ROW_LEN)
- printf("\n");
+ fprintf(f,"0x%02X%s%s",a[i], (i+1<n) ? "," :"", i % 16 ? "" : "\n");
}
-
- printf("};\n\n");
+ fprintf(f,"};\n\n");
}
-void
-print_arrays_for(char *set)
-{
- FILE *f;
-
- sprintf(buf, "%s.conf", set);
-
- if ((f = fopen(buf, "r")) == NULL) {
- fprintf(stderr, "%s: can't read conf file for charset %s\n", prog, set);
- exit(EXIT_FAILURE);
- }
-
- printf("\
-/* The %s character set. Generated automatically by\n\
- * the %s program\n\
- */\n\n",
- set, prog);
-
- /* it would be nice if this used the code in mysys/charset.c, but... */
- print_array(f, set, "ctype", CTYPE_TABLE_SIZE);
- print_array(f, set, "to_lower", TO_LOWER_TABLE_SIZE);
- print_array(f, set, "to_upper", TO_UPPER_TABLE_SIZE);
- print_array(f, set, "sort_order", SORT_ORDER_TABLE_SIZE);
- printf("\n");
- fclose(f);
-
- return;
-}
-
-#define MAX_BUF 16*1024
-
-static CHARSET_INFO all_charsets[256];
static int get_charset_number(const char *charset_name)
{
@@ -207,7 +139,7 @@
if ((fd=open(filename,O_RDONLY)) < 0)
{
- printf("Can't open '%s'\n",filename);
+ fprintf(stderr,"Can't open '%s'\n",filename);
return 1;
}
@@ -227,69 +159,69 @@
return FALSE;
}
-void dispcset(CHARSET_INFO *cs)
+void dispcset(FILE *f,CHARSET_INFO *cs)
{
- printf("{\n");
- printf(" %d,\n",cs->number);
- printf(" MY_CS_COMPILED,\n");
+ fprintf(f,"{\n");
+ fprintf(f," %d,\n",cs->number);
+ fprintf(f," MY_CS_COMPILED,\n");
if (cs->name)
{
- printf(" \"%s\",\n",cs->name);
- printf(" \"%s\",\n",cs->csname);
- printf(" \"\",\n");
- printf(" ctype_%s,\n",cs->name);
- printf(" to_lower_%s,\n",cs->name);
- printf(" to_upper_%s,\n",cs->name);
- printf(" sort_order_%s,\n",cs->name);
- printf(" to_uni_%s,\n",cs->name);
- printf(" from_uni_%s,\n",cs->name);
+ fprintf(f," \"%s\",\n",cs->name);
+ fprintf(f," \"%s\",\n",cs->csname);
+ fprintf(f," \"\",\n");
+ fprintf(f," ctype_%s,\n",cs->name);
+ fprintf(f," to_lower_%s,\n",cs->name);
+ fprintf(f," to_upper_%s,\n",cs->name);
+ fprintf(f," sort_order_%s,\n",cs->name);
+ fprintf(f," to_uni_%s,\n",cs->name);
+ fprintf(f," from_uni_%s,\n",cs->name);
}
else
{
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" NULL,\n");
- }
-
- printf(" %d,\n",cs->strxfrm_multiply);
- printf(" my_strnncoll_simple,\n");
- printf(" my_strnxfrm_simple,\n");
- printf(" my_like_range_simple,\n");
- printf(" my_wild_cmp_8bit,\n");
- printf(" %d,\n",cs->mbmaxlen);
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" NULL,\n");
- printf(" my_mb_wc_8bit,\n");
- printf(" my_wc_mb_8bit,\n");
- printf(" my_caseup_str_8bit,\n");
- printf(" my_casedn_str_8bit,\n");
- printf(" my_caseup_8bit,\n");
- printf(" my_casedn_8bit,\n");
- printf(" my_tosort_8bit,\n");
- printf(" my_strcasecmp_8bit,\n");
- printf(" my_strncasecmp_8bit,\n");
- printf(" my_hash_caseup_simple,\n");
- printf(" my_hash_sort_simple,\n");
- printf(" 0,\n");
- printf(" my_snprintf_8bit,\n");
- printf(" my_long10_to_str_8bit,\n");
- printf(" my_longlong10_to_str_8bit,\n");
- printf(" my_fill_8bit,\n");
- printf(" my_strntol_8bit,\n");
- printf(" my_strntoul_8bit,\n");
- printf(" my_strntoll_8bit,\n");
- printf(" my_strntoull_8bit,\n");
- printf(" my_strntod_8bit,\n");
- printf(" my_scan_8bit\n");
- printf("}\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ }
+
+ fprintf(f," %d,\n",cs->strxfrm_multiply);
+ fprintf(f," my_strnncoll_simple,\n");
+ fprintf(f," my_strnxfrm_simple,\n");
+ fprintf(f," my_like_range_simple,\n");
+ fprintf(f," my_wild_cmp_8bit,\n");
+ fprintf(f," %d,\n",cs->mbmaxlen);
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," NULL,\n");
+ fprintf(f," my_mb_wc_8bit,\n");
+ fprintf(f," my_wc_mb_8bit,\n");
+ fprintf(f," my_caseup_str_8bit,\n");
+ fprintf(f," my_casedn_str_8bit,\n");
+ fprintf(f," my_caseup_8bit,\n");
+ fprintf(f," my_casedn_8bit,\n");
+ fprintf(f," my_tosort_8bit,\n");
+ fprintf(f," my_strcasecmp_8bit,\n");
+ fprintf(f," my_strncasecmp_8bit,\n");
+ fprintf(f," my_hash_caseup_simple,\n");
+ fprintf(f," my_hash_sort_simple,\n");
+ fprintf(f," 0,\n");
+ fprintf(f," my_snprintf_8bit,\n");
+ fprintf(f," my_long10_to_str_8bit,\n");
+ fprintf(f," my_longlong10_to_str_8bit,\n");
+ fprintf(f," my_fill_8bit,\n");
+ fprintf(f," my_strntol_8bit,\n");
+ fprintf(f," my_strntoul_8bit,\n");
+ fprintf(f," my_strntoll_8bit,\n");
+ fprintf(f," my_strntoull_8bit,\n");
+ fprintf(f," my_strntod_8bit,\n");
+ fprintf(f," my_scan_8bit\n");
+ fprintf(f,"}\n");
}
@@ -299,6 +231,7 @@
CHARSET_INFO ncs;
CHARSET_INFO *cs;
char filename[256];
+ FILE *f= stdout;
if (argc < 2)
{
@@ -312,7 +245,6 @@
sprintf(filename,"%s/%s",argv[1],"Index.xml");
my_read_charset_file(filename);
- printf("CHARSET_INFO compiled_charsets[] = {\n");
for (cs=all_charsets; cs < all_charsets+256; cs++)
{
if (cs->number)
@@ -322,19 +254,35 @@
sprintf(filename,"%s/%s.xml",argv[1],cs->csname);
my_read_charset_file(filename);
}
-
- if (simple_cs_is_full)
- {
- printf("#ifdef HAVE_CHARSET_%s\n",cs->csname);
- dispcset(cs);
- printf(",\n");
- printf("#endif\n");
- }
}
}
- dispcset(&ncs);
- printf("};\n");
+ for (cs=all_charsets; cs < all_charsets+256; cs++)
+ {
+ if (simple_cs_is_full(cs))
+ {
+ print_array(f, cs->name, "ctype", cs->ctype, CTYPE_TABLE_SIZE);
+ print_array(f, cs->name, "to_lower", cs->to_lower,
TO_LOWER_TABLE_SIZE);
+ print_array(f, cs->name, "to_upper", cs->to_upper,
TO_UPPER_TABLE_SIZE);
+ print_array(f, cs->name, "sort_order", cs->sort_order,
SORT_ORDER_TABLE_SIZE);
+ fprintf(f,"\n");
+ }
+ }
+
+ fprintf(f,"CHARSET_INFO compiled_charsets[] = {\n");
+ for (cs=all_charsets; cs < all_charsets+256; cs++)
+ {
+ if (simple_cs_is_full(cs))
+ {
+ fprintf(f,"#ifdef HAVE_CHARSET_%s\n",cs->csname);
+ dispcset(f,cs);
+ fprintf(f,",\n");
+ fprintf(f,"#endif\n");
+ }
+ }
+
+ dispcset(f,&ncs);
+ fprintf(f,"};\n");
return 0;
}
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail internals-thread6737@xxxxxxxxxxxxxxx
To unsubscribe, e-mail <internals-unsubscribe@xxxxxxxxxxxxxxx>
Was this page helpful?
Thread at a glance:
Previous Message by Date:
click to view message preview
bk commit into 4.1 tree (1.1428)
Below is the list of changes that have just been committed into a local
4.1 repository of bar. When bar does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html
ChangeSet
1.1428 03/01/29 16:33:16 bar@xxxxxxxxxxxxxxxx +1 -0
conf_to_src.c:
Restoring conf_to_src. Now it loads XML.
strings/conf_to_src.c
1.9 03/01/29 16:32:43 bar@xxxxxxxxxxxxxxxx +157 -11
Restoring conf_to_src. Now it loads XML.
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: bar
# Host: bar.mysql.r18.ru
# Root: /usr/home/bar/mysql-4.1
--- 1.8/strings/conf_to_src.c Wed Jan 29 15:08:07 2003
+++ 1.9/strings/conf_to_src.c Wed Jan 29 16:32:43 2003
@@ -131,23 +131,62 @@
return 0;
}
-static void simple_cs_copy_data()
+char *mdup(const char *src, uint len)
{
+ char *dst=(char*)malloc(len);
+ memcpy(dst,src,len);
+ return dst;
+}
+
+static void simple_cs_copy_data(CHARSET_INFO *to, CHARSET_INFO *from)
+{
+ to->number= from->number ? from->number : to->number;
+ to->state|= from->state;
+
+ if (from->csname)
+ to->csname= strdup(from->csname);
+
+ if (from->name)
+ to->name= strdup(from->name);
+
+ if (from->ctype)
+ to->ctype= (uchar*) mdup((char*) from->ctype, MY_CS_CTYPE_TABLE_SIZE);
+ if (from->to_lower)
+ to->to_lower= (uchar*) mdup((char*) from->to_lower,
MY_CS_TO_LOWER_TABLE_SIZE);
+ if (from->to_upper)
+ to->to_upper= (uchar*) mdup((char*) from->to_upper,
MY_CS_TO_UPPER_TABLE_SIZE);
+ if (from->sort_order)
+ {
+ to->sort_order= (uchar*) mdup((char*) from->sort_order,
MY_CS_SORT_ORDER_TABLE_SIZE);
+ /*
+ set_max_sort_char(to);
+ */
+ }
+ if (from->tab_to_uni)
+ {
+ uint sz= MY_CS_TO_UNI_TABLE_SIZE*sizeof(uint16);
+ to->tab_to_uni= (uint16*) mdup((char*)from->tab_to_uni, sz);
+ /*
+ create_fromuni(to);
+ */
+ }
+}
+
+static my_bool simple_cs_is_full(CHARSET_INFO *cs)
+{
+ return ((cs->csname && cs->tab_to_uni && cs->ctype && cs->to_upper &&
+ cs->to_lower) &&
+ (cs->number && cs->name && cs->sort_order));
}
static int add_collation(CHARSET_INFO *cs)
{
if (cs->name && (cs->number || (cs->number=get_charset_number(cs->name))))
{
-#if 0
if (!(all_charsets[cs->number].state & MY_CS_COMPILED))
{
- simple_cs_copy_data(all_charsets[cs->number],cs);
- if (simple_cs_is_full(all_charsets[cs->number]))
- {
- simple_cs_init_functions(all_charsets[cs->number]);
- all_charsets[cs->number]->state |= MY_CS_LOADED;
- }
+ simple_cs_copy_data(&all_charsets[cs->number],cs);
+
}
cs->number= 0;
@@ -155,7 +194,6 @@
cs->state= 0;
cs->sort_order= NULL;
cs->state= 0;
-#endif
}
return MY_XML_OK;
}
@@ -168,7 +206,10 @@
uint len;
if ((fd=open(filename,O_RDONLY)) < 0)
+ {
+ printf("Can't open '%s'\n",filename);
return 1;
+ }
len=read(fd,buf,MAX_BUF);
close(fd);
@@ -186,9 +227,114 @@
return FALSE;
}
+void dispcset(CHARSET_INFO *cs)
+{
+ printf("{\n");
+ printf(" %d,\n",cs->number);
+ printf(" MY_CS_COMPILED,\n");
+
+ if (cs->name)
+ {
+ printf(" \"%s\",\n",cs->name);
+ printf(" \"%s\",\n",cs->csname);
+ printf(" \"\",\n");
+ printf(" ctype_%s,\n",cs->name);
+ printf(" to_lower_%s,\n",cs->name);
+ printf(" to_upper_%s,\n",cs->name);
+ printf(" sort_order_%s,\n",cs->name);
+ printf(" to_uni_%s,\n",cs->name);
+ printf(" from_uni_%s,\n",cs->name);
+ }
+ else
+ {
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ }
+
+ printf(" %d,\n",cs->strxfrm_multiply);
+ printf(" my_strnncoll_simple,\n");
+ printf(" my_strnxfrm_simple,\n");
+ printf(" my_like_range_simple,\n");
+ printf(" my_wild_cmp_8bit,\n");
+ printf(" %d,\n",cs->mbmaxlen);
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" NULL,\n");
+ printf(" my_mb_wc_8bit,\n");
+ printf(" my_wc_mb_8bit,\n");
+ printf(" my_caseup_str_8bit,\n");
+ printf(" my_casedn_str_8bit,\n");
+ printf(" my_caseup_8bit,\n");
+ printf(" my_casedn_8bit,\n");
+ printf(" my_tosort_8bit,\n");
+ printf(" my_strcasecmp_8bit,\n");
+ printf(" my_strncasecmp_8bit,\n");
+ printf(" my_hash_caseup_simple,\n");
+ printf(" my_hash_sort_simple,\n");
+ printf(" 0,\n");
+ printf(" my_snprintf_8bit,\n");
+ printf(" my_long10_to_str_8bit,\n");
+ printf(" my_longlong10_to_str_8bit,\n");
+ printf(" my_fill_8bit,\n");
+ printf(" my_strntol_8bit,\n");
+ printf(" my_strntoul_8bit,\n");
+ printf(" my_strntoll_8bit,\n");
+ printf(" my_strntoull_8bit,\n");
+ printf(" my_strntod_8bit,\n");
+ printf(" my_scan_8bit\n");
+ printf("}\n");
+}
+
-int main()
+int
+main(int argc, char **argv __attribute__((unused)))
{
- bzero(&all_charsets,sizeof(all_charsets));
+ CHARSET_INFO ncs;
+ CHARSET_INFO *cs;
+ char filename[256];
+
+ if (argc < 2)
+ {
+ fprintf(stderr, "usage: %s source-dir\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ bzero((void*)&ncs,sizeof(ncs));
+ bzero((void*)&all_charsets,sizeof(all_charsets));
+
+ sprintf(filename,"%s/%s",argv[1],"Index.xml");
+ my_read_charset_file(filename);
+
+ printf("CHARSET_INFO compiled_charsets[] = {\n");
+ for (cs=all_charsets; cs < all_charsets+256; cs++)
+ {
+ if (cs->number)
+ {
+ if ( (!simple_cs_is_full(cs)) && (cs->csname) )
+ {
+ sprintf(filename,"%s/%s.xml",argv[1],cs->csname);
+ my_read_charset_file(filename);
+ }
+
+ if (simple_cs_is_full)
+ {
+ printf("#ifdef HAVE_CHARSET_%s\n",cs->csname);
+ dispcset(cs);
+ printf(",\n");
+ printf("#endif\n");
+ }
+ }
+ }
+
+ dispcset(&ncs);
+ printf("};\n");
+
return 0;
}
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail internals-thread6736@xxxxxxxxxxxxxxx
To unsubscribe, e-mail <internals-unsubscribe@xxxxxxxxxxxxxxx>
Next Message by Date:
click to view message preview
Re: mysqld got signal 11; This could be because you hit a bug ....
On Tue, 28 Jan 2003 17:12:14 -0700
Mariella Di Giacomo <mariella@xxxxxxxx> wrote:
> Hello,
>
> I am running mysql server (mysql-standard-4.0.5-beta-64bit) 64 bit on
> Sun Solaris 2.8 and I have got the binaries form the mysql web site.
> The machine I am using has 32GB of RAM + 64GB of swap.
>
> Thanks in advance for your help,
>
> Mariella
>
Hi!
The reason why MySQL is crashing is not due to the fact that your memory is
exhausted.
It is possible that you have shell limits that are far below the available
memory, but in your case
even that is not a problem.
What you should do is get a 4.0.10 debug binary for Solaris 2.8 from our site
and send us a core
file that is created on the crash.
Also add --core-file to startup options.
--
Regards,
--
For technical support contracts, go to https://order.mysql.com/?ref=msmi
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Mr. Sinisa Milivojevic <sinisa@xxxxxxxxx>
/ /|_/ / // /\ \/ /_/ / /__ MySQL AB, FullTime Developer
/_/ /_/\_, /___/\___\_\___/ Larnaca, Cyprus
<___/ www.mysql.com
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <mysql-thread131156@xxxxxxxxxxxxxxx>
To unsubscribe, e-mail
<mysql-unsubscribe-gcdmg-mysql=m.gmane.org@xxxxxxxxxxxxxxx>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
Previous Message by Thread:
click to view message preview
bk commit into 4.1 tree (1.1430)
Below is the list of changes that have just been committed into a local
4.1 repository of bell. When bell does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html
ChangeSet
1.1430 03/01/26 21:13:37 bell@xxxxxxxxxxxxxxx +4 -0
removed switching off static table optimization for subselects (SCRUM ,
pre-commit to be able merge with temporary table fix)
sql/sql_select.cc
1.207 03/01/26 21:13:30 bell@xxxxxxxxxxxxxxx +5 -12
removed switching off static table optimization for subselects
sql/item_cmpfunc.cc
1.54 03/01/26 21:13:30 bell@xxxxxxxxxxxxxxx +8 -0
report other table for outer reference
sql/item.h
1.60 03/01/26 21:13:30 bell@xxxxxxxxxxxxxxx +10 -4
report other table for outer reference
sql/item.cc
1.73 03/01/26 21:13:30 bell@xxxxxxxxxxxxxxx +1 -1
report other table for outer reference
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: bell
# Host: sanja.is.com.ua
# Root: /home/bell/mysql/work-static-4.1
--- 1.72/sql/item.cc Thu Jan 2 12:24:27 2003
+++ 1.73/sql/item.cc Sun Jan 26 21:13:30 2003
@@ -261,7 +261,7 @@
{
if (field->table->const_table)
return 0; // const item
- return field->table->map;
+ return (depended_from? RAND_TABLE_BIT : field->table->map);
}
--- 1.59/sql/item.h Tue Dec 31 18:39:15 2002
+++ 1.60/sql/item.h Sun Jan 26 21:13:30 2003
@@ -666,7 +666,12 @@
class Item_cache: public Item
{
+ table_map used_table_map;
public:
+ Item_cache(): used_table_map(0) {fixed= 1; null_value= 1;}
+
+ void set_used_tables(table_map map) { used_table_map= map; }
+
virtual bool allocate(uint i) { return 0; };
virtual bool setup(Item *) { return 0; };
virtual void store(Item *)= 0;
@@ -677,13 +682,14 @@
}
enum Type type() const { return CACHE_ITEM; }
static Item_cache* get_cache(Item_result type);
+ table_map used_tables() const { return used_table_map; }
};
class Item_cache_int: public Item_cache
{
longlong value;
public:
- Item_cache_int() { fixed= 1; null_value= 1; }
+ Item_cache_int(): Item_cache() {}
void store(Item *item)
{
@@ -700,7 +706,7 @@
{
double value;
public:
- Item_cache_real() { fixed= 1; null_value= 1; }
+ Item_cache_real(): Item_cache() {}
void store(Item *item)
{
@@ -722,7 +728,7 @@
char buffer[80];
String *value;
public:
- Item_cache_str() { fixed= 1; null_value= 1; }
+ Item_cache_str(): Item_cache() { }
void store(Item *item);
double val();
@@ -737,7 +743,7 @@
Item_cache **values;
uint item_count;
public:
- Item_cache_row(): values(0), item_count(2) { fixed= 1; null_value= 1; }
+ Item_cache_row(): Item_cache(), values(0), item_count(2) {}
/*
'allocate' used only in row transformer, to preallocate space for row
--- 1.53/sql/item_cmpfunc.cc Sat Dec 28 01:01:03 2002
+++ 1.54/sql/item_cmpfunc.cc Sun Jan 26 21:13:30 2003
@@ -290,6 +290,14 @@
if (!cache && !(cache= Item_cache::get_cache(args[0]->result_type())))
return 1;
cache->setup(args[0]);
+ if (cache->cols() == 1)
+ cache->set_used_tables(RAND_TABLE_BIT);
+ else
+ {
+ uint n= cache->cols();
+ for (uint i= 0; i < n; i++)
+ ((Item_cache *)cache->el(i))->set_used_tables(RAND_TABLE_BIT);
+ }
if (args[1]->fix_fields(thd, tables, args))
return 1;
Item_in_subselect * sub= (Item_in_subselect *)args[1];
--- 1.206/sql/sql_select.cc Tue Dec 31 12:49:29 2002
+++ 1.207/sql/sql_select.cc Sun Jan 26 21:13:30 2003
@@ -442,16 +442,6 @@
thd->fatal_error)
DBUG_RETURN(1);
- if (select_lex->dependent)
- {
- /*
- Just remove all const-table optimization in case of depended query
- TODO: optimize
- */
- const_table_map= 0;
- const_tables= 0;
- found_const_table_map= 0;
- }
thd->proc_info= "preparing";
if (result->initialize_tables(this))
{
@@ -4681,8 +4671,11 @@
join->send_records=0;
if (join->tables == join->const_tables)
{
- if (!(error=(*end_select)(join,join_tab,0)) || error == -3)
- error=(*end_select)(join,join_tab,1);
+ if (!join->select_lex->dependent ||
+ ((!join->conds || join->conds->val_int()) &&
+ (!join->having || join->having->val_int())))
+ if (!(error=(*end_select)(join,join_tab,0)) || error == -3)
+ error=(*end_select)(join,join_tab,1);
}
else
{
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail internals-thread6660@xxxxxxxxxxxxxxx
To unsubscribe, e-mail <internals-unsubscribe@xxxxxxxxxxxxxxx>
Next Message by Thread:
click to view message preview
bk commit into 4.1 tree (1.1430)
Below is the list of changes that have just been committed into a local
4.1 repository of bell. When bell does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html
ChangeSet
1.1430 03/01/30 14:35:07 bell@xxxxxxxxxxxxxxx +18 -0
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/sql_select.h
1.37 03/01/30 14:35:05 bell@xxxxxxxxxxxxxxx +0 -1
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/sql_select.cc
1.197 03/01/30 14:35:05 bell@xxxxxxxxxxxxxxx +0 -35
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/sql_parse.cc
1.260 03/01/30 14:35:05 bell@xxxxxxxxxxxxxxx +4 -6
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/sql_class.h
1.140 03/01/30 14:35:05 bell@xxxxxxxxxxxxxxx +0 -4
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/sql_class.cc
1.100 03/01/30 14:35:05 bell@xxxxxxxxxxxxxxx +0 -8
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_subselect.h
1.27 03/01/30 14:35:05 bell@xxxxxxxxxxxxxxx +0 -4
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_subselect.cc
1.53 03/01/30 14:35:05 bell@xxxxxxxxxxxxxxx +0 -24
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_strfunc.h
1.42 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -21
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_row.h
1.10 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -1
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_row.cc
1.12 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -10
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_func.h
1.64 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -9
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_func.cc
1.101 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -31
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_cmpfunc.h
1.42 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -9
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item_cmpfunc.cc
1.64 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -25
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item.h
1.52 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -6
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
sql/item.cc
1.51 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +0 -23
cyclic reference test removed, becouse testing of Item::fixed field apply
more strict limitation
mysql-test/t/subselect.test
1.53 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +2 -0
test of cyclic reference false alarm
mysql-test/r/subselect.result
1.60 03/01/30 14:35:04 bell@xxxxxxxxxxxxxxx +3 -0
test of cyclic reference false alarm
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: bell
# Host: sanja.is.com.ua
# Root: /home/bell/mysql/work-select-4.1
--- 1.50/sql/item.cc Wed Jan 29 19:46:07 2003
+++ 1.51/sql/item.cc Thu Jan 30 14:35:04 2003
@@ -71,19 +71,6 @@
depended_from(item.depended_from)
{}
-bool Item::check_loop(uint id)
-{
- DBUG_ENTER("Item::check_loop");
- DBUG_PRINT("info", ("id %u, name %s", id, name));
- if (loop_id == id)
- {
- DBUG_PRINT("info", ("id match"));
- DBUG_RETURN(1);
- }
- loop_id= id;
- DBUG_RETURN(0);
-}
-
bool Item::check_cols(uint c)
{
if (c != 1)
@@ -680,7 +667,6 @@
return 1;
r->depended_from= last;
cursel->mark_as_dependent(last);
- thd->add_possible_loop(r);
return 0;
}
else
@@ -1170,7 +1156,6 @@
}
ref= (depended_from= last)->ref_pointer_array + counter-1;
thd->lex.current_select->mark_as_dependent(last);
- thd->add_possible_loop(this);
}
}
else if (!ref)
@@ -1206,14 +1191,6 @@
if (ref && (*ref)->check_cols(1))
return 1;
return 0;
-}
-
-bool Item_ref::check_loop(uint id)
-{
- DBUG_ENTER("Item_ref::check_loop");
- if (Item_ident::check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN((*ref)->check_loop(id));
}
bool Item_default_value::eq(const Item *item, bool binary_cmp) const
--- 1.51/sql/item.h Tue Jan 28 15:34:58 2003
+++ 1.52/sql/item.h Thu Jan 30 14:35:04 2003
@@ -92,7 +92,6 @@
virtual bool get_date(TIME *ltime,bool fuzzydate);
virtual bool get_time(TIME *ltime);
virtual bool is_null() { return 0; };
- virtual bool check_loop(uint id);
virtual void top_level_item() {}
virtual Item * get_same() { return this; }
virtual Item * get_tmp_table_item() { return get_same(); }
@@ -500,7 +499,6 @@
enum Item_result result_type () const { return (*ref)->result_type(); }
enum_field_types field_type() const { return (*ref)->field_type(); }
table_map used_tables() const { return (*ref)->used_tables();
}
- bool check_loop(uint id);
};
class Item_in_subselect;
@@ -689,10 +687,6 @@
enum Type type() const { return DEFAULT_VALUE_ITEM; }
bool eq(const Item *item, bool binary_cmp) const;
bool fix_fields(THD *, struct st_table_list *, Item **);
- bool check_loop(uint id)
- {
- return Item_field::check_loop(id) || arg->check_loop(id);
- }
void set_outer_resolving() { arg->set_outer_resolving(); }
void print(String *str);
virtual bool basic_const_item() const { return true; }
--- 1.63/sql/item_cmpfunc.cc Wed Jan 29 20:44:44 2003
+++ 1.64/sql/item_cmpfunc.cc Thu Jan 30 14:35:04 2003
@@ -925,16 +925,6 @@
Item_func::set_outer_resolving();
}
-bool Item_func_case::check_loop(uint id)
-{
- DBUG_ENTER("Item_func_case::check_loop");
- if (Item_func::check_loop(id))
- DBUG_RETURN(1);
-
- DBUG_RETURN((first_expr && first_expr->check_loop(id)) ||
- (else_expr && else_expr->check_loop(id)));
-}
-
void Item_func_case::update_used_tables()
{
Item_func::update_used_tables();
@@ -1484,21 +1474,6 @@
fix_length_and_dec();
fixed= 1;
return 0;
-}
-
-bool Item_cond::check_loop(uint id)
-{
- DBUG_ENTER("Item_cond::check_loop");
- if (Item_func::check_loop(id))
- DBUG_RETURN(1);
- List_iterator<Item> li(list);
- Item *item;
- while ((item= li++))
- {
- if (item->check_loop(id))
- DBUG_RETURN(1);
- }
- DBUG_RETURN(0);
}
void Item_cond::set_outer_resolving()
--- 1.41/sql/item_cmpfunc.h Tue Jan 28 22:28:10 2003
+++ 1.42/sql/item_cmpfunc.h Thu Jan 30 14:35:04 2003
@@ -354,7 +354,6 @@
void print(String *str);
bool fix_fields(THD *thd, struct st_table_list *tlist, Item **ref);
Item *find_item(String *str);
- bool check_loop(uint id);
void set_outer_resolving();
};
@@ -637,13 +636,6 @@
const char *func_name() const { return " IN "; }
void update_used_tables();
void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
- bool check_loop(uint id)
- {
- DBUG_ENTER("Item_func_in::check_loop");
- if (Item_func::check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN(item->check_loop(id));
- }
bool nulls_in_row();
void set_outer_resolving()
{
@@ -789,7 +781,6 @@
void print(String *str);
void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
friend int setup_conds(THD *thd,TABLE_LIST *tables,COND **conds);
- bool check_loop(uint id);
void top_level_item() { abort_on_null=1; }
void set_outer_resolving();
};
--- 1.100/sql/item_func.cc Wed Jan 29 20:44:44 2003
+++ 1.101/sql/item_func.cc Thu Jan 30 14:35:04 2003
@@ -128,23 +128,6 @@
return 0;
}
-bool Item_func::check_loop(uint id)
-{
- DBUG_ENTER("Item_func::check_loop");
- if (Item_result_field::check_loop(id))
- DBUG_RETURN(1);
- if (arg_count)
- {
- Item **arg,**arg_end;
- for (arg= args, arg_end= args+arg_count; arg != arg_end; arg++)
- {
- if ((*arg)->check_loop(id))
- DBUG_RETURN(1);
- }
- }
- DBUG_RETURN(0);
-}
-
void Item_func::set_outer_resolving()
{
if (arg_count)
@@ -2363,20 +2346,6 @@
}
return 0;
-}
-
-bool Item_func_match::check_loop(uint id)
-{
- DBUG_ENTER("Item_func_match::check_loop");
- if (Item_real_func::check_loop(id))
- DBUG_RETURN(1);
-
- List_iterator<Item> li(fields);
- Item *item;
- while ((item= li++))
- if (item->check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN(0);
}
void Item_func_match::set_outer_resolving()
--- 1.63/sql/item_func.h Sat Jan 25 13:19:44 2003
+++ 1.64/sql/item_func.h Thu Jan 30 14:35:04 2003
@@ -133,7 +133,6 @@
friend class udf_handler;
Field *tmp_table_field() { return result_field; }
Field *tmp_table_field(TABLE *t_arg);
- bool check_loop(uint id);
void set_outer_resolving();
Item * get_tmp_table_item();
};
@@ -627,13 +626,6 @@
const_item_cache&= item->const_item();
with_sum_func= with_sum_func || item->with_sum_func;
}
- bool check_loop(uint id)
- {
- DBUG_ENTER("Item_func_field::check_loop");
- if (Item_int_func::check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN(item->check_loop(id));
- }
void set_outer_resolving()
{
item->set_outer_resolving();
@@ -1013,7 +1005,6 @@
bool fix_index();
void init_search(bool no_order);
- bool check_loop(uint id);
void set_outer_resolving();
};
--- 1.41/sql/item_strfunc.h Wed Jan 29 15:31:15 2003
+++ 1.42/sql/item_strfunc.h Thu Jan 30 14:35:04 2003
@@ -106,13 +106,6 @@
Item_func::fix_fields(thd, tlist, ref));
}
const char *func_name() const { return "concat_ws"; }
- bool check_loop(uint id)
- {
- DBUG_ENTER("Item_func_concat_ws::check_loop");
- if (Item_str_func::check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN(separator->check_loop(id));
- }
void set_outer_resolving()
{
separator->set_outer_resolving();
@@ -389,13 +382,6 @@
void fix_length_and_dec();
void update_used_tables();
const char *func_name() const { return "elt"; }
- bool check_loop(uint id)
- {
- DBUG_ENTER("Item_func_elt::check_loop");
- if (Item_str_func::check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN(item->check_loop(id));
- }
void set_outer_resolving()
{
item->set_outer_resolving();
@@ -422,13 +408,6 @@
void fix_length_and_dec();
void update_used_tables();
const char *func_name() const { return "make_set"; }
- bool check_loop(uint id)
- {
- DBUG_ENTER("Item_func_make_set::check_loop");
- if (Item_str_func::check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN(item->check_loop(id));
- }
void set_outer_resolving()
{
item->set_outer_resolving();
--- 1.99/sql/sql_class.cc Wed Jan 29 15:31:17 2003
+++ 1.100/sql/sql_class.cc Thu Jan 30 14:35:05 2003
@@ -479,14 +479,6 @@
}
#endif
-void THD::add_possible_loop (Item *item)
-{
- if (!possible_loops)
- {
- possible_loops= new List<Item>;
- }
- possible_loops->push_back(item);
-}
/*****************************************************************************
** Functions to provide a interface to select results
--- 1.139/sql/sql_class.h Sun Jan 26 21:29:01 2003
+++ 1.140/sql/sql_class.h Thu Jan 30 14:35:05 2003
@@ -506,7 +506,6 @@
table_map used_tables;
USER_CONN *user_connect;
CHARSET_INFO *db_charset;
- List<Item> *possible_loops; // Items that may cause loops in subselects
List<TABLE> temporary_tables_should_be_free; // list of temporary tables
List <MYSQL_ERROR> warn_list;
uint warn_count[(uint) MYSQL_ERROR::WARN_LEVEL_END];
@@ -521,7 +520,6 @@
uint32 query_length;
uint32 db_length;
uint select_number; //number of select (used for EXPLAIN)
- uint check_loops_counter; //last id used to check loops
/* variables.transaction_isolation is reset to this after each commit */
enum_tx_isolation session_tx_isolation;
// extend scramble to handle new auth
@@ -661,8 +659,6 @@
#else
void clear_error();
#endif
-
- void add_possible_loop(Item *);
};
/*
--- 1.259/sql/sql_parse.cc Wed Jan 29 19:46:07 2003
+++ 1.260/sql/sql_parse.cc Thu Jan 30 14:35:05 2003
@@ -3146,18 +3146,16 @@
lex->select_lex.prev= &lex->unit.slave;
lex->select_lex.link_next= lex->select_lex.slave= lex->select_lex.next= 0;
lex->select_lex.link_prev= (st_select_lex_node**)&(lex->all_selects_list);
- lex->olap=lex->describe=0;
+ lex->olap=lex->describe= 0;
lex->derived_tables= false;
- lex->lock_option=TL_READ;
- lex->found_colon=0;
- thd->check_loops_counter= thd->select_number=
- lex->select_lex.select_number= 1;
+ lex->lock_option= TL_READ;
+ lex->found_colon= 0;
+ thd->select_number= lex->select_lex.select_number= 1;
thd->free_list= 0;
thd->total_warn_count=0; // Warnings for this query
thd->last_insert_id_used= thd->query_start_used= thd->insert_id_used=0;
thd->sent_row_count= thd->examined_row_count= 0;
thd->fatal_error= thd->rand_used= 0;
- thd->possible_loops= 0;
thd->server_status &= ~SERVER_MORE_RESULTS_EXISTS;
DBUG_VOID_RETURN;
}
--- 1.196/sql/sql_select.cc Wed Jan 29 19:46:07 2003
+++ 1.197/sql/sql_select.cc Thu Jan 30 14:35:05 2003
@@ -1274,24 +1274,6 @@
DBUG_RETURN(error);
}
-bool JOIN::check_loop(uint id)
-{
- DBUG_ENTER("JOIN::check_loop");
- Item *item;
- List_iterator<Item> it(all_fields);
- DBUG_PRINT("info", ("all_fields:"));
- while ((item= it++))
- if (item->check_loop(id))
- DBUG_RETURN(1);
- DBUG_PRINT("info", ("where:"));
- if (select_lex->where && select_lex->where->check_loop(id))
- DBUG_RETURN(1);
- DBUG_PRINT("info", ("having:"));
- if (select_lex->having && select_lex->having->check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN(0);
-}
-
int
mysql_select(THD *thd, Item ***rref_pointer_array,
TABLE_LIST *tables, uint wild_num, List<Item> &fields,
@@ -1328,23 +1310,6 @@
select_lex, unit, fake_select_lex, tables_OK))
{
DBUG_RETURN(-1);
- }
- if (thd->possible_loops)
- {
- Item *item;
- while (thd->possible_loops->elements)
- {
- item= thd->possible_loops->pop();
- if (item->check_loop(thd->check_loops_counter++))
- {
- delete thd->possible_loops;
- thd->possible_loops= 0;
- my_message(ER_CYCLIC_REFERENCE, ER(ER_CYCLIC_REFERENCE), MYF(0));
- return 1;
- }
- }
- delete thd->possible_loops;
- thd->possible_loops= 0;
}
}
--- 1.36/sql/sql_select.h Wed Jan 29 19:42:36 2003
+++ 1.37/sql/sql_select.h Thu Jan 30 14:35:05 2003
@@ -261,7 +261,6 @@
int reinit();
void exec();
int cleanup(THD *thd);
- bool check_loop(uint id);
void restore_tmp();
inline void init_items_ref_array()
--- 1.59/mysql-test/r/subselect.result Wed Jan 29 19:42:36 2003
+++ 1.60/mysql-test/r/subselect.result Thu Jan 30 14:35:04 2003
@@ -122,6 +122,9 @@
0
SELECT (SELECT * FROM (SELECT 'test' a,'test' b) a);
Cardinality error (more/less than 1 columns)
+SELECT 1 as a,(SELECT a+a) b,(SELECT b);
+a b (SELECT b)
+1 2 2
create table t1 (a int);
create table t2 (a int, b int);
create table t3 (a int);
--- 1.52/mysql-test/t/subselect.test Wed Jan 29 19:42:36 2003
+++ 1.53/mysql-test/t/subselect.test Thu Jan 30 14:35:04 2003
@@ -54,6 +54,8 @@
-- error 1239
SELECT (SELECT * FROM (SELECT 'test' a,'test' b) a);
+SELECT 1 as a,(SELECT a+a) b,(SELECT b);
+
create table t1 (a int);
create table t2 (a int, b int);
create table t3 (a int);
--- 1.11/sql/item_row.cc Wed Jan 29 20:44:44 2003
+++ 1.12/sql/item_row.cc Thu Jan 30 14:35:04 2003
@@ -120,13 +120,3 @@
for (uint i= 0; i < arg_count; i++)
items[i]->set_outer_resolving();
}
-
-bool Item_row::check_loop(uint id)
-{
- if (Item::check_loop(id))
- return 1;
- for (uint i= 0; i < arg_count; i++)
- if (items[i]->check_loop(id))
- return 1;
- return 0;
-}
--- 1.9/sql/item_row.h Wed Jan 29 20:44:44 2003
+++ 1.10/sql/item_row.h Thu Jan 30 14:35:04 2003
@@ -68,7 +68,6 @@
bool const_item() const { return const_item_cache; };
enum Item_result result_type() const { return ROW_RESULT; }
void update_used_tables();
- bool check_loop(uint id);
void set_outer_resolving();
uint cols() { return arg_count; }
--- 1.52/sql/item_subselect.cc Wed Jan 29 19:42:36 2003
+++ 1.53/sql/item_subselect.cc Thu Jan 30 14:35:05 2003
@@ -108,15 +108,6 @@
return res;
}
-bool Item_subselect::check_loop(uint id)
-{
- DBUG_ENTER("Item_subselect::check_loop");
- if (Item_result_field::check_loop(id))
- DBUG_RETURN(1);
-
- DBUG_RETURN(engine->check_loop(id));
-}
-
Item::Type Item_subselect::type() const
{
return SUBSELECT_ITEM;
@@ -856,21 +847,6 @@
bool subselect_union_engine::uncacheable()
{
return unit->uncacheable;
-}
-
-bool subselect_single_select_engine::check_loop(uint id)
-{
- DBUG_ENTER("subselect_single_select_engine::check_loop");
- DBUG_RETURN(join->check_loop(id));
-}
-
-bool subselect_union_engine::check_loop(uint id)
-{
- DBUG_ENTER("subselect_union_engine::check_loop");
- for (SELECT_LEX *sl= unit->first_select(); sl; sl= sl->next_select())
- if (sl->join && sl->join->check_loop(id))
- DBUG_RETURN(1);
- DBUG_RETURN(0);
}
void subselect_single_select_engine::exclude()
--- 1.26/sql/item_subselect.h Tue Jan 28 14:48:10 2003
+++ 1.27/sql/item_subselect.h Thu Jan 30 14:35:05 2003
@@ -83,7 +83,6 @@
bool fix_fields(THD *thd, TABLE_LIST *tables, Item **ref);
virtual void fix_length_and_dec();
table_map used_tables() const;
- bool check_loop(uint id);
friend class select_subselect;
friend class Item_in_optimizer;
@@ -226,7 +225,6 @@
virtual bool dependent()= 0; /* depended from outer select */
virtual bool uncacheable()= 0; /* query is uncacheable */
enum Item_result type() { return res_type; }
- virtual bool check_loop(uint id)= 0;
virtual void exclude()= 0;
bool may_be_null() { return maybe_null; };
};
@@ -248,7 +246,6 @@
uint cols();
bool dependent();
bool uncacheable();
- bool check_loop(uint id);
void exclude();
};
@@ -266,6 +263,5 @@
uint cols();
bool dependent();
bool uncacheable();
- bool check_loop(uint id);
void exclude();
};
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail internals-thread6764@xxxxxxxxxxxxxxx
To unsubscribe, e-mail <internals-unsubscribe@xxxxxxxxxxxxxxx>
|
|