Commit 3695c641 authored by monty@mashka.mysql.fi's avatar monty@mashka.mysql.fi

Merge work:/home/bk/mysql-4.1 into mashka.mysql.fi:/home/my/mysql-4.1

parents 9d000c32 7b1ed961
...@@ -496,18 +496,28 @@ built GEOMETRY value. ...@@ -496,18 +496,28 @@ built GEOMETRY value.
* |*LineFromText(lineStringTaggedText String [,SRID * |*LineFromText(lineStringTaggedText String [,SRID
Integer]):LineString *| - constructs a LineString Integer]):LineString *| - constructs a LineString
. |*LineStringFromText()*| - synonym for LineFromText().
* |*PolyFromText(polygonTaggedText String [,SRID Integer]):Polygon * |*PolyFromText(polygonTaggedText String [,SRID Integer]):Polygon
*|- constructs a Polygon *|- constructs a Polygon
|*PolygonFromText()*| - synonym for PolyFromText().
* |*MPointFromText(multiPointTaggedText String [,SRID * |*MPointFromText(multiPointTaggedText String [,SRID
Integer]):MultiPoint *| - constructs a MultiPoint Integer]):MultiPoint *| - constructs a MultiPoint
|*MultiPointFromText()*| - synonym for MPointFromText().
* |*MLineFromText(multiLineStringTaggedText String [,SRID * |*MLineFromText(multiLineStringTaggedText String [,SRID
Integer]):MultiLineString *| - constructs a MultiLineString Integer]):MultiLineString *| - constructs a MultiLineString
|*MultiLineStringFromText()*| - synonym for MLineFromText().
* |*MPolyFromText(multiPolygonTaggedText String [,SRID * |*MPolyFromText(multiPolygonTaggedText String [,SRID
Integer]):MultiPolygon *| - constructs a MultiPolygon Integer]):MultiPolygon *| - constructs a MultiPolygon
|*MultiPolygonFromText()*| - synonym for MPolyFromText().
* |*GeomCollFromText(geometryCollectionTaggedText String [,SRID * |*GeomCollFromText(geometryCollectionTaggedText String [,SRID
Integer]):GeomCollection *| - constructs a GeometryCollection Integer]):GeomCollection *| - constructs a GeometryCollection
...@@ -844,7 +854,10 @@ implementation of several spatial field types correspondent to every ...@@ -844,7 +854,10 @@ implementation of several spatial field types correspondent to every
instansiable object subclass. For example a *Point* type is proposed to instansiable object subclass. For example a *Point* type is proposed to
restrict data stored in a field of this type to only Point OpenGIS restrict data stored in a field of this type to only Point OpenGIS
subclass. MySQL provides an implementation of single GEOMETRY type which subclass. MySQL provides an implementation of single GEOMETRY type which
doesn't restrict objects to certain OpenGIS subclass. doesn't restrict objects to certain OpenGIS subclass. Other proposed
spatial field types are mapped into GEOMETRY type, so all these types
can be used as a symonym for GEOMETRY: POINT, MULTIPOINT, LINESTRING,
MULTILINESTRING, POLYGON, MULTIPOLYGON.
9.2 No additional Metadata Views 9.2 No additional Metadata Views
......
This diff is collapsed.
...@@ -2084,7 +2084,7 @@ Try also with PIPE or TCP/IP ...@@ -2084,7 +2084,7 @@ Try also with PIPE or TCP/IP
} }
sock_addr.sin_port = (ushort) htons((ushort) port); sock_addr.sin_port = (ushort) htons((ushort) port);
if (my_connect(sock,(struct sockaddr *) &sock_addr, sizeof(sock_addr), if (my_connect(sock,(struct sockaddr *) &sock_addr, sizeof(sock_addr),
mysql->options.connect_timeout) <0) mysql->options.connect_timeout))
{ {
DBUG_PRINT("error",("Got error %d on connect to '%s'",socket_errno,host)); DBUG_PRINT("error",("Got error %d on connect to '%s'",socket_errno,host));
net->last_errno= CR_CONN_HOST_ERROR; net->last_errno= CR_CONN_HOST_ERROR;
...@@ -4043,6 +4043,7 @@ unsigned int alloc_stmt_fields(MYSQL_STMT *stmt) ...@@ -4043,6 +4043,7 @@ unsigned int alloc_stmt_fields(MYSQL_STMT *stmt)
field->org_table= strdup_root(alloc,fields->org_table); field->org_table= strdup_root(alloc,fields->org_table);
field->name = strdup_root(alloc,fields->name); field->name = strdup_root(alloc,fields->name);
field->org_name = strdup_root(alloc,fields->org_name); field->org_name = strdup_root(alloc,fields->org_name);
field->charsetnr= fields->charsetnr;
field->length = fields->length; field->length = fields->length;
field->type = fields->type; field->type = fields->type;
field->flags = fields->flags; field->flags = fields->flags;
...@@ -4767,13 +4768,13 @@ static void send_data_long(MYSQL_BIND *param, longlong value) ...@@ -4767,13 +4768,13 @@ static void send_data_long(MYSQL_BIND *param, longlong value)
*param->buffer= (uchar) value; *param->buffer= (uchar) value;
break; break;
case MYSQL_TYPE_SHORT: case MYSQL_TYPE_SHORT:
int2store(buffer, (short)value); int2store(buffer, value);
break; break;
case MYSQL_TYPE_LONG: case MYSQL_TYPE_LONG:
int4store(buffer, (int32)value); int4store(buffer, value);
break; break;
case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONGLONG:
int8store(buffer, (longlong)value); int8store(buffer, value);
break; break;
case MYSQL_TYPE_FLOAT: case MYSQL_TYPE_FLOAT:
{ {
...@@ -4810,7 +4811,7 @@ static void send_data_double(MYSQL_BIND *param, double value) ...@@ -4810,7 +4811,7 @@ static void send_data_double(MYSQL_BIND *param, double value)
int2store(buffer, (short)value); int2store(buffer, (short)value);
break; break;
case MYSQL_TYPE_LONG: case MYSQL_TYPE_LONG:
int4store(buffer, (int32)value); int4store(buffer, (long)value);
break; break;
case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONGLONG:
int8store(buffer, (longlong)value); int8store(buffer, (longlong)value);
...@@ -4947,30 +4948,37 @@ static void send_data_time(MYSQL_BIND *param, MYSQL_TIME ltime, ...@@ -4947,30 +4948,37 @@ static void send_data_time(MYSQL_BIND *param, MYSQL_TIME ltime,
/* Fetch data to buffers */ /* Fetch data to buffers */
static void fetch_results(MYSQL_BIND *param, uint field_type, uchar **row) static void fetch_results(MYSQL_BIND *param, uint field_type, uchar **row,
my_bool field_is_unsigned)
{ {
ulong length; ulong length;
switch (field_type) { switch (field_type) {
case MYSQL_TYPE_TINY: case MYSQL_TYPE_TINY:
{ {
uchar value= (uchar) **row; char value= (char) **row;
send_data_long(param,(longlong)value); longlong data= (field_is_unsigned) ? (longlong) (unsigned char) value:
(longlong) value;
send_data_long(param,data);
length= 1; length= 1;
break; break;
} }
case MYSQL_TYPE_SHORT: case MYSQL_TYPE_SHORT:
case MYSQL_TYPE_YEAR: case MYSQL_TYPE_YEAR:
{ {
short value= (short)sint2korr(*row); short value= sint2korr(*row);
send_data_long(param,(longlong)value); longlong data= (field_is_unsigned) ? (longlong) (unsigned short) value:
(longlong) value;
send_data_long(param,data);
length= 2; length= 2;
break; break;
} }
case MYSQL_TYPE_LONG: case MYSQL_TYPE_LONG:
{ {
int32 value= (int32)sint4korr(*row); long value= sint4korr(*row);
send_data_long(param,(int32)value); longlong data= (field_is_unsigned) ? (longlong) (unsigned long) value:
(longlong) value;
send_data_long(param,data);
length= 4; length= 4;
break; break;
} }
...@@ -4985,7 +4993,7 @@ static void fetch_results(MYSQL_BIND *param, uint field_type, uchar **row) ...@@ -4985,7 +4993,7 @@ static void fetch_results(MYSQL_BIND *param, uint field_type, uchar **row)
{ {
float value; float value;
float4get(value,*row); float4get(value,*row);
send_data_double(param,(double)value); send_data_double(param,value);
length= 4; length= 4;
break; break;
} }
...@@ -4993,7 +5001,7 @@ static void fetch_results(MYSQL_BIND *param, uint field_type, uchar **row) ...@@ -4993,7 +5001,7 @@ static void fetch_results(MYSQL_BIND *param, uint field_type, uchar **row)
{ {
double value; double value;
float8get(value,*row); float8get(value,*row);
send_data_double(param,(double)value); send_data_double(param,value);
length= 8; length= 8;
break; break;
} }
...@@ -5241,7 +5249,10 @@ static int stmt_fetch_row(MYSQL_STMT *stmt, uchar *row) ...@@ -5241,7 +5249,10 @@ static int stmt_fetch_row(MYSQL_STMT *stmt, uchar *row)
if (field->type == bind->buffer_type) if (field->type == bind->buffer_type)
(*bind->fetch_result)(bind, &row); (*bind->fetch_result)(bind, &row);
else else
fetch_results(bind, field->type, &row); {
my_bool field_is_unsigned= (field->flags & UNSIGNED_FLAG) ? 1: 0;
fetch_results(bind, field->type, &row, field_is_unsigned);
}
} }
if (! ((bit<<=1) & 255)) if (! ((bit<<=1) & 255))
{ {
......
...@@ -503,7 +503,7 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key, ...@@ -503,7 +503,7 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key,
return res; return res;
} }
switch ((res = rtree_insert_req(info, &keyinfo[keynr], key, key_length, switch ((res = rtree_insert_req(info, keyinfo, key, key_length,
old_root, &new_page, ins_level, 0))) old_root, &new_page, ins_level, 0)))
{ {
case 0: /* root was not split */ case 0: /* root was not split */
......
...@@ -272,7 +272,6 @@ echo "Starting $MYSQLD daemon with databases from $DATADIR" ...@@ -272,7 +272,6 @@ echo "Starting $MYSQLD daemon with databases from $DATADIR"
echo "`date +'%y%m%d %H:%M:%S mysqld started'`" >> $err_log echo "`date +'%y%m%d %H:%M:%S mysqld started'`" >> $err_log
while true while true
do do
rm -f $MYSQL_UNIX_PORT $pid_file # Some extra safety
if test -z "$args" if test -z "$args"
then then
$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file @MYSQLD_DEFAULT_SWITCHES@ >> $err_log 2>&1 $NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file @MYSQLD_DEFAULT_SWITCHES@ >> $err_log 2>&1
...@@ -311,7 +310,7 @@ do ...@@ -311,7 +310,7 @@ do
I=`expr $I + 1` I=`expr $I + 1`
done done
fi fi
rm -f $MYSQL_UNIX_PORT $pid_file # Some extra safety
echo "`date +'%y%m%d %H:%M:%S'` mysqld restarted" | tee -a $err_log echo "`date +'%y%m%d %H:%M:%S'` mysqld restarted" | tee -a $err_log
done done
......
...@@ -1913,7 +1913,7 @@ int Field_longlong::store(const char *from,uint len,CHARSET_INFO *cs) ...@@ -1913,7 +1913,7 @@ int Field_longlong::store(const char *from,uint len,CHARSET_INFO *cs)
char *end; char *end;
tmp= cs->scan(cs, from, from+len, MY_SEQ_SPACES); tmp= cs->scan(cs, from, from+len, MY_SEQ_SPACES);
len-= tmp; len-= (uint)tmp;
from+= tmp; from+= tmp;
my_errno=0; my_errno=0;
if (unsigned_flag) if (unsigned_flag)
......
...@@ -50,7 +50,7 @@ public: ...@@ -50,7 +50,7 @@ public:
fixed= 1; fixed= 1;
return 0; return 0;
} }
Item_sum *copy_or_same(THD* thd) Item *copy_or_same(THD* thd)
{ {
return new Item_sum_unique_users(thd, *this); return new Item_sum_unique_users(thd, *this);
} }
......
...@@ -222,6 +222,7 @@ static SYMBOL symbols[] = { ...@@ -222,6 +222,7 @@ static SYMBOL symbols[] = {
{ "LEVEL", SYM(LEVEL_SYM),0,0}, { "LEVEL", SYM(LEVEL_SYM),0,0},
{ "LIKE", SYM(LIKE),0,0}, { "LIKE", SYM(LIKE),0,0},
{ "LINES", SYM(LINES),0,0}, { "LINES", SYM(LINES),0,0},
{ "LINESTRING", SYM(LINESTRING),0,0},
{ "LIMIT", SYM(LIMIT),0,0}, { "LIMIT", SYM(LIMIT),0,0},
{ "LOAD", SYM(LOAD),0,0}, { "LOAD", SYM(LOAD),0,0},
{ "LOCAL", SYM(LOCAL_SYM),0,0}, { "LOCAL", SYM(LOCAL_SYM),0,0},
...@@ -261,6 +262,9 @@ static SYMBOL symbols[] = { ...@@ -261,6 +262,9 @@ static SYMBOL symbols[] = {
{ "MODE", SYM(MODE_SYM),0,0}, { "MODE", SYM(MODE_SYM),0,0},
{ "MODIFY", SYM(MODIFY_SYM),0,0}, { "MODIFY", SYM(MODIFY_SYM),0,0},
{ "MONTH", SYM(MONTH_SYM),0,0}, { "MONTH", SYM(MONTH_SYM),0,0},
{ "MULTILINESTRING", SYM(MULTILINESTRING),0,0},
{ "MULTIPOINT", SYM(MULTIPOINT),0,0},
{ "MULTIPOLYGON", SYM(MULTIPOLYGON),0,0},
{ "MRG_MYISAM", SYM(MERGE_SYM),0,0}, { "MRG_MYISAM", SYM(MERGE_SYM),0,0},
{ "MYISAM", SYM(MYISAM_SYM),0,0}, { "MYISAM", SYM(MYISAM_SYM),0,0},
{ "NATURAL", SYM(NATURAL),0,0}, { "NATURAL", SYM(NATURAL),0,0},
...@@ -286,6 +290,8 @@ static SYMBOL symbols[] = { ...@@ -286,6 +290,8 @@ static SYMBOL symbols[] = {
{ "PACK_KEYS", SYM(PACK_KEYS_SYM),0,0}, { "PACK_KEYS", SYM(PACK_KEYS_SYM),0,0},
{ "PARTIAL", SYM(PARTIAL),0,0}, { "PARTIAL", SYM(PARTIAL),0,0},
{ "PASSWORD", SYM(PASSWORD),0,0}, { "PASSWORD", SYM(PASSWORD),0,0},
{ "POINT", SYM(POINT),0,0},
{ "POLYGON", SYM(POLYGON),0,0},
{ "PURGE", SYM(PURGE),0,0}, { "PURGE", SYM(PURGE),0,0},
{ "PRECISION", SYM(PRECISION),0,0}, { "PRECISION", SYM(PRECISION),0,0},
{ "PREV", SYM(PREV_SYM),0,0}, { "PREV", SYM(PREV_SYM),0,0},
...@@ -503,7 +509,7 @@ static SYMBOL sql_functions[] = { ...@@ -503,7 +509,7 @@ static SYMBOL sql_functions[] = {
{ "LENGTH", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_length)}, { "LENGTH", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_length)},
{ "LN", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ln)}, { "LN", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ln)},
{ "LINEFROMTEXT", SYM(LINEFROMTEXT),0,0}, { "LINEFROMTEXT", SYM(LINEFROMTEXT),0,0},
{ "LINESTRING", SYM(LINESTRING),0,0}, { "LINESTRINGFROMTEXT",SYM(LINEFROMTEXT),0,0},
{ "LOAD_FILE", SYM(FUNC_ARG1),0,CREATE_FUNC(create_load_file)}, { "LOAD_FILE", SYM(FUNC_ARG1),0,CREATE_FUNC(create_load_file)},
{ "LOCATE", SYM(LOCATE),0,0}, { "LOCATE", SYM(LOCATE),0,0},
{ "LOG", SYM(LOG_SYM),0,0}, { "LOG", SYM(LOG_SYM),0,0},
...@@ -521,14 +527,13 @@ static SYMBOL sql_functions[] = { ...@@ -521,14 +527,13 @@ static SYMBOL sql_functions[] = {
{ "MLINEFROMTEXT", SYM(MLINEFROMTEXT),0,0}, { "MLINEFROMTEXT", SYM(MLINEFROMTEXT),0,0},
{ "MPOINTFROMTEXT", SYM(MPOINTFROMTEXT),0,0}, { "MPOINTFROMTEXT", SYM(MPOINTFROMTEXT),0,0},
{ "MPOLYFROMTEXT", SYM(MPOLYFROMTEXT),0,0}, { "MPOLYFROMTEXT", SYM(MPOLYFROMTEXT),0,0},
{ "MULTILINESTRING", SYM(MULTILINESTRING),0,0},
{ "MULTIPOINT", SYM(MULTIPOINT),0,0},
{ "MULTIPOLYGON", SYM(MULTIPOLYGON),0,0},
{ "MONTHNAME", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_monthname)}, { "MONTHNAME", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_monthname)},
{ "MULTILINESTRINGFROMTEXT",SYM(MLINEFROMTEXT),0,0},
{ "MULTIPOLYGONFROMTEXT",SYM(MPOLYFROMTEXT),0,0},
{ "NOW", SYM(NOW_SYM),0,0}, { "NOW", SYM(NOW_SYM),0,0},
{ "NULLIF", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_nullif)}, { "NULLIF", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_nullif)},
{ "NUMGEOMETRIES", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_numgeometries)}, { "NUMGEOMETRIES", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_numgeometries)},
{ "NUMINTERIORRING", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_numinteriorring)}, { "NUMINTERIORRINGS", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_numinteriorring)},
{ "NUMPOINTS", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_numpoints)}, { "NUMPOINTS", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_numpoints)},
{ "OCTET_LENGTH", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_length)}, { "OCTET_LENGTH", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_length)},
{ "OCT", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_oct)}, { "OCT", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_oct)},
...@@ -538,11 +543,10 @@ static SYMBOL sql_functions[] = { ...@@ -538,11 +543,10 @@ static SYMBOL sql_functions[] = {
{ "PERIOD_ADD", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_period_add)}, { "PERIOD_ADD", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_period_add)},
{ "PERIOD_DIFF", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_period_diff)}, { "PERIOD_DIFF", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_period_diff)},
{ "PI", SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_pi)}, { "PI", SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_pi)},
{ "POINT", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_point)},
{ "POINTFROMTEXT", SYM(POINTFROMTEXT),0,0}, { "POINTFROMTEXT", SYM(POINTFROMTEXT),0,0},
{ "POINTN", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_pointn)}, { "POINTN", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_pointn)},
{ "POLYFROMTEXT", SYM(POLYFROMTEXT),0,0}, { "POLYFROMTEXT", SYM(POLYFROMTEXT),0,0},
{ "POLYGON", SYM(POLYGON),0,0}, { "POLYGONFROMTEXT", SYM(POLYFROMTEXT),0,0},
{ "POSITION", SYM(POSITION_SYM),0,0}, { "POSITION", SYM(POSITION_SYM),0,0},
{ "POW", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_pow)}, { "POW", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_pow)},
{ "POWER", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_pow)}, { "POWER", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_pow)},
......
...@@ -72,7 +72,7 @@ int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit, ...@@ -72,7 +72,7 @@ int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit,
TABLE_LIST *tables= (TABLE_LIST *)sl->table_list.first; TABLE_LIST *tables= (TABLE_LIST *)sl->table_list.first;
TMP_TABLE_PARAM tmp_table_param; TMP_TABLE_PARAM tmp_table_param;
bool is_union= sl->next_select() && sl->next_select()->linkage == UNION_TYPE; bool is_union= sl->next_select() && sl->next_select()->linkage == UNION_TYPE;
bool is_subsel= sl->first_inner_unit(); bool is_subsel= sl->first_inner_unit() ? 1: 0;
SELECT_LEX_NODE *save_current_select= lex->current_select; SELECT_LEX_NODE *save_current_select= lex->current_select;
DBUG_ENTER("mysql_derived"); DBUG_ENTER("mysql_derived");
......
...@@ -486,6 +486,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); ...@@ -486,6 +486,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token NOW_SYM %token NOW_SYM
%token PASSWORD %token PASSWORD
%token POINTFROMTEXT %token POINTFROMTEXT
%token POINT
%token POLYFROMTEXT %token POLYFROMTEXT
%token POLYGON %token POLYGON
%token POSITION_SYM %token POSITION_SYM
...@@ -1145,6 +1146,18 @@ type: ...@@ -1145,6 +1146,18 @@ type:
$$=FIELD_TYPE_BLOB; } $$=FIELD_TYPE_BLOB; }
| GEOMETRY_SYM { Lex->charset=&my_charset_bin; | GEOMETRY_SYM { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_GEOMETRY; } $$=FIELD_TYPE_GEOMETRY; }
| POINT { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_GEOMETRY; }
| MULTIPOINT { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_GEOMETRY; }
| LINESTRING { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_GEOMETRY; }
| MULTILINESTRING { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_GEOMETRY; }
| POLYGON { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_GEOMETRY; }
| MULTIPOLYGON { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_GEOMETRY; }
| MEDIUMBLOB { Lex->charset=&my_charset_bin; | MEDIUMBLOB { Lex->charset=&my_charset_bin;
$$=FIELD_TYPE_MEDIUM_BLOB; } $$=FIELD_TYPE_MEDIUM_BLOB; }
| LONGBLOB { Lex->charset=&my_charset_bin; | LONGBLOB { Lex->charset=&my_charset_bin;
...@@ -2299,6 +2312,8 @@ simple_expr: ...@@ -2299,6 +2312,8 @@ simple_expr:
{ $$= new Item_func_password($3); } { $$= new Item_func_password($3); }
| PASSWORD '(' expr ',' expr ')' | PASSWORD '(' expr ',' expr ')'
{ $$= new Item_func_password($3,$5); } { $$= new Item_func_password($3,$5); }
| POINT '(' expr ',' expr ')'
{ $$= new Item_func_point($3,$5); }
| POINTFROMTEXT '(' expr ')' | POINTFROMTEXT '(' expr ')'
{ $$= new Item_func_geometry_from_text($3); } { $$= new Item_func_geometry_from_text($3); }
| POINTFROMTEXT '(' expr ',' expr ')' | POINTFROMTEXT '(' expr ',' expr ')'
...@@ -3966,6 +3981,7 @@ keyword: ...@@ -3966,6 +3981,7 @@ keyword:
| FIRST_SYM {} | FIRST_SYM {}
| FIXED_SYM {} | FIXED_SYM {}
| FLUSH_SYM {} | FLUSH_SYM {}
| GEOMETRY_SYM {}
| GRANTS {} | GRANTS {}
| GLOBAL_SYM {} | GLOBAL_SYM {}
| HANDLER_SYM {} | HANDLER_SYM {}
...@@ -3983,6 +3999,7 @@ keyword: ...@@ -3983,6 +3999,7 @@ keyword:
| IO_THREAD {} | IO_THREAD {}
| LAST_SYM {} | LAST_SYM {}
| LEVEL_SYM {} | LEVEL_SYM {}
| LINESTRING {}
| LOCAL_SYM {} | LOCAL_SYM {}
| LOCKS_SYM {} | LOCKS_SYM {}
| LOGS_SYM {} | LOGS_SYM {}
...@@ -4005,6 +4022,9 @@ keyword: ...@@ -4005,6 +4022,9 @@ keyword:
| MODIFY_SYM {} | MODIFY_SYM {}
| MODE_SYM {} | MODE_SYM {}
| MONTH_SYM {} | MONTH_SYM {}
| MULTILINESTRING {}
| MULTIPOINT {}
| MULTIPOLYGON {}
| MYISAM_SYM {} | MYISAM_SYM {}
| NATIONAL_SYM {} | NATIONAL_SYM {}
| NCHAR_SYM {} | NCHAR_SYM {}
...@@ -4017,6 +4037,8 @@ keyword: ...@@ -4017,6 +4037,8 @@ keyword:
| PACK_KEYS_SYM {} | PACK_KEYS_SYM {}
| PARTIAL {} | PARTIAL {}
| PASSWORD {} | PASSWORD {}
| POINT {}
| POLYGON {}
| PREV_SYM {} | PREV_SYM {}
| PROCESS {} | PROCESS {}
| PROCESSLIST_SYM {} | PROCESSLIST_SYM {}
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment