mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge magare.gmz:/home/kgeorge/mysql/autopush/B29325-5.0-opt
into magare.gmz:/home/kgeorge/mysql/work/B29325-merge-5.1-opt client/mysql.cc: Auto merged include/my_base.h: Auto merged mysql-test/r/ctype_collate.result: Auto merged mysql-test/r/gis-rtree.result: Auto merged mysql-test/t/gis-rtree.test: Auto merged storage/myisam/mi_create.c: Auto merged strings/ctype-simple.c: Auto merged mysys/my_conio.c: 5.0-opt -> 5.1.-opt merge storage/myisam/sp_key.c: 5.0-opt -> 5.1.-opt merge
This commit is contained in:
@@ -1089,6 +1089,11 @@ static int read_and_execute(bool interactive)
|
|||||||
something else is still in console input buffer
|
something else is still in console input buffer
|
||||||
*/
|
*/
|
||||||
} while (tmpbuf.alloced_length() <= clen);
|
} while (tmpbuf.alloced_length() <= clen);
|
||||||
|
/*
|
||||||
|
An empty line is returned from my_cgets when there's error reading :
|
||||||
|
Ctrl-c for example
|
||||||
|
*/
|
||||||
|
if (line)
|
||||||
line= buffer.c_ptr();
|
line= buffer.c_ptr();
|
||||||
#endif /* __NETWARE__ */
|
#endif /* __NETWARE__ */
|
||||||
#else
|
#else
|
||||||
|
@@ -603,3 +603,11 @@ check table t1 extended;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a varchar(2) character set latin7 collate latin7_general_ci,key(a));
|
||||||
|
insert into t1 set a=0x4c20;
|
||||||
|
insert into t1 set a=0x6c;
|
||||||
|
insert into t1 set a=0x4c98;
|
||||||
|
check table t1 extended;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
drop table t1;
|
||||||
|
@@ -1444,3 +1444,16 @@ OPTIMIZE TABLE t1;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 optimize status OK
|
test.t1 optimize status OK
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT, b GEOMETRY NOT NULL, SPATIAL KEY b(b));
|
||||||
|
INSERT INTO t1 VALUES (1, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)'));
|
||||||
|
INSERT INTO t1 VALUES (2, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)'));
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE
|
||||||
|
MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') );
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
SELECT COUNT(*) FROM t1 IGNORE INDEX (b) WHERE
|
||||||
|
MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') );
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
End of 5.0 tests.
|
||||||
|
@@ -218,3 +218,14 @@ insert into t1 set f1=0x3F3F1E563F;
|
|||||||
insert into t1 set f1=0x3F3F;
|
insert into t1 set f1=0x3F3F;
|
||||||
check table t1 extended;
|
check table t1 extended;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#29461: Sort order of the collation wasn't used when comparing characters
|
||||||
|
# with the space character.
|
||||||
|
#
|
||||||
|
create table t1 (a varchar(2) character set latin7 collate latin7_general_ci,key(a));
|
||||||
|
insert into t1 set a=0x4c20;
|
||||||
|
insert into t1 set a=0x6c;
|
||||||
|
insert into t1 set a=0x4c98;
|
||||||
|
check table t1 extended;
|
||||||
|
drop table t1;
|
||||||
|
@@ -827,3 +827,22 @@ INSERT INTO t1 (b) SELECT b FROM t1;
|
|||||||
|
|
||||||
OPTIMIZE TABLE t1;
|
OPTIMIZE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #29070: Error in spatial index
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, b GEOMETRY NOT NULL, SPATIAL KEY b(b));
|
||||||
|
INSERT INTO t1 VALUES (1, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)'));
|
||||||
|
INSERT INTO t1 VALUES (2, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)'));
|
||||||
|
|
||||||
|
# must return the same number as the next select
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE
|
||||||
|
MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') );
|
||||||
|
SELECT COUNT(*) FROM t1 IGNORE INDEX (b) WHERE
|
||||||
|
MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') );
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests.
|
||||||
|
@@ -187,15 +187,19 @@ char* my_cgets(char *buffer, size_t clen, size_t* plen)
|
|||||||
while (GetLastError() == ERROR_NOT_ENOUGH_MEMORY);
|
while (GetLastError() == ERROR_NOT_ENOUGH_MEMORY);
|
||||||
*plen= plen_res;
|
*plen= plen_res;
|
||||||
|
|
||||||
|
/* We go here on error reading the string (Ctrl-C for example) */
|
||||||
|
if (!*plen)
|
||||||
|
result= NULL; /* purecov: inspected */
|
||||||
|
|
||||||
if (result != NULL)
|
if (result != NULL)
|
||||||
{
|
{
|
||||||
if (buffer[*plen - 2] == '\r')
|
if (*plen > 1 && buffer[*plen - 2] == '\r')
|
||||||
{
|
{
|
||||||
*plen= *plen - 2;
|
*plen= *plen - 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (buffer[*plen - 1] == '\r')
|
if (*plen > 0 && buffer[*plen - 1] == '\r')
|
||||||
{
|
{
|
||||||
char tmp[3];
|
char tmp[3];
|
||||||
int tmplen= sizeof(tmp);
|
int tmplen= sizeof(tmp);
|
||||||
|
@@ -615,8 +615,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
(have_iext ? MY_REPLACE_EXT : MY_APPEND_EXT));
|
(have_iext ? MY_REPLACE_EXT : MY_APPEND_EXT));
|
||||||
linkname_ptr=0;
|
linkname_ptr=0;
|
||||||
/* Replace the current file */
|
/* Replace the current file */
|
||||||
if (!(flags & HA_CREATE_KEEP_FILES))
|
create_flag=(flags & HA_CREATE_KEEP_FILES) ? 0 : MY_DELETE_OLD;
|
||||||
create_flag=MY_DELETE_OLD;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -690,8 +689,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
fn_format(filename,name,"", MI_NAME_DEXT,
|
fn_format(filename,name,"", MI_NAME_DEXT,
|
||||||
MY_UNPACK_FILENAME | MY_APPEND_EXT);
|
MY_UNPACK_FILENAME | MY_APPEND_EXT);
|
||||||
linkname_ptr=0;
|
linkname_ptr=0;
|
||||||
if (!(flags & HA_CREATE_KEEP_FILES))
|
create_flag=(flags & HA_CREATE_KEEP_FILES) ? 0 : MY_DELETE_OLD;
|
||||||
create_flag=MY_DELETE_OLD;
|
|
||||||
}
|
}
|
||||||
if ((dfile=
|
if ((dfile=
|
||||||
my_create_with_symlink(linkname_ptr, filename, 0, create_mode,
|
my_create_with_symlink(linkname_ptr, filename, 0, create_mode,
|
||||||
|
@@ -31,11 +31,6 @@ static int sp_get_geometry_mbr(uchar *(*wkb), uchar *end, uint n_dims,
|
|||||||
double *mbr, int top);
|
double *mbr, int top);
|
||||||
static int sp_mbr_from_wkb(uchar (*wkb), uint size, uint n_dims, double *mbr);
|
static int sp_mbr_from_wkb(uchar (*wkb), uint size, uint n_dims, double *mbr);
|
||||||
|
|
||||||
static void get_double(double *d, const uchar *pos)
|
|
||||||
{
|
|
||||||
float8get(*d, pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key,
|
uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key,
|
||||||
const uchar *record, my_off_t filepos)
|
const uchar *record, my_off_t filepos)
|
||||||
{
|
{
|
||||||
@@ -62,48 +57,40 @@ uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key,
|
|||||||
|
|
||||||
for (i = 0, keyseg = keyinfo->seg; keyseg->type; keyseg++, i++)
|
for (i = 0, keyseg = keyinfo->seg; keyseg->type; keyseg++, i++)
|
||||||
{
|
{
|
||||||
uint length = keyseg->length;
|
uint length = keyseg->length, start= keyseg->start;
|
||||||
|
double val;
|
||||||
|
|
||||||
pos = ((uchar*)mbr) + keyseg->start;
|
DBUG_ASSERT(length == sizeof(double));
|
||||||
if (keyseg->flag & HA_SWAP_KEY)
|
DBUG_ASSERT(!(start % sizeof(double)));
|
||||||
{
|
DBUG_ASSERT(start < sizeof(mbr));
|
||||||
|
DBUG_ASSERT(keyseg->type == HA_KEYTYPE_DOUBLE);
|
||||||
|
|
||||||
|
val= mbr[start / sizeof (double)];
|
||||||
#ifdef HAVE_ISNAN
|
#ifdef HAVE_ISNAN
|
||||||
if (keyseg->type == HA_KEYTYPE_FLOAT)
|
if (isnan(val))
|
||||||
{
|
|
||||||
float nr;
|
|
||||||
float4get(nr, pos);
|
|
||||||
if (isnan(nr))
|
|
||||||
{
|
|
||||||
/* Replace NAN with zero */
|
|
||||||
bzero(key, length);
|
|
||||||
key+= length;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (keyseg->type == HA_KEYTYPE_DOUBLE)
|
|
||||||
{
|
|
||||||
double nr;
|
|
||||||
get_double(&nr, pos);
|
|
||||||
if (isnan(nr))
|
|
||||||
{
|
{
|
||||||
bzero(key, length);
|
bzero(key, length);
|
||||||
key+= length;
|
key+= length;
|
||||||
|
len+= length;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
pos += length;
|
|
||||||
while (length--)
|
if (keyseg->flag & HA_SWAP_KEY)
|
||||||
{
|
{
|
||||||
|
char buf[sizeof(double)];
|
||||||
|
|
||||||
|
float8store(buf, val);
|
||||||
|
pos= &buf[length];
|
||||||
|
while (pos > buf)
|
||||||
*key++ = *--pos;
|
*key++ = *--pos;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
memcpy((uchar*)key, pos, length);
|
float8store((byte *)key, val);
|
||||||
key += keyseg->length;
|
key += length;
|
||||||
}
|
}
|
||||||
len += keyseg->length;
|
len+= length;
|
||||||
}
|
}
|
||||||
_mi_dpointer(info, key, filepos);
|
_mi_dpointer(info, key, filepos);
|
||||||
return len;
|
return len;
|
||||||
@@ -141,13 +128,13 @@ static int sp_add_point_to_mbr(uchar *(*wkb), uchar *end, uint n_dims,
|
|||||||
{
|
{
|
||||||
if ((*wkb) > end - 8)
|
if ((*wkb) > end - 8)
|
||||||
return -1;
|
return -1;
|
||||||
get_double(&ord, (const uchar*) *wkb);
|
float8get(ord, (const byte*) *wkb);
|
||||||
(*wkb)+= 8;
|
(*wkb)+= 8;
|
||||||
if (ord < *mbr)
|
if (ord < *mbr)
|
||||||
float8store((char*) mbr, ord);
|
*mbr= ord;
|
||||||
mbr++;
|
mbr++;
|
||||||
if (ord > *mbr)
|
if (ord > *mbr)
|
||||||
float8store((char*) mbr, ord);
|
*mbr= ord;
|
||||||
mbr++;
|
mbr++;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -185,7 +185,7 @@ int my_strnncollsp_simple(CHARSET_INFO * cs, const uchar *a, size_t a_length,
|
|||||||
}
|
}
|
||||||
for (end= a + a_length-length; a < end ; a++)
|
for (end= a + a_length-length; a < end ; a++)
|
||||||
{
|
{
|
||||||
if (*a != ' ')
|
if (map[*a] != ' ')
|
||||||
return (map[*a] < ' ') ? -swap : swap;
|
return (map[*a] < ' ') ? -swap : swap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user