// 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 .
*
* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
rasdaman GmbH.
*
* For more information please see
* or contact Peter Baumann via .
*/
/*************************************************************
*
*
* 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);
}