Commit 0be9c0ef authored by unknown's avatar unknown
Browse files

Merge


mysql-test/r/ndb_index_ordered.result:
  Auto merged
mysql-test/t/ndb_index_ordered.test:
  Auto merged
ndb/src/ndbapi/NdbDictionary.cpp:
  Auto merged
ndb/src/ndbapi/NdbRecAttr.cpp:
  Auto merged
parents ec075331 dbff1150
Loading
Loading
Loading
Loading
+83 −0
Original line number Diff line number Diff line
@@ -554,6 +554,89 @@ select count(*)-9 from t1 use index (ts) where ts <= '2001-01-01 23:59:59';
count(*)-9
0
drop table t1;
create table t1 (
a int primary key,
s decimal(12),
t decimal(12, 5),
u decimal(12) unsigned,
v decimal(12, 5) unsigned,
key (s),
key (t),
key (u),
key (v)
) engine=ndb;
insert into t1 values
( 0, -000000000007, -0000061.00003,  000000000061,  0000965.00042),
( 1, -000000000007, -0000061.00042,  000000000061,  0000965.00003),
( 2, -071006035767,  4210253.00024,  000000000001,  0000001.84488),
( 3,  000000007115,  0000000.77607,  000077350625,  0000018.00013),
( 4, -000000068391, -0346486.00000,  000000005071,  0005334.00002),
( 5, -521579890459, -1936874.00001,  000000000154,  0000003.00018),
( 6, -521579890459, -1936874.00018,  000000000154,  0000003.00001),
( 7,  000000000333,  0000051.39140,  000000907958,  0788643.08374),
( 8,  000042731229,  0000009.00000,  000000000009,  6428667.00000),
( 9, -000008159769,  0000918.00004,  000096951421,  7607730.00008);
select count(*)- 5 from t1 use index (s) where s  < -000000000007;
count(*)- 5
0
select count(*)- 7 from t1 use index (s) where s <= -000000000007;
count(*)- 7
0
select count(*)- 2 from t1 use index (s) where s  = -000000000007;
count(*)- 2
0
select count(*)- 5 from t1 use index (s) where s >= -000000000007;
count(*)- 5
0
select count(*)- 3 from t1 use index (s) where s  > -000000000007;
count(*)- 3
0
select count(*)- 4 from t1 use index (t) where t  < -0000061.00003;
count(*)- 4
0
select count(*)- 5 from t1 use index (t) where t <= -0000061.00003;
count(*)- 5
0
select count(*)- 1 from t1 use index (t) where t  = -0000061.00003;
count(*)- 1
0
select count(*)- 6 from t1 use index (t) where t >= -0000061.00003;
count(*)- 6
0
select count(*)- 5 from t1 use index (t) where t  > -0000061.00003;
count(*)- 5
0
select count(*)- 2 from t1 use index (u) where u  <  000000000061;
count(*)- 2
0
select count(*)- 4 from t1 use index (u) where u <=  000000000061;
count(*)- 4
0
select count(*)- 2 from t1 use index (u) where u  =  000000000061;
count(*)- 2
0
select count(*)- 8 from t1 use index (u) where u >=  000000000061;
count(*)- 8
0
select count(*)- 6 from t1 use index (u) where u  >  000000000061;
count(*)- 6
0
select count(*)- 5 from t1 use index (v) where v  <  0000965.00042;
count(*)- 5
0
select count(*)- 6 from t1 use index (v) where v <=  0000965.00042;
count(*)- 6
0
select count(*)- 1 from t1 use index (v) where v  =  0000965.00042;
count(*)- 1
0
select count(*)- 5 from t1 use index (v) where v >=  0000965.00042;
count(*)- 5
0
select count(*)- 4 from t1 use index (v) where v  >  0000965.00042;
count(*)- 4
0
drop table t1;
create table t1(a int primary key, b int not null, index(b));
insert into t1 values (1,1), (2,2);
set autocommit=0;
+52 −0
Original line number Diff line number Diff line
@@ -280,6 +280,58 @@ select count(*)-9 from t1 use index (ts) where ts <= '2001-01-01 23:59:59';

drop table t1;

# decimal (not the new 5.0 thing)

create table t1 (
  a int primary key,
  s decimal(12),
  t decimal(12, 5),
  u decimal(12) unsigned,
  v decimal(12, 5) unsigned,
  key (s),
  key (t),
  key (u),
  key (v)
) engine=ndb;
#
insert into t1 values
  ( 0, -000000000007, -0000061.00003,  000000000061,  0000965.00042),
  ( 1, -000000000007, -0000061.00042,  000000000061,  0000965.00003),
  ( 2, -071006035767,  4210253.00024,  000000000001,  0000001.84488),
  ( 3,  000000007115,  0000000.77607,  000077350625,  0000018.00013),
  ( 4, -000000068391, -0346486.00000,  000000005071,  0005334.00002),
  ( 5, -521579890459, -1936874.00001,  000000000154,  0000003.00018),
  ( 6, -521579890459, -1936874.00018,  000000000154,  0000003.00001),
  ( 7,  000000000333,  0000051.39140,  000000907958,  0788643.08374),
  ( 8,  000042731229,  0000009.00000,  000000000009,  6428667.00000),
  ( 9, -000008159769,  0000918.00004,  000096951421,  7607730.00008);
#
select count(*)- 5 from t1 use index (s) where s  < -000000000007;
select count(*)- 7 from t1 use index (s) where s <= -000000000007;
select count(*)- 2 from t1 use index (s) where s  = -000000000007;
select count(*)- 5 from t1 use index (s) where s >= -000000000007;
select count(*)- 3 from t1 use index (s) where s  > -000000000007;
#
select count(*)- 4 from t1 use index (t) where t  < -0000061.00003;
select count(*)- 5 from t1 use index (t) where t <= -0000061.00003;
select count(*)- 1 from t1 use index (t) where t  = -0000061.00003;
select count(*)- 6 from t1 use index (t) where t >= -0000061.00003;
select count(*)- 5 from t1 use index (t) where t  > -0000061.00003;
#
select count(*)- 2 from t1 use index (u) where u  <  000000000061;
select count(*)- 4 from t1 use index (u) where u <=  000000000061;
select count(*)- 2 from t1 use index (u) where u  =  000000000061;
select count(*)- 8 from t1 use index (u) where u >=  000000000061;
select count(*)- 6 from t1 use index (u) where u  >  000000000061;
#
select count(*)- 5 from t1 use index (v) where v  <  0000965.00042;
select count(*)- 6 from t1 use index (v) where v <=  0000965.00042;
select count(*)- 1 from t1 use index (v) where v  =  0000965.00042;
select count(*)- 5 from t1 use index (v) where v >=  0000965.00042;
select count(*)- 4 from t1 use index (v) where v  >  0000965.00042;

drop table t1;

# bug#7798
create table t1(a int primary key, b int not null, index(b));
insert into t1 values (1,1), (2,2);
+14 −4
Original line number Diff line number Diff line
@@ -264,7 +264,8 @@ public:
    ExtBigunsigned = NdbSqlUtil::Type::Bigunsigned,
    ExtFloat = NdbSqlUtil::Type::Float,
    ExtDouble = NdbSqlUtil::Type::Double,
    ExtDecimal = NdbSqlUtil::Type::Decimal,
    ExtOlddecimal = NdbSqlUtil::Type::Olddecimal,
    ExtOlddecimalunsigned = NdbSqlUtil::Type::Olddecimalunsigned,
    ExtChar = NdbSqlUtil::Type::Char,
    ExtVarchar = NdbSqlUtil::Type::Varchar,
    ExtBinary = NdbSqlUtil::Type::Binary,
@@ -345,9 +346,18 @@ public:
        AttributeSize = DictTabInfo::a64Bit;
        AttributeArraySize = AttributeExtLength;
        break;
      case DictTabInfo::ExtDecimal:
        // not yet implemented anywhere
        return false;
      case DictTabInfo::ExtOlddecimal:
        AttributeSize = DictTabInfo::an8Bit;
        AttributeArraySize =
          (1 + AttributeExtPrecision + (int(AttributeExtScale) > 0)) *
          AttributeExtLength;
        break;
      case DictTabInfo::ExtOlddecimalunsigned:
        AttributeSize = DictTabInfo::an8Bit;
        AttributeArraySize =
          (0 + AttributeExtPrecision + (int(AttributeExtScale) > 0)) *
          AttributeExtLength;
        break;
      case DictTabInfo::ExtChar:
      case DictTabInfo::ExtBinary:
        AttributeSize = DictTabInfo::an8Bit;
+6 −4
Original line number Diff line number Diff line
@@ -185,6 +185,8 @@ public:
      Float = NDB_TYPE_FLOAT,         ///< 32-bit float. 4 bytes float, can be used in array
      Double = NDB_TYPE_DOUBLE,        ///< 64-bit float. 8 byte float, can be used in array
      Decimal = NDB_TYPE_DECIMAL,       ///< Precision, Scale are applicable
      Olddecimal = NDB_TYPE_OLDDECIMAL,    ///< MySQL < 5.0 signed decimal,  Precision, Scale
      Olddecimalunsigned = NDB_TYPE_OLDDECIMAL_UNSIGNED,
      Char = NDB_TYPE_CHAR,          ///< Len. A fixed array of 1-byte chars
      Varchar = NDB_TYPE_VARCHAR,       ///< Length bytes: 1, Max: 255
      Binary = NDB_TYPE_BINARY,        ///< Len
@@ -248,13 +250,13 @@ public:

    /**
     * Get precision of column.
     * @note Only applicable for builtin type Decimal
     * @note Only applicable for decimal types
     */
    int getPrecision() const;

    /**
     * Get scale of column.
     * @note Only applicable for builtin type Decimal
     * @note Only applicable for decimal types
     */
    int getScale() const;

@@ -372,13 +374,13 @@ public:

    /**
     * Set precision of column.
     * @note Only applicable for builtin type Decimal
     * @note Only applicable for decimal types
     */
    void setPrecision(int);

    /**
     * Set scale of column.
     * @note Only applicable for builtin type Decimal
     * @note Only applicable for decimal types
     */
    void setScale(int);

+10 −3
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ public:
      Bigunsigned = NDB_TYPE_BIGUNSIGNED,
      Float = NDB_TYPE_FLOAT,
      Double = NDB_TYPE_DOUBLE,
      Decimal = NDB_TYPE_DECIMAL,
      Olddecimal = NDB_TYPE_OLDDECIMAL,
      Char = NDB_TYPE_CHAR,
      Varchar = NDB_TYPE_VARCHAR,
      Binary = NDB_TYPE_BINARY,
@@ -94,7 +94,8 @@ public:
      Longvarbinary = NDB_TYPE_LONG_VARBINARY,
      Time = NDB_TYPE_TIME,
      Year = NDB_TYPE_YEAR,
      Timestamp = NDB_TYPE_TIMESTAMP
      Timestamp = NDB_TYPE_TIMESTAMP,
      Olddecimalunsigned = NDB_TYPE_OLDDECIMALUNSIGNED
    };
    Enum m_typeId;      // redundant
    Cmp* m_cmp;         // comparison method
@@ -130,6 +131,11 @@ public:
   */
  static int strnxfrm_bug7284(CHARSET_INFO* cs, unsigned char* dst, unsigned dstLen, const unsigned char*src, unsigned srcLen);

  /**
   * Compare decimal numbers.
   */
  static int cmp_olddecimal(const uchar* s1, const uchar* s2, unsigned n);

private:
  /**
   * List of all types.  Must match Type::Enum.
@@ -150,7 +156,7 @@ private:
  static Cmp cmpBigunsigned;
  static Cmp cmpFloat;
  static Cmp cmpDouble;
  static Cmp cmpDecimal;
  static Cmp cmpOlddecimal;
  static Cmp cmpChar;
  static Cmp cmpVarchar;
  static Cmp cmpBinary;
@@ -165,6 +171,7 @@ private:
  static Cmp cmpTime;
  static Cmp cmpYear;
  static Cmp cmpTimestamp;
  static Cmp cmpOlddecimalunsigned;
};

#endif
Loading