Index: CHANGELOG.txt
===================================================================
RCS file: /projects/pgadmin3/CHANGELOG.txt,v
retrieving revision 1.146
retrieving revision 1.147
diff -LCHANGELOG.txt -LCHANGELOG.txt -u -w -r1.146 -r1.147
--- CHANGELOG.txt
+++ CHANGELOG.txt
@@ -17,6 +17,7 @@
+ - 2004-10-13 AP 1.2B3 Connect to databases with special names (r: Frank Lupo)
- 2004-10-08 AP 1.2B3 review object owner code regarding pgsql versions
- 2004-10-08 AP 1.2B3 remove maximize button on MSW
- 2004-10-07 AP 1.2B3 Fix new server ssl option duplication on connect failure (r: Alexander Borkowski)
Index: pgConn.cpp
===================================================================
RCS file: /projects/pgadmin3/src/db/pgConn.cpp,v
retrieving revision 1.57
retrieving revision 1.58
diff -Lsrc/db/pgConn.cpp -Lsrc/db/pgConn.cpp -u -w -r1.57 -r1.58
--- src/db/pgConn.cpp
+++ src/db/pgConn.cpp
@@ -48,7 +48,7 @@
}
-pgConn::pgConn(const wxString& server, const wxString& database, const wxString& username, const wxString& password, int port, int sslmode)
+pgConn::pgConn(const wxString& server, const wxString& database, const wxString& username, const wxString& password, int port, int sslmode, OID oid)
{
wxLogInfo(wxT("Creating pgConn object"));
wxString msg, hostip;
@@ -138,7 +138,19 @@
// Open the connection
wxLogInfo(wxT("Opening connection with connection string: %s"), connstr.c_str());
+ bool connectAscii=false;
+
+#if wxUSE_UNICODE
+ conn = PQconnectdb(connstr.mb_str(wxConvUTF8));
+ if (PQstatus(conn) != CONNECTION_OK)
+ {
+ PQfinish(conn);
+ conn = PQconnectdb(connstr.mb_str(wxConvLibc));
+ }
+#else
conn = PQconnectdb(connstr.ToAscii());
+#endif
+
dbHost = server;
// Set client encoding to Unicode/Ascii
@@ -147,15 +159,24 @@
connStatus = PGCONN_OK;
PQsetNoticeProcessor(conn, pgNoticeProcessor, this);
- pgSet *set=ExecuteSet(
- wxT("SELECT pg_encoding_to_char(encoding) AS encoding, datlastsysoid\n")
- wxT(" FROM pg_database WHERE datname=") + qtString(database));
+
+ wxString sql=wxT("SELECT oid, pg_encoding_to_char(encoding) AS encoding, datlastsysoid\n")
+ wxT(" FROM pg_database WHERE ");
+ if (oid)
+ sql += wxT("oid = ") + NumToStr(oid);
+ else
+ sql += wxT("datname=") + qtString(database);
+
+ pgSet *set = ExecuteSet(sql);
+
+
if (set)
{
if (set->ColNumber(wxT("\"datlastsysoid\"")) >= 0)
needColQuoting = true;
- lastSystemOID = set->GetLong(wxT("datlastsysoid"));
+ lastSystemOID = set->GetOid(wxT("datlastsysoid"));
+ dbOid = set->GetOid(wxT("oid"));
wxString encoding = set->GetVal(wxT("encoding"));
#if wxUSE_UNICODE
@@ -164,6 +185,8 @@
encoding = wxT("UNICODE");
conv = &wxConvUTF8;
}
+ else
+ conv = &wxConvLibc;
#endif
wxLogInfo(wxT("Setting client_encoding to '%s'"), encoding.c_str());
@@ -440,7 +463,7 @@
wxT("SELECT proname, pronargs, proargtypes[0] AS arg0, proargtypes[1] AS arg1, proargtypes[2] AS arg2\n")
wxT(" FROM pg_proc\n")
wxT(" WHERE proname IN ('pg_tablespace_size', 'pg_file_read', 'pg_rotate_log',")
- wxT( " 'pg_postmaster_starttime', 'pg_terminate_backend')"));
+ wxT( " 'pg_postmaster_starttime', 'pg_terminate_backend', 'pg_reload_conf')"));
if (set)
{
@@ -460,6 +483,8 @@
features[FEATURE_POSTMASTER_STARTTIME] = true;
else if (proname == wxT("pg_terminate_backend") && pronargs == 1 && set->GetLong(wxT("arg0")) == 23)
features[FEATURE_TERMINATE_BACKEND] = true;
+ else if (proname == wxT("pg_reload_conf") && pronargs == 0)
+ features[FEATURE_RELOAD_CONF] = true;
set->MoveNext();
}
Index: pgServer.h
===================================================================
RCS file: /projects/pgadmin3/src/include/pgServer.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -Lsrc/include/pgServer.h -Lsrc/include/pgServer.h -u -w -r1.40 -r1.41
--- src/include/pgServer.h
+++ src/include/pgServer.h
@@ -62,7 +62,7 @@
bool GetSuperUser() const { return superUser; }
void iSetSuperUser(const bool b) { superUser=b; }
- pgConn *CreateConn(wxString dbName=wxEmptyString);
+ pgConn *CreateConn(wxString dbName=wxEmptyString, OID oid=0);
wxString GetLastDatabase() const { return lastDatabase; }
void iSetLastDatabase(const wxString& s) { lastDatabase=s; }
@@ -111,6 +111,7 @@
int port, ssl;
bool trusted, discovered, createPrivilege, superUser;
OID lastSystemOID;
+ OID dbOid;
wxString versionNum;
#ifdef WIN32
Index: pgConn.h
===================================================================
RCS file: /projects/pgadmin3/src/include/pgConn.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -Lsrc/include/pgConn.h -Lsrc/include/pgConn.h -u -w -r1.26 -r1.27
--- src/include/pgConn.h
+++ src/include/pgConn.h
@@ -50,7 +50,7 @@
class pgConn
{
public:
- pgConn(const wxString& server = wxT(""), const wxString& database = wxT(""), const wxString& username = wxT(""), const wxString& password = wxT(""), int port = 5432, int sslmode=0);
+ pgConn(const wxString& server = wxT(""), const wxString& database = wxT(""), const wxString& username = wxT(""), const wxString& password = wxT(""), int port = 5432, int sslmode=0, OID oid=0);
~pgConn();
void Close();
@@ -72,6 +72,7 @@
wxString GetLastError() const;
wxString GetVersionString();
OID GetLastSystemOID() const { return lastSystemOID; }
+ OID GetDbOid() const { return dbOid; }
bool BackendMinimumVersion(int major, int minor);
void RegisterNoticeProcessor(PQnoticeProcessor proc, void *arg);
wxString SystemNamespaceRestriction(const wxString &nsp);
@@ -95,6 +96,7 @@
bool needColQuoting;
wxString dbHost;
OID lastSystemOID;
+ OID dbOid;
void *noticeArg;
PQnoticeProcessor noticeProc;
Index: pgDatabase.h
===================================================================
RCS file: /projects/pgadmin3/src/include/pgDatabase.h,v
retrieving revision 1.39
retrieving revision 1.40
diff -Lsrc/include/pgDatabase.h -Lsrc/include/pgDatabase.h -u -w -r1.39 -r1.40
--- src/include/pgDatabase.h
+++ src/include/pgDatabase.h
@@ -41,7 +41,7 @@
bool ExecuteVoid(const wxString& sql);
void UpdateDefaultSchema();
- pgConn *CreateConn() { return server->CreateConn(GetName()); }
+ pgConn *CreateConn() { return server->CreateConn(GetName(), GetOid()); }
wxString GetPrettyOption() const { return prettyOption; }
Index: pgServer.cpp
===================================================================
RCS file: /projects/pgadmin3/src/schema/pgServer.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -Lsrc/schema/pgServer.cpp -Lsrc/schema/pgServer.cpp -u -w -r1.53 -r1.54
--- src/schema/pgServer.cpp
+++ src/schema/pgServer.cpp
@@ -87,15 +87,17 @@
}
-pgConn *pgServer::CreateConn(wxString dbName)
+pgConn *pgServer::CreateConn(wxString dbName, OID oid)
{
if (!connected)
return 0;
if (dbName.IsEmpty())
+ {
dbName = GetDatabaseName();
-
- pgConn *conn=new pgConn(GetName(), dbName, username, password, port, ssl);
+ oid = dbOid;
+ }
+ pgConn *conn=new pgConn(GetName(), dbName, username, password, port, ssl, oid);
if (conn && conn->GetStatus() != PGCONN_OK)
{
@@ -301,6 +303,8 @@
int status = conn->GetStatus();
if (status == PGCONN_OK)
{
+ dbOid = conn->GetDbOid();
+
// Check the server version
if (conn->BackendMinimumVersion(7, 3))
{