diff options
-rw-r--r-- | include/violite.h | 4 | ||||
-rw-r--r-- | mysql-test/r/ctype_cp1251.result | 4 | ||||
-rw-r--r-- | mysql-test/t/ctype_cp1251-master.opt | 2 | ||||
-rw-r--r-- | mysql-test/t/ctype_cp1251.test | 4 | ||||
-rw-r--r-- | sql/sql_parse.cc | 11 | ||||
-rw-r--r-- | sql/sql_select.cc | 30 | ||||
-rw-r--r-- | strings/my_strtoll10-x86.s | 2 | ||||
-rw-r--r-- | vio/test-ssl.c | 4 | ||||
-rw-r--r-- | vio/test-sslclient.c | 4 |
9 files changed, 31 insertions, 34 deletions
diff --git a/include/violite.h b/include/violite.h index a62fe37f45d..97784694e79 100644 --- a/include/violite.h +++ b/include/violite.h @@ -144,8 +144,8 @@ int vio_close_shared_memory(Vio * vio); #if !defined(DONT_MAP_VIO) #define vio_delete(vio) (vio)->viodelete(vio) #define vio_errno(vio) (vio)->vioerrno(vio) -#define vio_read(vio, buf, size) (vio)->read(vio,buf,size) -#define vio_write(vio, buf, size) (vio)->write(vio, buf, size) +#define vio_read(vio, buf, size) ((vio)->read)(vio,buf,size) +#define vio_write(vio, buf, size) ((vio)->write)(vio, buf, size) #define vio_blocking(vio, set_blocking_mode, old_mode)\ (vio)->vioblocking(vio, set_blocking_mode, old_mode) #define vio_is_blocking(vio) (vio)->is_blocking(vio) diff --git a/mysql-test/r/ctype_cp1251.result b/mysql-test/r/ctype_cp1251.result index 647f8c6236c..c65055e726d 100644 --- a/mysql-test/r/ctype_cp1251.result +++ b/mysql-test/r/ctype_cp1251.result @@ -1,6 +1,6 @@ drop table if exists t1; SET NAMES cp1251; -create table t1 (a varchar(10) not null); +create table t1 (a varchar(10) not null) character set cp1251; insert into t1 values ("a"),("ab"),("abc"); select * from t1; a @@ -23,7 +23,7 @@ a b c drop table t1; -create table t1 (a char(15) binary, b binary(15)); +create table t1 (a char(15) binary, b binary(15)) character set cp1251; insert into t1 values ('aaa','bbb'),('AAA','BBB'); select upper(a),upper(b) from t1; upper(a) upper(b) diff --git a/mysql-test/t/ctype_cp1251-master.opt b/mysql-test/t/ctype_cp1251-master.opt deleted file mode 100644 index af089d9f176..00000000000 --- a/mysql-test/t/ctype_cp1251-master.opt +++ /dev/null @@ -1,2 +0,0 @@ ---default-character-set=cp1251 --new - diff --git a/mysql-test/t/ctype_cp1251.test b/mysql-test/t/ctype_cp1251.test index 2d670ec3607..76873e6fa0e 100644 --- a/mysql-test/t/ctype_cp1251.test +++ b/mysql-test/t/ctype_cp1251.test @@ -10,7 +10,7 @@ SET NAMES cp1251; # Test problem with LEFT() (Bug #514) # -create table t1 (a varchar(10) not null); +create table t1 (a varchar(10) not null) character set cp1251; insert into t1 values ("a"),("ab"),("abc"); select * from t1; select a, left(a,1) as b from t1; @@ -21,7 +21,7 @@ drop table t1; # # Test of binary and upper/lower # -create table t1 (a char(15) binary, b binary(15)); +create table t1 (a char(15) binary, b binary(15)) character set cp1251; insert into t1 values ('aaa','bbb'),('AAA','BBB'); select upper(a),upper(b) from t1; select lower(a),lower(b) from t1; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index d765561f61e..ccd3277d785 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4579,6 +4579,7 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv, { #ifndef NO_EMBEDDED_ACCESS_CHECKS ulong db_access; + bool db_is_pattern= test(want_access & GRANT_ACL); #endif ulong dummy; DBUG_ENTER("check_access"); @@ -4610,9 +4611,8 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv, */ db_access= thd->db_access; if (!(thd->master_access & SELECT_ACL) && - (db && (!thd->db || strcmp(db,thd->db)))) - db_access=acl_get(thd->host, thd->ip, - thd->priv_user, db, test(want_access & GRANT_ACL)); + (db && (!thd->db || db_is_pattern || strcmp(db,thd->db)))) + db_access=acl_get(thd->host, thd->ip, thd->priv_user, db, db_is_pattern); *save_priv=thd->master_access | db_access; DBUG_RETURN(FALSE); } @@ -4633,9 +4633,8 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv, if (db == any_db) DBUG_RETURN(FALSE); // Allow select on anything - if (db && (!thd->db || strcmp(db,thd->db))) - db_access=acl_get(thd->host, thd->ip, - thd->priv_user, db, test(want_access & GRANT_ACL)); + if (db && (!thd->db || db_is_pattern || strcmp(db,thd->db))) + db_access=acl_get(thd->host, thd->ip, thd->priv_user, db, db_is_pattern); else db_access=thd->db_access; DBUG_PRINT("info",("db_access: %lu", db_access)); diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 461a0f8b9d6..00ef804d021 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -7591,14 +7591,13 @@ const_expression_in_where(COND *cond, Item *comp_item, Item **const_item) create_tmp_field_from_field() thd Thread handler org_field field from which new field will be created - item Item to create a field for + name New field name table Temporary table - modify_item 1 if item->result_field should point to new item. - This is relevent for how fill_record() is going to - work: - If modify_item is 1 then fill_record() will update + item !=NULL if item->result_field should point to new field. + This is relevant for how fill_record() is going to work: + If item != NULL then fill_record() will update the record in the original table. - If modify_item is 0 then fill_record() will update + If item == NULL then fill_record() will update the temporary table convert_blob_length If >0 create a varstring(convert_blob_length) field instead of blob. @@ -7609,9 +7608,8 @@ const_expression_in_where(COND *cond, Item *comp_item, Item **const_item) */ Field* create_tmp_field_from_field(THD *thd, Field* org_field, - Item *item, TABLE *table, - bool modify_item, - uint convert_blob_length) + const char *name, TABLE *table, + Item_field *item, uint convert_blob_length) { Field *new_field; @@ -7624,10 +7622,10 @@ Field* create_tmp_field_from_field(THD *thd, Field* org_field, new_field= org_field->new_field(thd->mem_root, table); if (new_field) { - if (modify_item) - ((Item_field *)item)->result_field= new_field; + if (item) + item->result_field= new_field; else - new_field->field_name= item->name; + new_field->field_name= name; if (org_field->maybe_null()) new_field->flags&= ~NOT_NULL_FLAG; // Because of outer join if (org_field->type() == MYSQL_TYPE_VAR_STRING || @@ -7782,8 +7780,10 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, case Item::DEFAULT_VALUE_ITEM: { Item_field *field= (Item_field*) item; - return create_tmp_field_from_field(thd, (*from_field= field->field), item, - table, modify_item, convert_blob_length); + return create_tmp_field_from_field(thd, (*from_field= field->field), + item->name, table, + modify_item ? (Item_field*) item : NULL, + convert_blob_length); } case Item::FUNC_ITEM: case Item::COND_ITEM: @@ -7805,7 +7805,7 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, { Field *example= ((Item_type_holder *)item)->example(); if (example) - return create_tmp_field_from_field(thd, example, item, table, 0, + return create_tmp_field_from_field(thd, example, item->name, table, NULL, convert_blob_length); return create_tmp_field_from_item(thd, item, table, copy_func, 0, convert_blob_length); diff --git a/strings/my_strtoll10-x86.s b/strings/my_strtoll10-x86.s index e89e7ff5989..c04384667a7 100644 --- a/strings/my_strtoll10-x86.s +++ b/strings/my_strtoll10-x86.s @@ -394,7 +394,7 @@ my_strtoll10: popl %ebp ret -my_strtoll10_end: +.my_strtoll10_end: .size my_strtoll10,.my_strtoll10_end-my_strtoll10 .comm res,240,32 .comm end_ptr,120,32 diff --git a/vio/test-ssl.c b/vio/test-ssl.c index 88df6936a1f..a94eb1a21ff 100644 --- a/vio/test-ssl.c +++ b/vio/test-ssl.c @@ -115,7 +115,7 @@ main(int argc, char** argv) { /* child, therefore, client */ char xbuf[100]; - int r = client_vio->read(client_vio,xbuf, sizeof(xbuf)); + int r = vio_read(client_vio,xbuf, sizeof(xbuf)); if (r<=0) { my_free((gptr)ssl_acceptor,MYF(0)); my_free((gptr)ssl_connector,MYF(0)); @@ -130,7 +130,7 @@ main(int argc, char** argv) else { const char* s = "Huhuhuh"; - int r = server_vio->write(server_vio,(gptr)s, strlen(s)); + int r = vio_write(server_vio,(gptr)s, strlen(s)); if (r<=0) { my_free((gptr)ssl_acceptor,MYF(0)); my_free((gptr)ssl_connector,MYF(0)); diff --git a/vio/test-sslclient.c b/vio/test-sslclient.c index 231ce056d8c..3811ba0fb6a 100644 --- a/vio/test-sslclient.c +++ b/vio/test-sslclient.c @@ -77,13 +77,13 @@ main( int argc __attribute__((unused)), sa.sin_port = htons (1111); /* Server Port number */ err = connect(client_vio->sd, (struct sockaddr*) &sa, - sizeof(sa)); + sizeof(sa)); /* ----------------------------------------------- */ /* Now we have TCP conncetion. Start SSL negotiation. */ read(client_vio->sd,xbuf, sizeof(xbuf)); sslconnect(ssl_connector,client_vio,60L); - err = client_vio->read(client_vio,xbuf, sizeof(xbuf)); + err = vio_read(client_vio,xbuf, sizeof(xbuf)); if (err<=0) { my_free((gptr)ssl_connector,MYF(0)); fatal_error("client:SSL_read"); |