#include "mymalloc/mymalloc.h"
// 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:
* none
*
***********************************************************************/
// general embedded SQL related definitions
EXEC SQL include "../reladminif/sqlglobals.h";
#include "mdddimensiontype.hh"
#include "raslib/rmdebug.hh"
#include "reladminif/objectbroker.hh"
#include "reladminif/sqlerror.hh"
void
MDDDimensionType::insertInDb() throw (r_Error)
{
RMDBGENTER(5, RMDebug::module_catalogif, "MDDDimensionType", "insertInDb() " << myOId << " " << getTypeName());
EXEC SQL BEGIN DECLARE SECTION;
long mddtypeid;
short dimension;
double mddbasetypeid;
char mddtypename[STRING_MAXLEN];
EXEC SQL END DECLARE SECTION;
dimension = myDimension;
mddtypeid = myOId.getCounter();
(void) strncpy( mddtypename, (char*) getName(), (size_t) sizeof(mddtypename) );
DBObject* obj = (DBObject*)getBaseType();
mddbasetypeid = obj->getOId();
RMDBGMIDDLE(5, RMDebug::module_catalogif, "MDDDimensionType", " typeid " << mddtypeid << " name " << mddtypename << " basetypeoid " << mddbasetypeid << "dimension " << dimension)
EXEC SQL INSERT INTO RAS_MDDDIMTYPES (
MDDDimTypeOId,
MDDTypeName,
BaseTypeId,
Dimension
)
VALUES (
:mddtypeid,
:mddtypename,
:mddbasetypeid,
:dimension
);
if (check("MDDDimensionType::insertInDb()\0"))
generateException();
DBObject::insertInDb();
RMDBGEXIT(5, RMDebug::module_catalogif, "MDDDimensionType", "insertInDb() " << myOId);
}
void
MDDDimensionType::readFromDb() throw (r_Error)
{
RMDBGENTER(5, RMDebug::module_catalogif, "MDDDimensionType", "readFromDb() " << myOId);
#ifdef RMANBENCHMARK
DBObject::readTimer.resume();
#endif
EXEC SQL BEGIN DECLARE SECTION;
long mddtypeid1;
char mddtypename1[STRING_MAXLEN];
double mddbasetypeid1;
short dimension1;
EXEC SQL END DECLARE SECTION;
mddtypeid1 = myOId.getCounter();
mddbasetypeid1 = 0;
dimension1 = 0;
EXEC SQL SELECT
Dimension,
BaseTypeId,
MDDTypeName
INTO
:dimension1,
:mddbasetypeid1,
:mddtypename1
FROM
RAS_MDDDIMTYPES
WHERE
MDDDimTypeOId = :mddtypeid1;
if (check("MDDDimensionType::MDDDimensionType() SELECT FROM RAS_MDDDIMTYPES\0") != 0)
if (SQLCODE == 100)
throw r_Error(r_Error::r_Error_ObjectUnknown);
else
generateException();
myDimension = dimension1;
setName(mddtypename1);
myBaseType = (BaseType*)ObjectBroker::getObjectByOId(OId(mddbasetypeid1));
#ifdef RMANBENCHMARK
DBObject::readTimer.pause();
#endif
RMDBGMIDDLE(6, RMDebug::module_catalogif, "MDDDimensionType", "myBaseType at " << myBaseType);
DBObject::readFromDb();
RMDBGEXIT(5, RMDebug::module_catalogif, "MDDDimensionType", "readFromDb() " << myOId);
}
void
MDDDimensionType::deleteFromDb() throw (r_Error)
{
RMDBGENTER(5, RMDebug::module_catalogif, "MDDDimensionType", "deleteFromDb() " << myOId << " " << getTypeName());
EXEC SQL BEGIN DECLARE SECTION;
long mddtypeid3;
EXEC SQL END DECLARE SECTION;
mddtypeid3 = myOId.getCounter();
EXEC SQL DELETE FROM
RAS_MDDDIMTYPES
WHERE
MDDDimTypeOId = :mddtypeid3;
if (check("MDDDimensionType::deleteFromDb()\0"))
generateException();
DBObject::deleteFromDb();
RMDBGEXIT(5, RMDebug::module_catalogif, "MDDDimensionType", "deleteFromDb() " << myOId);
}