diff options
author | Constantin Jucovschi <cj@ubuntu.localdomain> | 2009-04-24 07:20:22 -0400 |
---|---|---|
committer | Constantin Jucovschi <cj@ubuntu.localdomain> | 2009-04-24 07:20:22 -0400 |
commit | 8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 (patch) | |
tree | bd328a4dd4f92d32202241b5e3a7f36177792c5f /reladminif/oidif.pgc | |
download | rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.tar.gz rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.tar.xz rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.zip |
Initial commitv8.0
Diffstat (limited to 'reladminif/oidif.pgc')
-rw-r--r-- | reladminif/oidif.pgc | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/reladminif/oidif.pgc b/reladminif/oidif.pgc new file mode 100644 index 0000000..9f19254 --- /dev/null +++ b/reladminif/oidif.pgc @@ -0,0 +1,135 @@ +/* +* 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>. +*/ +// This is -*- C++ -*- +/***************************************************************************** + * + * + * PURPOSE: + * + * + * COMMENTS: + * uses embedded SQL + * + *****************************************************************************/ + +static const char rcsid[] = "@(#)reladminif,OIdIf: $Id: oidif.ec,v 1.5 2003/12/27 23:11:43 rasdev Exp $"; + +#include "debug-srv.hh" + +// general embedded SQL related definitions +EXEC SQL include "sqlglobals.h"; + +#include "oidif.hh" +#include "raslib/rmdebug.hh" +#include "sqlerror.hh" +#include "adminif.hh" + +void +OId::initialize() +{ + RMDBGENTER(4, RMDebug::module_adminif, "OId", "initialize()"); + ENTER( "OId::initialize" ); + + loadedOk = false; + + EXEC SQL BEGIN DECLARE SECTION; + long nextoid; + char name[STRING_MAXLEN]; + EXEC SQL END DECLARE SECTION; + nextoid = 0; + for (int i = 1; i < maxCounter; i++) + { + (void) strncpy( name, (char*) counterNames[i], (size_t) sizeof(name) ); + + TALK( "EXEC SQL SELECT NextValue INTO :nextoid FROM RAS_COUNTERS WHERE CounterName = " << name ); + EXEC SQL SELECT NextValue INTO :nextoid + FROM RAS_COUNTERS + WHERE CounterName = :name; + TALK( "-> nextoid=" << nextoid ); + if (check("OId::initialize() SELECT OId")) + { + RMInit::logOut << "OId::initialize() error reading " << name << endl; + generateException(); + } + *counterIds[i] = nextoid; + RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "read " << counterNames[i] << " " << *counterIds[i]); + } + + loadedOk = true; + + LEAVE( "OId::initialize" ); + RMDBGEXIT(4, RMDebug::module_adminif, "OId", "initialize()"); +} + +void +OId::deinitialize() +{ + RMDBGENTER(4, RMDebug::module_adminif, "OId", "deinitialize()"); + ENTER( "OId::deinitialize" ); + + if (AdminIf::isReadOnlyTA()) + { + RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "do nothing is read only"); + } + else + { + if (AdminIf::isAborted()) + { + RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "do nothing is aborted"); + } + + else if(loadedOk==false) + { + RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "avoiding to write uninitialized counters into DB"); + } + + else + { + EXEC SQL BEGIN DECLARE SECTION; + long nextoid1; + char name2[STRING_MAXLEN]; + EXEC SQL END DECLARE SECTION; + + for (int i = 1; i < maxCounter; i++) + { + nextoid1 = *counterIds[i]; + (void) strncpy( name2, (char*) counterNames[i], (size_t) sizeof(name2) ); + + RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "setting " << name2 << " to " << nextoid1) + TALK( "EXEC SQL UPDATE RAS_COUNTERS SET NextValue = " << nextoid1 << " WHERE CounterName = " << name2 ); + EXEC SQL UPDATE RAS_COUNTERS SET NextValue = :nextoid1 + WHERE CounterName = :name2; + if (check("OId::deinitialize() UPDATE OId")) + { + RMInit::logOut << "OId::deinitialize() error writing " << name2 << endl; + } + } + } + } + + loadedOk = false; + + LEAVE( "OId::deinitialize" ); + RMDBGEXIT(4, RMDebug::module_adminif, "OId", "deinitialize()"); +} + |