diff options
author | unknown <mskold@mysql.com> | 2005-02-16 21:29:19 +0100 |
---|---|---|
committer | unknown <mskold@mysql.com> | 2005-02-16 21:29:19 +0100 |
commit | de5fa1dc3396dee1bf5fba06bcbd2b482946bcae (patch) | |
tree | 2c1bd950891cc02c0bc21a2368a63a76a689ffe7 /ndb/include/kernel/signaldata | |
parent | 9c2469e15d83758075f383fd050af178f6907d0c (diff) | |
parent | fced35f74a0c93fbbea0f1d2a21da13378467caf (diff) | |
download | mariadb-git-de5fa1dc3396dee1bf5fba06bcbd2b482946bcae.tar.gz |
Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/usr/local/home/marty/MySQL/mysql-5.0-ndb
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
Diffstat (limited to 'ndb/include/kernel/signaldata')
-rw-r--r-- | ndb/include/kernel/signaldata/DictTabInfo.hpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/ndb/include/kernel/signaldata/DictTabInfo.hpp b/ndb/include/kernel/signaldata/DictTabInfo.hpp index 23926374dd6..09b00cf8993 100644 --- a/ndb/include/kernel/signaldata/DictTabInfo.hpp +++ b/ndb/include/kernel/signaldata/DictTabInfo.hpp @@ -24,6 +24,28 @@ #include <trigger_definitions.h> #include <NdbSqlUtil.hpp> +#ifndef my_decimal_h + +// sql/my_decimal.h requires many more sql/*.h new to ndb +// for now, copy the bit we need TODO proper fix + +#define DECIMAL_MAX_LENGTH ((8 * 9) - 8) + +#ifndef NOT_FIXED_DEC +#define NOT_FIXED_DEC 31 +#endif + +C_MODE_START +extern int decimal_bin_size(int, int); +C_MODE_END + +inline int my_decimal_get_binary_size(uint precision, uint scale) +{ + return decimal_bin_size((int)precision, (int)scale); +} + +#endif + #define DTIMAP(x, y, z) \ { DictTabInfo::y, offsetof(x, z), SimpleProperties::Uint32Value, 0, (~0), 0 } @@ -266,6 +288,8 @@ public: ExtDouble = NdbSqlUtil::Type::Double, ExtOlddecimal = NdbSqlUtil::Type::Olddecimal, ExtOlddecimalunsigned = NdbSqlUtil::Type::Olddecimalunsigned, + ExtDecimal = NdbSqlUtil::Type::Decimal, + ExtDecimalunsigned = NdbSqlUtil::Type::Decimalunsigned, ExtChar = NdbSqlUtil::Type::Char, ExtVarchar = NdbSqlUtil::Type::Varchar, ExtBinary = NdbSqlUtil::Type::Binary, @@ -358,6 +382,19 @@ public: (0 + AttributeExtPrecision + (int(AttributeExtScale) > 0)) * AttributeExtLength; break; + case DictTabInfo::ExtDecimal: + case DictTabInfo::ExtDecimalunsigned: + { + // copy from Field_new_decimal ctor + uint precision = AttributeExtPrecision; + uint scale = AttributeExtScale; + if (precision > DECIMAL_MAX_LENGTH || scale >= NOT_FIXED_DEC) + precision = DECIMAL_MAX_LENGTH; + uint bin_size = my_decimal_get_binary_size(precision, scale); + AttributeSize = DictTabInfo::an8Bit; + AttributeArraySize = bin_size * AttributeExtLength; + } + break; case DictTabInfo::ExtChar: case DictTabInfo::ExtBinary: AttributeSize = DictTabInfo::an8Bit; |