~mathiaz/ubuntu/lucid/mysql-dfsg-5.1/zap-bug-552053

« back to all changes in this revision

Viewing changes to storage/csv/ha_tina.cc

  • Committer: Bazaar Package Importer
  • Author(s): Mathias Gug
  • Date: 2009-06-25 12:55:45 UTC
  • mfrom: (1.1.2 upstream) (0.1.3 experimental)
  • Revision ID: james.westby@ubuntu.com-20090625125545-m8ogs96zzsri74xe
Tags: 5.1.34-1ubuntu1
* Merge from debian experimental (and 5.0 from main), remaining changes:
  - debian/mysql-server-5.1.config:
    + ask for MySQL root password at priority high instead of medium so
      that the password prompt is seen on a default install. (LP: #319843)
    + don't ask for root password when upgrading from a 5.0 install.
  - debian/control:
    + Make libmysqlclient16-dev a transitional package depending on
      libmysqlclient-dev.
    + Make libmysqlclient-dev conflict with libmysqlclient15-dev.
    + Don't build mysql-server, mysql-client, mysql-common and
      libmysqlclient15-dev binary packages since they're still provided
      by mysql-dfsg-5.0.
    + Make mysql-{client,server}-5.1 packages conflict and
      replace mysql-{client,server}-5.0, but not provide
      mysql-{client,server}.
    + Depend on a specific version of mysql-common rather than the src
      version of mysql-dfsg-5.1 since mysql-common is currently part of
      mysql-dfsg-5.0.
    + Lower mailx from a Recommends to a Suggests to avoid pulling in
      a full MTA on all installs of mysql-server. (LP: #259477)
  - debian/rules:
    + added -fno-strict-aliasing to CFLAGS to get around mysql testsuite
      build failures.
    + install mysql-test and sql-bench to /usr/share/mysql/ rather than
      /usr/.
  - debian/additions/debian-start.inc.sh: support ANSI mode (LP: #310211)
  - Add AppArmor profile:
    - debian/apparmor-profile: apparmor profile.
    - debian/rules, debian/mysql-server-5.0.files: install apparmor profile.
    - debian/mysql-server-5.0.dirs: add etc/apparmor.d/force-complain
    - debian/mysql-server-5.0.postrm: remove symlink in force-complain/ on
      purge.
    - debian/mysql-server-5.1.README.Debian: add apparmor documentation.
    - debian/additions/my.cnf: Add warning about apparmor. (LP: #201799)
    - debian/mysql-server-5.1.postinst: reload apparmor profiles.
  - debian/additions/my.cnf: remove language option. Error message files are
    located in a different directory in MySQL 5.0. Setting the language
    option to use /usr/share/mysql/english breaks 5.0. Both 5.0 and 5.1
    use a default value that works. (LP: #316974)
  - debian/mysql-server-5.1.mysql.init:
    + Clearly indicate that we do not support running multiple instances
      of mysqld by duplicating the init script.
      (closes: #314785, #324834, #435165, #444216)
    + Properly parameterize all existing references to the mysql config
      file (/etc/mysql/my.cnf).
  - debian/mysql-server-5.0.postinst: Clear out the second password
    when setting up mysql. (LP: #344816)
  - mysql-server-core-5.1 package for files needed by Akonadi:
    + debian/control: create mysql-server-core-5.1 package.
    + debian/mysql-server-core-5.1.files, debian/mysql-server-5.1.files:
      move core mysqld files to mysql-server-core-5.1 package.
  - Don't package sql-bench and mysql-test file.
* Dropped changes:
  - debian/patches/92_ssl_test_cert.dpatch: certificate expiration in
    test suite (LP: #323755). Included upstream.
* Dropped from 5.0:
  - apparmor profile:
    - debian/control: Recommends apparmor >= 2.1+1075-0ubuntu6. All version
      of apparmor-profile (>hardy) are higher than this version.
    - debian/mysql-server-5.0.preinst: create symlink for force-complain/
      on pre-feisty upgrades, upgrades where apparmor-profiles profile is
      unchanged (ie non-enforcing) and upgrades where the profile
      doesn't exist. Support for pre-hardy upgrades is no longer needed.
* debian/mysql-server-5.1.postinst: fix debian-sys-maint user creation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
397
397
  '\r''\n' --  DOS\Windows line ending
398
398
*/
399
399
 
400
 
off_t find_eoln_buff(Transparent_file *data_buff, off_t begin,
401
 
                     off_t end, int *eoln_len)
 
400
my_off_t find_eoln_buff(Transparent_file *data_buff, my_off_t begin,
 
401
                     my_off_t end, int *eoln_len)
402
402
{
403
403
  *eoln_len= 0;
404
404
 
405
 
  for (off_t x= begin; x < end; x++)
 
405
  for (my_off_t x= begin; x < end; x++)
406
406
  {
407
407
    /* Unix (includes Mac OS X) */
408
408
    if (data_buff->get_value(x) == '\n')
553
553
    /* We set up for the next position */
554
554
    if ((off_t)(chain_ptr - chain) == (chain_size -1))
555
555
    {
556
 
      off_t location= chain_ptr - chain;
 
556
      my_off_t location= chain_ptr - chain;
557
557
      chain_size += DEFAULT_CHAIN_LENGTH;
558
558
      if (chain_alloced)
559
559
      {
586
586
*/
587
587
int ha_tina::find_current_row(uchar *buf)
588
588
{
589
 
  off_t end_offset, curr_offset= current_position;
 
589
  my_off_t end_offset, curr_offset= current_position;
590
590
  int eoln_len;
591
591
  my_bitmap_map *org_bitmap;
592
592
  int error;
836
836
    during locking. This is needed to enable concurrent inserts.
837
837
  */
838
838
  thr_lock_data_init(&share->lock, &lock, (void*) this);
839
 
  ref_length=sizeof(off_t);
 
839
  ref_length= sizeof(my_off_t);
840
840
 
841
841
  share->lock.get_status= tina_get_status;
842
842
  share->lock.update_status= tina_update_status;
1140
1140
{
1141
1141
  DBUG_ENTER("ha_tina::rnd_pos");
1142
1142
  ha_statistic_increment(&SSV::ha_read_rnd_count);
1143
 
  current_position= (off_t)my_get_ptr(pos,ref_length);
 
1143
  current_position= my_get_ptr(pos,ref_length);
1144
1144
  DBUG_RETURN(find_current_row(buf));
1145
1145
}
1146
1146
 
1180
1180
  to the given "hole", stored in the buffer. "Valid" here means,
1181
1181
  not listed in the chain of deleted records ("holes").
1182
1182
*/
1183
 
bool ha_tina::get_write_pos(off_t *end_pos, tina_set *closest_hole)
 
1183
bool ha_tina::get_write_pos(my_off_t *end_pos, tina_set *closest_hole)
1184
1184
{
1185
1185
  if (closest_hole == chain_ptr) /* no more chains */
1186
1186
    *end_pos= file_buff->end();
1200
1200
int ha_tina::rnd_end()
1201
1201
{
1202
1202
  char updated_fname[FN_REFLEN];
1203
 
  off_t file_buffer_start= 0;
 
1203
  my_off_t file_buffer_start= 0;
1204
1204
  DBUG_ENTER("ha_tina::rnd_end");
1205
1205
 
1206
1206
  free_root(&blobroot, MYF(0));
1223
1223
    my_qsort(chain, (size_t)(chain_ptr - chain), sizeof(tina_set),
1224
1224
             (qsort_cmp)sort_set);
1225
1225
 
1226
 
    off_t write_begin= 0, write_end;
 
1226
    my_off_t write_begin= 0, write_end;
1227
1227
 
1228
1228
    /* create the file to write updated table if it wasn't yet created */
1229
1229
    if (open_update_temp_file_if_needed())
1230
1230
      DBUG_RETURN(-1);
1231
1231
 
1232
1232
    /* write the file with updated info */
1233
 
    while ((file_buffer_start != -1))     // while not end of file
 
1233
    while ((file_buffer_start != (my_off_t)-1))     // while not end of file
1234
1234
    {
1235
1235
      bool in_hole= get_write_pos(&write_end, ptr);
1236
 
      off_t write_length= write_end - write_begin;
 
1236
      my_off_t write_length= write_end - write_begin;
1237
1237
 
1238
1238
      /* if there is something to write, write it */
1239
1239
      if (write_length)
1241
1241
        if (my_write(update_temp_file, 
1242
1242
                     (uchar*) (file_buff->ptr() +
1243
1243
                               (write_begin - file_buff->start())),
1244
 
                     write_length, MYF_RW))
 
1244
                     (size_t)write_length, MYF_RW))
1245
1245
          goto error;
1246
1246
        temp_file_length+= write_length;
1247
1247
      }
1248
1248
      if (in_hole)
1249
1249
      {
1250
1250
        /* skip hole */
1251
 
        while (file_buff->end() <= ptr->end && file_buffer_start != -1)
 
1251
        while (file_buff->end() <= ptr->end &&
 
1252
               file_buffer_start != (my_off_t)-1)
1252
1253
          file_buffer_start= file_buff->read_next();
1253
1254
        write_begin= ptr->end;
1254
1255
        ptr++;
1348
1349
  File repair_file;
1349
1350
  int rc;
1350
1351
  ha_rows rows_repaired= 0;
1351
 
  off_t write_begin= 0, write_end;
 
1352
  my_off_t write_begin= 0, write_end;
1352
1353
  DBUG_ENTER("ha_tina::repair");
1353
1354
 
1354
1355
  /* empty file */
1423
1424
    write_end= min(file_buff->end(), current_position);
1424
1425
    if ((write_end - write_begin) &&
1425
1426
        (my_write(repair_file, (uchar*)file_buff->ptr(),
1426
 
                  write_end - write_begin, MYF_RW)))
 
1427
                  (size_t) (write_end - write_begin), MYF_RW)))
1427
1428
      DBUG_RETURN(-1);
1428
1429
 
1429
1430
    write_begin= write_end;