consumer.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include "consumer.hpp"
  14. #ifdef USE_MYSQL
  15. int
  16. BackupConsumer::create_table_string(const TableS & table,
  17.     char * tableName,
  18.     char *buf){
  19.   int pos = 0;
  20.   int pos2 = 0;
  21.   char buf2[2048];
  22.   pos += sprintf(buf+pos, "%s%s", "CREATE TABLE ",  tableName);
  23.   pos += sprintf(buf+pos, "%s", "(");
  24.   pos2 += sprintf(buf2+pos2, "%s", " primary key(");
  25.   for (int j = 0; j < table.getNoOfAttributes(); j++) 
  26.   {
  27.     const AttributeDesc * desc = table[j];
  28.     //   ndbout << desc->name << ": ";
  29.     pos += sprintf(buf+pos, "%s%s", desc->m_column->getName()," ");
  30.     switch(desc->m_column->getType()){
  31.     case NdbDictionary::Column::Int:
  32.       pos += sprintf(buf+pos, "%s", "int");
  33.       break;
  34.     case NdbDictionary::Column::Unsigned:
  35.       pos += sprintf(buf+pos, "%s", "int unsigned");
  36.       break;
  37.     case NdbDictionary::Column::Float:
  38.       pos += sprintf(buf+pos, "%s", "float");
  39.       break;
  40.     case NdbDictionary::Column::Olddecimal:
  41.       pos += sprintf(buf+pos, "%s", "decimal");
  42.       break;
  43.     case NdbDictionary::Column::Olddecimalunsigned:
  44.       pos += sprintf(buf+pos, "%s", "decimal unsigned");
  45.       break;
  46.     case NdbDictionary::Column::Char:
  47.       pos += sprintf(buf+pos, "%s", "char");
  48.       break;
  49.     case NdbDictionary::Column::Varchar:
  50.       pos += sprintf(buf+pos, "%s", "varchar");
  51.       break;
  52.     case NdbDictionary::Column::Binary:
  53.       pos += sprintf(buf+pos, "%s", "binary");
  54.       break;
  55.     case NdbDictionary::Column::Varbinary:
  56.       pos += sprintf(buf+pos, "%s", "varchar binary");
  57.       break;
  58.     case NdbDictionary::Column::Bigint:
  59.       pos += sprintf(buf+pos, "%s", "bigint");
  60.       break;
  61.     case NdbDictionary::Column::Bigunsigned:
  62.       pos += sprintf(buf+pos, "%s", "bigint unsigned");
  63.       break;
  64.     case NdbDictionary::Column::Double:
  65.       pos += sprintf(buf+pos, "%s", "double");
  66.       break;
  67.     case NdbDictionary::Column::Datetime:
  68.       pos += sprintf(buf+pos, "%s", "datetime");
  69.       break;
  70.     case NdbDictionary::Column::Date:
  71.       pos += sprintf(buf+pos, "%s", "date");
  72.       break;
  73.     case NdbDictionary::Column::Time:
  74.       pos += sprintf(buf+pos, "%s", "time");
  75.       break;
  76.     case NdbDictionary::Column::Undefined:
  77.       //      pos += sprintf(buf+pos, "%s", "varchar binary");
  78.       return -1;
  79.       break;
  80.     default:
  81.       //pos += sprintf(buf+pos, "%s", "varchar binary");
  82.       return -1;
  83.     }
  84.     if (desc->arraySize > 1) {
  85.       int attrSize = desc->arraySize;
  86.       pos += sprintf(buf+pos, "%s%u%s",
  87.      "(",
  88.      attrSize,
  89.      ")");
  90.     }
  91.     if (desc->m_column->getPrimaryKey()) {
  92.       pos += sprintf(buf+pos, "%s", " not null");
  93.       pos2 += sprintf(buf2+pos2, "%s%s", desc->m_column->getName(), ",");
  94.     }
  95.     pos += sprintf(buf+pos, "%s", ",");
  96.   } // for
  97.   pos2--; // remove trailing comma
  98.   pos2 += sprintf(buf2+pos2, "%s", ")");
  99.   //  pos--; // remove trailing comma
  100.   pos += sprintf(buf+pos, "%s", buf2);
  101.   pos += sprintf(buf+pos, "%s", ") type=ndbcluster");
  102.   return 0;
  103. }
  104. #endif // USE_MYSQL