/* * 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: * implements adminif interface using the PostgreSQL DBMS. * * * COMMENTS: * none * ***********************************************************************/ static const char rcsid[] = "@(#)reladminif,AdminIf: $Id: adminif.ec,v 1.6 2003/12/27 23:11:43 rasdev Exp $"; #include "debug-srv.hh" #include "sqlerror.hh" // general embedded SQL related definitions EXEC SQL include sqlglobals.h; #include "adminif.hh" #include "raslib/rmdebug.hh" #include "objectbroker.hh" extern char globalConnectId[256]; const char AdminIf::dbmsName[SYSTEMNAME_MAXLEN]="PostgreSQL"; AdminIf::AdminIf() throw (r_Error) { RMDBGENTER(4, RMDebug::module_adminif, "Adminif", "AdminIf()"); ENTER( "AdminIf::AdminIf" ); EXEC SQL BEGIN DECLARE SECTION; char id[STRING_MAXLEN]; EXEC SQL END DECLARE SECTION; strncpy((char *)&id, globalConnectId, sizeof(id)-1); TALK( "EXEC SQL CONNECT TO " << id ); EXEC SQL CONNECT TO :id; if (check("AdminIf Connect\0")) { validConnection = false; TALK( "connect unsuccessful; wrong connect string?" ); cout << "Error: connect unsuccessful; wrong connect string '" << globalConnectId << "' ?" << endl; throw r_Error( 830 ); } else { validConnection = true; TALK( "connect ok" ); } TALK( "EXEC SQL ROLLBACK WORK" ); EXEC SQL ROLLBACK WORK; #ifndef FASTCONNECT TALK( "EXEC SQL DISCONNECT CURRENT" ); EXEC SQL DISCONNECT CURRENT; #endif ObjectBroker::init(); LEAVE( "AdminIf::AdminIf, SQLCODE=" << SQLCODE ); RMDBGEXIT(4, RMDebug::module_adminif, "Adminif", "AdminIf() " << validConnection); }