NDBT_Attribute(const char* _name, NdbDictionary::Column::Type _type, int _length = 1, bool _pk = false, bool _nullable = false, CHARSET_INFO *cs= 0, NdbDictionary::Column::StorageType storage = NdbDictionary::Column::StorageTypeMemory, bool dynamic = false, const void* defaultVal = NULL, Uint32 defaultValBytes = 0): NdbDictionary::Column(_name) { assert(_name != 0); setType(_type); setLength(_length); setNullable(_nullable); setPrimaryKey(_pk); if (cs) { setCharset(cs); } setStorageType(storage); setDynamic(dynamic); setDefaultValue(defaultVal, defaultValBytes); }
NDBT_Attribute(const char* _name, NdbDictionary::Column::Type _type, int _length = 1, bool _pk = false, bool _nullable = false, CHARSET_INFO *cs= 0, NdbDictionary::Column::StorageType storage = NdbDictionary::Column::StorageTypeMemory): NdbDictionary::Column(_name) { assert(_name != 0); setType(_type); setLength(_length); setNullable(_nullable); setPrimaryKey(_pk); if (cs) { setCharset(cs); } setStorageType(storage); }
static int newOneOrMore(int p1) {P_newunop(P_ONE_OR_MORE,p1); setNullable(nullable(p1)); return accept_p();}
static int newGroup(int p1,int p2) {P_newbinop(P_GROUP,p1,p2); setNullable(nullable(p1)&&nullable(p2)); return accept_p();}
static int newChoice(int p1,int p2) {P_newbinop(P_CHOICE,p1,p2); setNullable(nullable(p1)||nullable(p2)); return accept_p();}
static int newEmpty(void) {P_NEW(P_EMPTY); setNullable(1); return accept_p();}
void ODBCMetaColumn::init() { getDescription(); if (Utility::isError(Poco::Data::ODBC::SQLColAttribute(_rStmt, (SQLUSMALLINT) position() + 1, // ODBC columns are 1-based SQL_DESC_LENGTH, 0, 0, 0, &_dataLength))) { throw StatementException(_rStmt); } setName(std::string((char*) _columnDesc.name)); setLength(_columnDesc.size); setPrecision(_columnDesc.decimalDigits); setNullable(SQL_NULLABLE == _columnDesc.isNullable); switch(_columnDesc.dataType) { case SQL_BIT: setType(MetaColumn::FDT_BOOL); break; case SQL_CHAR: case SQL_VARCHAR: case SQL_LONGVARCHAR: case -9:// SQL Server NVARCHAR case -10:// PostgreSQL VARCHAR (without size specified) setType(MetaColumn::FDT_STRING); break; case SQL_TINYINT: setType(MetaColumn::FDT_INT8); break; case SQL_SMALLINT: setType(MetaColumn::FDT_INT16); break; case SQL_INTEGER: setType(MetaColumn::FDT_INT32); break; case SQL_BIGINT: setType(MetaColumn::FDT_INT64); break; case SQL_DOUBLE: case SQL_FLOAT: setType(MetaColumn::FDT_DOUBLE); break; case SQL_NUMERIC: case SQL_DECIMAL: if (0 == _columnDesc.decimalDigits) setType(MetaColumn::FDT_INT32); else setType(MetaColumn::FDT_DOUBLE); break; case SQL_REAL: setType(MetaColumn::FDT_FLOAT); break; case SQL_BINARY: case SQL_VARBINARY: case SQL_LONGVARBINARY: case -98:// IBM DB2 non-standard type setType(MetaColumn::FDT_BLOB); break; case SQL_TYPE_DATE: setType(MetaColumn::FDT_DATE); break; case SQL_TYPE_TIME: setType(MetaColumn::FDT_TIME); break; case SQL_TYPE_TIMESTAMP: setType(MetaColumn::FDT_TIMESTAMP); break; default: throw DataFormatException("Unsupported data type."); } }