Le 30/12/2009 18:09, Dave Page a écrit :
> On Wed, Dec 30, 2009 at 1:14 PM, Guillaume Lelarge
> <[email protected]> wrote:
>>> The application_name should be set as a connection string parameter,
>>> not an explicit SET command.
>>
>> That was the first thing I wanted to do. But people won't be able to use
>> pgAdmin with older PostgreSQL releases if we use the connection string
>> parameter.
>
> Yes they will. We changed libpq to ensure that works properly.
>
OK, I finally understood it. Sorry.
>>> This ensures that the application name is
>>> included in the initial connection log message, and avoids a round
>>> trip with the SET query. PQconninfoParse can be used to test if libpq
>>> supports application_name at runtime.
>>>
>>
>> I don't understand that. libpq and the server are two different things.
>> You can have a new libpq on your client and an old server. client's
>> PQconninfoParse will tell you application_name is available, but it
>> could be that the server doesn't understand it. Perhaps I need to get a
>> better look at PQconninfoParse, but don't have the time right now.
>
> You need an 8.5 libpq to use application_name in the connection
> string. It doesn't matter what server you have, as libpq will ignore
> the parameter for older servers. To ensure you have a suitable libpq,
> prepare the connection string, and feed it to PQconninfoParse. If you
> get a null response, there's a problem (e.g. application_name is not
> supported). If you get a non-null response, the connection string is
> valid.
>
OK. Here is a new patch which calls PQconninfoParse and acts according
to its return code. It also removes part of the old patch.
Is it better?
>>> I suspect the patch is also missing some changes to the debugger.
>>>
>>
>> Probably, I'll look at this.
>>
Done too.
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
diff --git a/pgadmin/db/pgConn.cpp b/pgadmin/db/pgConn.cpp
index 303f0fa..04853e6 100644
--- a/pgadmin/db/pgConn.cpp
+++ b/pgadmin/db/pgConn.cpp
@@ -50,7 +50,7 @@ static void pgNoticeProcessor(void *arg, const char *message)
((pgConn*)arg)->Notice(message);
}
-pgConn::pgConn(const wxString& server, const wxString& database, const wxString& username, const wxString& password, int port, int sslmode, OID oid)
+pgConn::pgConn(const wxString& server, const wxString& database, const wxString& username, const wxString& password, int port, int sslmode, OID oid, const wxString& applicationname)
{
wxString msg, hostip, hostname;
@@ -61,6 +61,7 @@ pgConn::pgConn(const wxString& server, const wxString& database, const wxString&
save_port = port;
save_sslmode = sslmode;
save_oid = oid;
+ save_applicationname = applicationname;
memset(features, 0, sizeof(features));
majorVersion=0;
@@ -168,6 +169,21 @@ pgConn::pgConn(const wxString& server, const wxString& database, const wxString&
dbHost = server;
dbHostName = hostname;
dbHostAddress = hostip;
+
+ if (!applicationname.IsEmpty())
+ {
+ // Check connection string with application_name
+ char *errmsg;
+ wxString connstr_with_applicationname = connstr + wxT(" application_name='") + applicationname + wxT("'");
+ if (PQconninfoParse(connstr_with_applicationname.mb_str(wxConvUTF8), &errmsg))
+ {
+ connstr = connstr_with_applicationname;
+ }
+ else if (PQconninfoParse(connstr_with_applicationname.mb_str(wxConvLibc), &errmsg))
+ {
+ connstr = connstr_with_applicationname;
+ }
+ }
// Open the connection
wxString cleanConnStr = connstr;
@@ -206,10 +222,6 @@ bool pgConn::DoConnect()
connStatus = PGCONN_OK;
PQsetNoticeProcessor(conn, pgNoticeProcessor, this);
- // tell the backend who we really are
- if (BackendMinimumVersion(8, 5))
- ExecuteVoid(wxT("SET application_name='pgAdmin - Browser'"),false);
-
wxString sql=wxT("SET DateStyle=ISO;SELECT oid, pg_encoding_to_char(encoding) AS encoding, datlastsysoid\n")
wxT(" FROM pg_database WHERE ");
diff --git a/pgadmin/debugger/dbgPgConn.cpp b/pgadmin/debugger/dbgPgConn.cpp
index be5e00f..2c31e49 100644
--- a/pgadmin/debugger/dbgPgConn.cpp
+++ b/pgadmin/debugger/dbgPgConn.cpp
@@ -43,19 +43,19 @@ typedef u_long in_addr_t;
//
// The constructor creates a new thread and connects to the specified server
-dbgPgConn::dbgPgConn(frmDebugger *frame, const wxString &server, const wxString &database, const wxString &userName, const wxString &password, const wxString &port, int sslmode)
+dbgPgConn::dbgPgConn(frmDebugger *frame, const wxString &server, const wxString &database, const wxString &userName, const wxString &password, const wxString &port, int sslmode, const wxString &applicationname)
: m_frame(frame)
{
- Init( server, database, userName, password, port, sslmode, true );
+ Init( server, database, userName, password, port, sslmode, applicationname, true );
}
dbgPgConn::dbgPgConn(frmDebugger *frame, const dbgConnProp & props, bool startThread )
: m_frame(frame)
{
- Init( props.m_host, props.m_database, props.m_userName, props.m_password, props.m_port, props.m_sslMode, startThread );
+ Init( props.m_host, props.m_database, props.m_userName, props.m_password, props.m_port, props.m_sslMode, props.m_applicationName, startThread );
}
-void dbgPgConn::Init( const wxString &server, const wxString &database, const wxString &username, const wxString &password, const wxString &port, int sslmode, bool startThread )
+void dbgPgConn::Init( const wxString &server, const wxString &database, const wxString &username, const wxString &password, const wxString &port, int sslmode, const wxString &applicationname, bool startThread )
{
m_pgConn = NULL;
m_majorVersion = 0;
@@ -205,6 +205,17 @@ void dbgPgConn::Init( const wxString &server, const wxString &database, const wx
connectParams.Trim(true);
connectParams.Trim(false);
+ if (!applicationname.IsEmpty())
+ {
+ // Check connection string with application_name
+ char *errmsg;
+ wxString connectParams_with_applicationname = connectParams + wxT(" application_name='") + applicationname + wxT("'");
+ if (PQconninfoParse(connectParams_with_applicationname.mb_str(wxConvUTF8), &errmsg))
+ {
+ connectParams = connectParams_with_applicationname;
+ }
+ }
+
m_frame->getStatusBar()->SetStatusText( wxString::Format(_( "Connecting to %s" ), msg.c_str()), 1 );
m_pgConn = PQconnectdb( connectParams.mb_str(wxConvUTF8));
diff --git a/pgadmin/dlg/dlgSelectConnection.cpp b/pgadmin/dlg/dlgSelectConnection.cpp
index 45e95e4..2c6e564 100644
--- a/pgadmin/dlg/dlgSelectConnection.cpp
+++ b/pgadmin/dlg/dlgSelectConnection.cpp
@@ -186,10 +186,10 @@ void dlgSelectConnection::OnCancel(wxCommandEvent& ev)
EndModal(wxID_CANCEL);
}
-pgConn *dlgSelectConnection::CreateConn()
+pgConn *dlgSelectConnection::CreateConn(wxString& applicationname)
{
if (GetServer()) /* Running with access to the main form with the object tree */
- return GetServer()->CreateConn(GetDatabase());
+ return GetServer()->CreateConn(GetDatabase(), 0, applicationname);
else
{
/* gcc requires that we store this in temporary variables for some reason... */
@@ -206,14 +206,14 @@ pgConn *dlgSelectConnection::CreateConn()
serv = serv.Mid(0, serv.Find(':'));
}
wxString user = txtUsername->GetValue();
- return CreateConn(serv, db, user, port, 0, true);
+ return CreateConn(serv, db, user, port, 0, applicationname, true);
}
}
-pgConn *dlgSelectConnection::CreateConn(wxString& server, wxString& dbname, wxString& username, int port, int sslmode, bool writeMRU)
+pgConn *dlgSelectConnection::CreateConn(wxString& server, wxString& dbname, wxString& username, int port, int sslmode, wxString& applicationname, bool writeMRU)
{
pgConn *newconn;
- newconn = new pgConn(server, dbname, username, wxT(""), port, sslmode);
+ newconn = new pgConn(server, dbname, username, wxT(""), port, sslmode, 0, applicationname);
if (newconn->GetStatus() != PGCONN_OK &&
newconn->GetLastError().Cmp(wxString(PQnoPasswordSupplied, wxConvUTF8)) == 0)
{
@@ -227,7 +227,7 @@ pgConn *dlgSelectConnection::CreateConn(wxString& server, wxString& dbname, wxSt
if (dlg.Go() != wxID_OK)
return NULL;
- newconn = new pgConn(server, dbname, username, dlg.GetPassword(), port, sslmode);
+ newconn = new pgConn(server, dbname, username, dlg.GetPassword(), port, sslmode, 0, applicationname);
}
if (newconn)
diff --git a/pgadmin/frm/frmConfig.cpp b/pgadmin/frm/frmConfig.cpp
index 3e21a6a..aae2227 100644
--- a/pgadmin/frm/frmConfig.cpp
+++ b/pgadmin/frm/frmConfig.cpp
@@ -62,11 +62,6 @@ frmConfig::frmConfig(frmMain *parent, const wxString& title, pgConn *_conn)
mainForm = parent;
conn=_conn;
SetStatusBarPane(-1);
-
- // tell the backend who we really are
- if (conn->BackendMinimumVersion(8, 5))
- conn->ExecuteVoid(wxT("SET application_name='pgAdmin - Config Editor'"),false);
-
}
diff --git a/pgadmin/frm/frmEditGrid.cpp b/pgadmin/frm/frmEditGrid.cpp
index 4927f27..30bd017 100644
--- a/pgadmin/frm/frmEditGrid.cpp
+++ b/pgadmin/frm/frmEditGrid.cpp
@@ -107,10 +107,6 @@ frmEditGrid::frmEditGrid(frmMain *form, const wxString& _title, pgConn *_conn, p
relid=(Oid)obj->GetOid();
editorCell = new sqlCell();
- // tell the backend who we really are
- if (connection->BackendMinimumVersion(8, 5))
- connection->ExecuteVoid(wxT("SET application_name='pgAdmin - Edit Grid'"),false);
-
// notify wxAUI which frame to use
manager.SetManagedWindow(this);
manager.SetFlags(wxAUI_MGR_DEFAULT | wxAUI_MGR_TRANSPARENT_DRAG);
@@ -3064,9 +3060,10 @@ bool editGridFactoryBase::CheckEnable(pgObject *obj)
wxWindow *editGridFactoryBase::ViewData(frmMain *form, pgObject *obj, bool filter)
{
pgDatabase *db=((pgSchemaObject*)obj)->GetDatabase();
+ wxString applicationname = wxT("pgAdmin - Edit Grid");
pgServer *server=db->GetServer();
- pgConn *conn= db->CreateConn();
+ pgConn *conn= db->CreateConn(applicationname);
if (conn)
{
wxString txt = wxT("Edit Data - ")
diff --git a/pgadmin/frm/frmHbaConfig.cpp b/pgadmin/frm/frmHbaConfig.cpp
index 511ff9f..4f5114e 100644
--- a/pgadmin/frm/frmHbaConfig.cpp
+++ b/pgadmin/frm/frmHbaConfig.cpp
@@ -48,16 +48,13 @@ END_EVENT_TABLE()
frmHbaConfig::frmHbaConfig(frmMain *parent, pgServer *server)
: frmConfig(parent, BACE_TITLE, 0)
{
+ wxString applicationname = wxT("pgAdmin - Configuration Editor");
if (server)
- conn = server->CreateConn();
+ conn = server->CreateConn(wxEmptyString, 0, applicationname);
Init();
if (conn)
{
- // tell the backend who we really are
- if (conn->BackendMinimumVersion(8, 5))
- conn->ExecuteVoid(wxT("SET application_name='pgAdmin - Config Editor'"),false);
-
serverFileName = conn->ExecuteScalar(wxT("SHOW hba_file"));
if (serverFileName == wxT("unset") || serverFileName.IsEmpty())
serverFileName = wxT("pg_hba.conf");
diff --git a/pgadmin/frm/frmMainConfig.cpp b/pgadmin/frm/frmMainConfig.cpp
index 1b21f0d..1d7395f 100644
--- a/pgadmin/frm/frmMainConfig.cpp
+++ b/pgadmin/frm/frmMainConfig.cpp
@@ -47,18 +47,15 @@ END_EVENT_TABLE()
frmMainConfig::frmMainConfig(frmMain *parent, pgServer *server)
: frmConfig(parent, BCE_TITLE, 0)
{
+ wxString applicationname = wxT("pgAdmin - Configuration Editor");
if (server)
- conn = server->CreateConn();
+ conn = server->CreateConn(wxEmptyString, 0, applicationname);
InitForm();
Init();
if (conn)
{
- // tell the backend who we really are
- if (conn->BackendMinimumVersion(8, 5))
- conn->ExecuteVoid(wxT("SET application_name='pgAdmin - Config Editor'"),false);
-
if (serverFileName.IsEmpty())
serverFileName = wxT("postgresql.conf");
diff --git a/pgadmin/frm/frmQuery.cpp b/pgadmin/frm/frmQuery.cpp
index ecfca27..08904c4 100644
--- a/pgadmin/frm/frmQuery.cpp
+++ b/pgadmin/frm/frmQuery.cpp
@@ -212,10 +212,6 @@ pgsTimer(new pgScriptTimer(this))
recentKey = wxT("RecentFiles");
RestorePosition(100, 100, 600, 500, 450, 300);
- // tell the backend who we really are
- if (conn->BackendMinimumVersion(8, 5))
- conn->ExecuteVoid(wxT("SET application_name='pgAdmin - Query Tool'"),false);
-
// notify wxAUI which frame to use
manager.SetManagedWindow(this);
manager.SetFlags(wxAUI_MGR_DEFAULT | wxAUI_MGR_TRANSPARENT_DRAG);
@@ -910,7 +906,8 @@ void frmQuery::OnChangeConnection(wxCommandEvent &ev)
int rc=dlg.Go(conn, cbConnection);
if (rc == wxID_OK)
{
- conn = dlg.CreateConn();
+ wxString applicationname = wxT("pgAdmin (Query Tool)");
+ conn = dlg.CreateConn(applicationname);
if (conn)
{
cbConnection->Insert(conn->GetName(), CreateBitmap(GetServerColour()), sel, (void*)conn);
@@ -2592,7 +2589,8 @@ wxColour frmQuery::GetServerColour()
wxWindow *queryToolBaseFactory::StartDialogSql(frmMain *form, pgObject *obj, const wxString &sql)
{
pgDatabase *db=obj->GetDatabase();
- pgConn *conn = db->CreateConn();
+ wxString applicationname = wxT("pgAdmin - Query Tool");
+ pgConn *conn = db->CreateConn(applicationname);
if (conn)
{
frmQuery *fq= new frmQuery(form, wxEmptyString, conn, sql);
diff --git a/pgadmin/frm/frmStatus.cpp b/pgadmin/frm/frmStatus.cpp
index 1678d09..d25c1f9 100644
--- a/pgadmin/frm/frmStatus.cpp
+++ b/pgadmin/frm/frmStatus.cpp
@@ -176,10 +176,6 @@ frmStatus::frmStatus(frmMain *form, const wxString& _title, pgConn *conn) : pgFr
logHasTimestamp = false;
logFormatKnown = false;
- // tell the backend who we really are
- if (conn->BackendMinimumVersion(8, 5))
- conn->ExecuteVoid(wxT("SET application_name='pgAdmin - Server Status'"),false);
-
// Notify wxAUI which frame to use
manager.SetManagedWindow(this);
manager.SetFlags(wxAUI_MGR_DEFAULT | wxAUI_MGR_TRANSPARENT_DRAG | wxAUI_MGR_ALLOW_ACTIVE_PANE);
@@ -442,7 +438,8 @@ void frmStatus::OnChangeDatabase(wxCommandEvent &ev)
}
locks_connection = new pgConn(connection->GetHostAddress(), cbDatabase->GetValue(),
- connection->GetUser(), connection->GetPassword(), connection->GetPort(), connection->GetSslMode());
+ connection->GetUser(), connection->GetPassword(), connection->GetPort(), connection->GetSslMode(),
+ 0, connection->GetApplicationName());
}
@@ -801,10 +798,10 @@ void frmStatus::OnCopyQuery(wxCommandEvent& ev)
if (text.Length() > 0 && dbname.Length() > 0
&& text.Trim() != wxT("<IDLE>") && text.Trim() != wxT("<IDLE in transaction>"))
{
- //pgDatabase *db=obj->GetDatabase();
pgConn *conn = new pgConn(connection->GetHostAddress(), dbname,
connection->GetUser(), connection->GetPassword(),
- connection->GetPort(), connection->GetSslMode(), connection->GetDbOid());
+ connection->GetPort(), connection->GetSslMode(), connection->GetDbOid(),
+ connection->GetApplicationName());
if (conn)
{
frmQuery *fq = new frmQuery(mainForm, wxEmptyString, conn, text);
@@ -2329,7 +2326,9 @@ void frmStatus::OnCommit(wxCommandEvent &event)
connection->GetUser(),
connection->GetPassword(),
connection->GetPort(),
- connection->GetSslMode());
+ connection->GetSslMode(),
+ 0,
+ connection->GetApplicationName());
if (tmpConn)
{
if (tmpConn->GetStatus() != PGCONN_OK)
@@ -2377,7 +2376,9 @@ void frmStatus::OnRollback(wxCommandEvent &event)
connection->GetUser(),
connection->GetPassword(),
connection->GetPort(),
- connection->GetSslMode());
+ connection->GetSslMode(),
+ 0,
+ connection->GetApplicationName());
if (tmpConn)
{
if (tmpConn->GetStatus() != PGCONN_OK)
@@ -2542,8 +2543,9 @@ wxWindow *serverStatusFactory::StartDialog(frmMain *form, pgObject *obj)
{
pgServer *server=obj->GetServer();
+ wxString applicationname = wxT("pgAdmin - Server Status");
- pgConn *conn = server->CreateConn();
+ pgConn *conn = server->CreateConn(wxEmptyString, 0, applicationname);
if (conn)
{
wxString txt = _("Server Status - ") + server->GetDescription()
diff --git a/pgadmin/include/db/pgConn.h b/pgadmin/include/db/pgConn.h
index 6d5261a..289bf72 100644
--- a/pgadmin/include/db/pgConn.h
+++ b/pgadmin/include/db/pgConn.h
@@ -81,7 +81,7 @@ typedef struct pgError {
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, OID oid=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, const wxString& applicationname = wxT("pgAdmin"));
~pgConn();
bool HasPrivilege(const wxString &objTyp, const wxString &objName, const wxString &priv);
@@ -114,6 +114,7 @@ public:
wxString GetHostName() const { return dbHostName; }
wxString GetHostAddress() const { return dbHostAddress; }
wxString GetDbname() const { return save_database; }
+ wxString GetApplicationName() const { return save_applicationname; }
wxString GetName() const;
bool GetNeedUtfConnectString() { return utfConnectString; }
int GetPort() const { return atoi(PQport(conn)); };
@@ -177,7 +178,7 @@ private:
wxString reservedNamespaces;
wxString connstr;
- wxString save_server, save_database, save_username, save_password;
+ wxString save_server, save_database, save_username, save_password, save_applicationname;
int save_port, save_sslmode;
OID save_oid;
};
diff --git a/pgadmin/include/debugger/dbgConnProp.h b/pgadmin/include/debugger/dbgConnProp.h
index e527ffc..dca36a0 100644
--- a/pgadmin/include/debugger/dbgConnProp.h
+++ b/pgadmin/include/debugger/dbgConnProp.h
@@ -32,6 +32,7 @@ public:
wxString m_port; // Port number
wxString m_debugPort; // Port number for debugger connection
int m_sslMode; // SSL Mode
+ wxString m_applicationName; // Application name, only on 8.5
};
#endif
diff --git a/pgadmin/include/debugger/dbgPgConn.h b/pgadmin/include/debugger/dbgPgConn.h
index a96c6d9..7ca3e13 100644
--- a/pgadmin/include/debugger/dbgPgConn.h
+++ b/pgadmin/include/debugger/dbgPgConn.h
@@ -57,7 +57,8 @@ class dbgPgConn
const wxString &username = wxT( "" ),
const wxString &password = wxT( "" ),
const wxString &port = wxT( "5432" ),
- int sslmode = 0 );
+ int sslmode = 0,
+ const wxString &applicationname = wxT( "" ));
dbgPgConn( frmDebugger *frame, const dbgConnProp & props, bool startThread = true );
@@ -83,7 +84,7 @@ class dbgPgConn
private:
- void Init( const wxString &server, const wxString &database, const wxString &userName, const wxString &password, const wxString &port, int sslmode, bool startThread );
+ void Init( const wxString &server, const wxString &database, const wxString &userName, const wxString &password, const wxString &port, int sslmode, const wxString &applicationname, bool startThread );
PGconn *m_pgConn; // libpq connection handler
dbgPgThread *m_workerThread; // Worker thread (this thread interacts with the server)
diff --git a/pgadmin/include/dlg/dlgSelectConnection.h b/pgadmin/include/dlg/dlgSelectConnection.h
index 41607c6..d1c3541 100644
--- a/pgadmin/include/dlg/dlgSelectConnection.h
+++ b/pgadmin/include/dlg/dlgSelectConnection.h
@@ -24,8 +24,8 @@ public:
~dlgSelectConnection();
wxString GetHelpPage() const;
pgServer *GetServer() { return remoteServer; }
- pgConn *CreateConn();
- pgConn *CreateConn(wxString& server, wxString& dbname, wxString& username, int port, int sslmode, bool writeMRU = false);
+ pgConn *CreateConn(wxString& applicationame);
+ pgConn *CreateConn(wxString& server, wxString& dbname, wxString& username, int port, int sslmode, wxString& applicationame, bool writeMRU = false);
wxString GetServerName();
wxString GetDatabase();
diff --git a/pgadmin/include/schema/pgDatabase.h b/pgadmin/include/schema/pgDatabase.h
index 1bfaf0d..440248c 100644
--- a/pgadmin/include/schema/pgDatabase.h
+++ b/pgadmin/include/schema/pgDatabase.h
@@ -51,7 +51,7 @@ public:
bool ExecuteVoid(const wxString& sql, bool reportError = true);
void UpdateDefaultSchema();
- pgConn *CreateConn() { return server->CreateConn(GetName(), GetOid()); }
+ pgConn *CreateConn(const wxString& applicationname) { return server->CreateConn(GetName(), GetOid(), applicationname); }
wxString GetPrettyOption() const { return prettyOption; }
diff --git a/pgadmin/include/schema/pgServer.h b/pgadmin/include/schema/pgServer.h
index 40f5ed7..2d59b5b 100644
--- a/pgadmin/include/schema/pgServer.h
+++ b/pgadmin/include/schema/pgServer.h
@@ -81,7 +81,7 @@ public:
bool GetCreateRole() const { return createRole; }
void iSetCreateRole(const bool b) { createRole=b; }
- pgConn *CreateConn(wxString dbName=wxEmptyString, OID oid=0);
+ pgConn *CreateConn(wxString dbName=wxEmptyString, OID oid=0, wxString applicationname=wxEmptyString);
wxString GetLastDatabase() const { return lastDatabase; }
void iSetLastDatabase(const wxString& s) { lastDatabase=s; }
diff --git a/pgadmin/pgAdmin3.cpp b/pgadmin/pgAdmin3.cpp
index 053ead4..0b49ba3 100644
--- a/pgadmin/pgAdmin3.cpp
+++ b/pgadmin/pgAdmin3.cpp
@@ -435,6 +435,7 @@ bool pgAdmin3::OnInit()
// -S specified, but not -s. Open the server status window but do *not* open the main window
pgConn *conn = NULL;
wxString connstr;
+ wxString applicationname = wxT("pgAdmin (Server Status)");
if (cmdParser.Found(wxT("S")))
{
@@ -447,7 +448,7 @@ bool pgAdmin3::OnInit()
int rc=dlg.Go(conn, NULL);
if (rc != wxID_OK)
return false;
- conn = dlg.CreateConn();
+ conn = dlg.CreateConn(applicationname);
}
else if (cmdParser.Found(wxT("Sc"), &connstr))
{
@@ -498,7 +499,7 @@ bool pgAdmin3::OnInit()
winSplash->Show(false);
dlgSelectConnection dlg(NULL, NULL);
dlg.CenterOnParent();
- conn = dlg.CreateConn(host, database, username, port, sslmode);
+ conn = dlg.CreateConn(host, database, username, port, sslmode, applicationname);
}
else
{
@@ -521,6 +522,7 @@ bool pgAdmin3::OnInit()
// -q specified, but not -s. Open a query tool but do *not* open the main window
pgConn *conn = NULL;
wxString connstr;
+ wxString applicationname = wxT("pgAdmin (Query Tool)");
#ifdef __WXMAC__
if (cmdParser.Found(wxT("q")) || !macFileToOpen.IsEmpty())
@@ -537,7 +539,7 @@ bool pgAdmin3::OnInit()
int rc=dlg.Go(conn, NULL);
if (rc != wxID_OK)
return false;
- conn = dlg.CreateConn();
+ conn = dlg.CreateConn(applicationname);
}
else if (cmdParser.Found(wxT("qc"), &connstr))
{
@@ -588,7 +590,7 @@ bool pgAdmin3::OnInit()
winSplash->Show(false);
dlgSelectConnection dlg(NULL, NULL);
dlg.CenterOnParent();
- conn = dlg.CreateConn(host, database, username, port, sslmode);
+ conn = dlg.CreateConn(host, database, username, port, sslmode, applicationname);
}
else
{
@@ -633,7 +635,8 @@ bool pgAdmin3::OnInit()
if (srv && cmdParser.Found(wxT("q")))
{
pgConn *conn;
- conn = srv->CreateConn();
+ wxString applicationname = wxT("pgAdmin - Query Tool");
+ conn = srv->CreateConn(applicationname);
if (conn)
{
wxString fn;
diff --git a/pgadmin/schema/pgDatabase.cpp b/pgadmin/schema/pgDatabase.cpp
index 2b401b3..8bf83a5 100644
--- a/pgadmin/schema/pgDatabase.cpp
+++ b/pgadmin/schema/pgDatabase.cpp
@@ -87,7 +87,8 @@ int pgDatabase::Connect()
else
{
useServerConnection = false;
- conn = CreateConn();
+ wxString applicationname = wxT("pgAdmin - Browser");
+ conn = CreateConn(applicationname);
if (!conn)
{
diff --git a/pgadmin/schema/pgRole.cpp b/pgadmin/schema/pgRole.cpp
index e8868d9..91a7e85 100644
--- a/pgadmin/schema/pgRole.cpp
+++ b/pgadmin/schema/pgRole.cpp
@@ -301,7 +301,9 @@ void pgRole::ReassignDropOwnedTo(frmMain *form)
GetConnection()->GetUser(),
GetConnection()->GetPassword(),
GetConnection()->GetPort(),
- GetConnection()->GetSslMode());
+ GetConnection()->GetSslMode(),
+ 0,
+ GetConnection()->GetApplicationName());
if (conn->GetStatus() == PGCONN_OK)
{
diff --git a/pgadmin/schema/pgServer.cpp b/pgadmin/schema/pgServer.cpp
index 92d9435..224ea39 100644
--- a/pgadmin/schema/pgServer.cpp
+++ b/pgadmin/schema/pgServer.cpp
@@ -127,7 +127,7 @@ pgServer *pgServer::GetServer() const
}
-pgConn *pgServer::CreateConn(wxString dbName, OID oid)
+pgConn *pgServer::CreateConn(wxString dbName, OID oid, wxString applicationname)
{
if (!connected)
return 0;
@@ -137,7 +137,7 @@ pgConn *pgServer::CreateConn(wxString dbName, OID oid)
dbName = GetDatabaseName();
oid = dbOid;
}
- pgConn *conn=new pgConn(GetName(), dbName, username, password, port, ssl, oid);
+ pgConn *conn=new pgConn(GetName(), dbName, username, password, port, ssl, oid, applicationname);
if (conn && conn->GetStatus() != PGCONN_OK)
{
@@ -614,21 +614,21 @@ int pgServer::Connect(frmMain *form, bool askPassword, const wxString &pwd, bool
if (database.IsEmpty())
{
- conn = new pgConn(GetName(), DEFAULT_PG_DATABASE, username, password, port, ssl);
+ conn = new pgConn(GetName(), DEFAULT_PG_DATABASE, username, password, port, ssl, 0, wxT("pgAdmin - Browser"));
if (conn->GetStatus() == PGCONN_OK)
database=DEFAULT_PG_DATABASE;
else if (conn->GetStatus() == PGCONN_BAD && conn->GetLastError().Find(
wxT("database \"") DEFAULT_PG_DATABASE wxT("\" does not exist")) >= 0)
{
delete conn;
- conn = new pgConn(GetName(), wxT("template1"), username, password, port, ssl);
+ conn = new pgConn(GetName(), wxT("template1"), username, password, port, ssl, 0, wxT("pgAdmin - Browser"));
if (conn && conn->GetStatus() == PGCONN_OK)
database=wxT("template1");
}
}
else
{
- conn = new pgConn(GetName(), database, username, password, port, ssl);
+ conn = new pgConn(GetName(), database, username, password, port, ssl, 0, wxT("pgAdmin - Browser"));
if (!conn)
{
form->EndMsg(false);
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers