Commit c9970c5b authored by unknown's avatar unknown
Browse files

Merge bk-internal:/home/bk/mysql-5.1-new-rpl

into  neptunus.(none):/home/msvensson/mysql/mysql-5.1-new-maint


client/mysql.cc:
  Auto merged
include/m_ctype.h:
  Auto merged
mysql-test/r/ctype_utf8.result:
  Auto merged
mysql-test/r/ps.result:
  Auto merged
mysql-test/r/strict.result:
  Auto merged
mysql-test/r/view.result:
  Auto merged
mysql-test/r/warnings.result:
  Auto merged
mysql-test/t/ctype_utf8.test:
  Auto merged
sql/field.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
parents e6340946 dc4418ed
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -2497,10 +2497,15 @@ print_table_data_xml(MYSQL_RES *result)
    {
      tee_fprintf(PAGER, "\t<field name=\"");
      xmlencode_print(fields[i].name, (uint) strlen(fields[i].name));
      if (cur[i])
      {
        tee_fprintf(PAGER, "\">");
        xmlencode_print(cur[i], lengths[i]);
        tee_fprintf(PAGER, "</field>\n");
      }
      else
        tee_fprintf(PAGER, "\" xsi:nil=\"true\" />\n");
    }
    (void) tee_fputs("  </row>\n", PAGER);
  }
  (void) tee_fputs("</resultset>\n", PAGER);
+10 −0
Original line number Diff line number Diff line
@@ -217,6 +217,9 @@ typedef struct my_charset_handler_st
			 int *err);
  longlong    (*strtoll10)(struct charset_info_st *cs,
                           const char *nptr, char **endptr, int *error);
  ulonglong   (*strntoull10rnd)(struct charset_info_st *cs,
                                const char *str, uint length, int unsigned_fl,
                                char **endptr, int *error);
  ulong        (*scan)(struct charset_info_st *, const char *b, const char *e,
		       int sq);
} MY_CHARSET_HANDLER;
@@ -358,6 +361,13 @@ longlong my_strtoll10_8bit(CHARSET_INFO *cs,
longlong my_strtoll10_ucs2(CHARSET_INFO *cs, 
                           const char *nptr, char **endptr, int *error);

ulonglong my_strntoull10rnd_8bit(CHARSET_INFO *cs,
                                 const char *str, uint length, int unsigned_fl,
                                 char **endptr, int *error);
ulonglong my_strntoull10rnd_ucs2(CHARSET_INFO *cs, 
                                 const char *str, uint length, int unsigned_fl,
                                 char **endptr, int *error);

void my_fill_8bit(CHARSET_INFO *cs, char* to, uint l, int fill);

my_bool  my_like_range_simple(CHARSET_INFO *cs,
+28 −14
Original line number Diff line number Diff line
@@ -4,25 +4,39 @@ create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
# Verify that only one INSERT_ID event is binlogged.
# Note, that because of WL#3368 mixed mode binlog records RBR events for the delayed
let $table=t1;
let $rows_inserted=11; # total number of inserted rows in this test
insert delayed into t1 values (207);
let $count=1;

# We use sleeps between statements, that's the only way to get a
# repeatable binlog in a normal test run and under Valgrind. The
# reason is that without sleeps, rows of different INSERT DELAYEDs
# sometimes group together and sometimes not, so the table may be
# unlocked/relocked causing a different number of table map log
# events.
sleep 2;
# use this macro instead of sleeps.

--source include/wait_until_rows_count.inc
insert delayed into t1 values (null);
sleep 2;
inc $count;
--source include/wait_until_rows_count.inc

insert delayed into t1 values (300);
sleep 2; # time for the delayed queries to reach disk
insert delayed into t1 values (null),(null),(null),(null);
sleep 2;
insert delayed into t1 values (null),(null),(400),(null);
sleep 2;
select * from t1;
inc $count;
--source include/wait_until_rows_count.inc

# moving binlog check affront of multi-rows queries which work is indeterministic (extra table_maps)
# todo: better check is to substitute SHOW BINLOG with reading from binlog, probably bug#19459 is in
# the way
--replace_column 2 # 5 #
--replace_regex /table_id: [0-9]+/table_id: #/
show binlog events from 102;

insert delayed into t1 values (null),(null),(null),(null);
inc $count; inc $count; inc $count; inc $count;
--source include/wait_until_rows_count.inc

insert delayed into t1 values (null),(null),(400),(null);
inc $count; inc $count; inc $count; inc $count;
--source include/wait_until_rows_count.inc

#check this assertion about $count calculation
--echo $count == $rows_inserted

select * from t1;
drop table t1;
+52 −0
Original line number Diff line number Diff line
# include/wait_until_rows_count.inc
# inspired by wait_for_slave_status by Matthias Leich
#
# SUMMARY
#
#    Waits until SELECT count(*)-$count from $table returns zero
#
# USAGE
#
#    Set vars like
#      let $count=11;
#      let $table=t1;
#      # invoke the macro
#      --include wait_until_rows_count.inc
#
# EXAMPLE
# extra/binlog/binlog_insert_delayed.test
#
#
# TODO: generalize up to wait_[until|while] with arbitrary select or even query and
#       a condition to wait or get awakened
#       It's impossible to implement such a "most" general macro without
#       extending mysqltest. Just no way to pass a query as an argument and
#       evaluate it here, like eval "$quuery". One is bound
#       to specify it inside of the macro

--disable_query_log

let $wait_counter= 300;     # max wait in 0.1 seconds
while ($wait_counter)
{
    eval select count(*)-$count from $table into @rez;
    let $rez=`select @rez`;
    let $success=`SELECT @rez = 0`;
    let $no_success=1;
    if ($success)
    {
        let $wait_counter= 1; # droppping counter to leave loop
        let $no_success=0;
    }
    if ($no_success)
    {
       --sleep 0.1
    }
    dec $wait_counter;
}

--enable_query_log
if ($no_success)
{
	--die Timeout in wait_until_rows_count.inc, required table never had a prescribed number of rows.
}
Loading