~ubuntu-branches/ubuntu/lucid/mysql-dfsg-5.1/lucid

« back to all changes in this revision

Viewing changes to sql/protocol.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:
573
573
      else
574
574
      {
575
575
        /* With conversion */
576
 
        uint max_char_len;
 
576
        ulonglong max_length;
 
577
        uint32 field_length;
577
578
        int2store(pos, thd_charset->number);
578
579
        /*
579
580
          For TEXT/BLOB columns, field_length describes the maximum data
584
585
          char_count * mbmaxlen, where character count is taken from the
585
586
          definition of the column. In other words, the maximum number
586
587
          of characters here is limited by the column definition.
 
588
 
 
589
          When one has a LONG TEXT column with a single-byte
 
590
          character set, and the connection character set is multi-byte, the
 
591
          client may get fields longer than UINT_MAX32, due to
 
592
          <character set column> -> <character set connection> conversion.
 
593
          In that case column max length does not fit into the 4 bytes
 
594
          reserved for it in the protocol.
587
595
        */
588
 
        max_char_len= (field.type >= (int) MYSQL_TYPE_TINY_BLOB &&
589
 
                      field.type <= (int) MYSQL_TYPE_BLOB) ?
590
 
                      field.length / item->collation.collation->mbminlen :
591
 
                      field.length / item->collation.collation->mbmaxlen;
592
 
        int4store(pos+2, max_char_len * thd_charset->mbmaxlen);
 
596
        max_length= (field.type >= MYSQL_TYPE_TINY_BLOB &&
 
597
                     field.type <= MYSQL_TYPE_BLOB) ?
 
598
                     field.length / item->collation.collation->mbminlen :
 
599
                     field.length / item->collation.collation->mbmaxlen;
 
600
        max_length*= thd_charset->mbmaxlen;
 
601
        field_length= (max_length > UINT_MAX32) ? 
 
602
          UINT_MAX32 : (uint32) max_length;
 
603
        int4store(pos + 2, field_length);
593
604
      }
594
605
      pos[6]= field.type;
595
606
      int2store(pos+7,field.flags);