diff options
Diffstat (limited to 'relcatalogif/settype.pgc')
-rw-r--r-- | relcatalogif/settype.pgc | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/relcatalogif/settype.pgc b/relcatalogif/settype.pgc new file mode 100644 index 0000000..4d8ba82 --- /dev/null +++ b/relcatalogif/settype.pgc @@ -0,0 +1,140 @@ +// This is -*- C++ -*- + +/* +* This file is part of rasdaman community. +* +* Rasdaman community is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* Rasdaman community is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>. +* +* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / +rasdaman GmbH. +* +* For more information please see <http://www.rasdaman.org> +* or contact Peter Baumann via <baumann@rasdaman.com>. +*/ +/************************************************************* + * + * + * PURPOSE: + * Code with embedded SQL for PostgreSQL DBMS + * + * + * COMMENTS: + * uses embedded SQL + * + ************************************************************/ + +#include "debug-srv.hh" + +// general embedded SQL related definitions +EXEC SQL include "../reladminif/sqlglobals.h"; + +#include "settype.hh" +#include "mddtype.hh" +#include "reladminif/sqlerror.hh" +#include "raslib/rmdebug.hh" +#include "reladminif/objectbroker.hh" + +void +SetType::insertInDb() throw (r_Error) +{ + RMDBGENTER(5, RMDebug::module_catalogif, "SetType", "insertInDb() " << myOId << " " << getTypeName()); + + EXEC SQL BEGIN DECLARE SECTION; + double mddtypeid; + char settypename[VARCHAR_MAXLEN]; + long settypeid; + EXEC SQL END DECLARE SECTION; + + (void) strncpy( settypename, (char*) getTypeName(), (size_t) sizeof(settypename) ); + settypeid = myOId.getCounter(); + mddtypeid = getMDDType()->getOId(); + + // TALK( "EXEC SQL INSERT INTO RAS_SETTYPES ( SetTypeId, SetTypeName, MDDTypeOId) VALUES( " << settypeid << ", " << settypename << ", " << mddtypeid << " )" ); + EXEC SQL INSERT INTO RAS_SETTYPES ( SetTypeId, SetTypeName, MDDTypeOId) + VALUES ( :settypeid, :settypename, :mddtypeid); + if (SQLCODE != SQLOK) + { + check("SetType::insertInDb()"); + LEAVE("SetType::insertInDb() error: " << SQLCODE ); + generateException(); + } + + DBObject::insertInDb(); + + RMDBGEXIT(5, RMDebug::module_catalogif, "SetType", "insertInDb() " << myOId); +} + +void +SetType::deleteFromDb() throw (r_Error) +{ + RMDBGENTER(5, RMDebug::module_catalogif, "SetType", "deleteFromDb() " << myOId << " " << getTypeName()); + EXEC SQL BEGIN DECLARE SECTION; + long settypeid3; + EXEC SQL END DECLARE SECTION; + + settypeid3 = myOId.getCounter(); + + TALK( "EXEC SQL DELETE FROM RAS_SETTYPES WHERE RAS_SETTYPES.SetTypeId = " << settypeid3 ); + EXEC SQL DELETE FROM RAS_SETTYPES WHERE RAS_SETTYPES.SetTypeId = :settypeid3; + if (SQLCODE != SQLOK) + { + check("SetType::deleteFromDb()"); + LEAVE("SetType::deleteFromDb() error: " << SQLCODE ); + generateException(); + } + DBObject::deleteFromDb(); + RMDBGEXIT(5, RMDebug::module_catalogif, "SetType", "deleteFromDb() " << myOId); +} + +void +SetType::readFromDb() throw (r_Error) +{ + RMDBGENTER(5, RMDebug::module_catalogif, "SetType", "readFromDb() " << myOId); +#ifdef RMANBENCHMARK + DBObject::readTimer.resume(); +#endif + EXEC SQL BEGIN DECLARE SECTION; + double mddtypeid1; + char settypename1[VARCHAR_MAXLEN]; + long settypeid1; + EXEC SQL END DECLARE SECTION; + + settypeid1 = myOId.getCounter(); + mddtypeid1 = 0; + + TALK( "EXEC SQL SELECT SetTypeName, MDDTypeOId INTO :settypename1, :mddtypeid1 FROM RAS_SETTYPES WHERE SetTypeId = " << settypeid1 ); + EXEC SQL SELECT SetTypeName, MDDTypeOId + INTO :settypename1, :mddtypeid1 + FROM RAS_SETTYPES + WHERE SetTypeId = :settypeid1; + if (check("SetType::readFromDb()") != 0) + { + if (SQLCODE == SQLNODATAFOUND) // was: 100 -- PB 2005-feb-13 + throw r_Error(r_Error::r_Error_ObjectUnknown); + else + generateException(); + } + + setName(settypename1); + myType = SETTYPE; + myMDDType = (MDDType*)ObjectBroker::getObjectByOId(OId(mddtypeid1)); + DBObject::readFromDb(); + +#ifdef RMANBENCHMARK + DBObject::readTimer.pause(); +#endif + + RMDBGEXIT(5, RMDebug::module_catalogif, "SetType", "readFromDb() " << myOId); +} + |