Re: "set schema" patch - Mailing list pgadmin-hackers

From Guillaume Lelarge
Subject Re: "set schema" patch
Date
Msg-id 477809B5.80500@lelarge.info
Whole thread Raw
In response to Re: "set schema" patch  (Dave Page <dpage@postgresql.org>)
Responses Re: "set schema" patch  ("Dave Page" <dpage@postgresql.org>)
List pgadmin-hackers
Hi,

Dave Page wrote:
> Apologies, but I'm *really* busy right now (with upcoming pgAdmin,
> PostgreSQL and EnterpriseDB releases) so haven't yet had a chance to
> properly review your patches. I'll answer what I can for now - it I
> haven't reviewed within a week or so of the pgAdmin release, please feel
> free to give me a verbal kick.
>

I completely understand. I was more thinking this was a holidays season,
so I'm not waiting for a fast answer :)

So, no problem at all.

> Guillaume Lelarge wrote:
>> Hi,
>>
>> This patch adds a schema combobox on some objets' dialog : aggregate,
>> conversion, domain, function, sequence, table, type, view. There are two
>> EDB objects that probably need it too : package and synonym. Dave, can
>> you tell me if they are dependants on schema ? and do they use the same
>> SQL statement to alter their schema ? thanks.
>
> Public Synonyms live at the same logical level as Schemas, so they re
> unaffected by this patch.
>

OK.

> Packages are modified using CREATE OR REPLACE, which of course won't
> allow you to change the schema in itself, but you could create the new
> package in the new schema, and then drop the old. The problem with that
>  (and changing the schema of other objects) is figuring out what nodes
> to refresh.
>

Yes, that's a big problem.

>> The patch attached is not finished. I have one big issue with it. It
>> seems I can't alter the schema of a function. The call to ShowObject()
>> in dlgProperty::apply() fails. It seems this statement
>>   pgObject *newData=data->Refresh(mainForm->GetBrowser(), item);
>> crashes pgAdmin (core dump), but I have no clue to explain this. It
>> don't even know why it crashes with functions, but works with the other
>> objects.
>>
>> If I can find a solution to this issue, it'll probably solve this second
>> (and last) issue. I've put some of my code in comments in OnOK()
>> function. I wrote this code to refresh the "Schemas" node. It seemed to
>> work fine Thursday morning, but didn't want to work since. Is there
>> something wrong with my way to refresh the "Schemas" node? Is there
>> another way ?
>
> Refreshing is a real pita - the Refresh function in the pgObject and
> derived classes was originally designed to do exactly that, but these
> days has subtly changed such that it no longer works as you need (and
> how even I expect in most cases).
>
> We should really add a sure-fire way to refresh the tree as you expect
> in SVN-Trunk (or figure out what the heck Refresh() really does these
> days). Recently though, I used code like this to refresh the Functions
> collection node in the case that the debugger finds a function no longer
> exists:
>
> ctlTree *browser = form->GetBrowser();
> wxTreeItemId item=browser->GetSelection();
> if (obj == browser->GetObject(item))
> {
>     pgCollection *coll=browser->GetParentCollection(obj->GetId());
>     browser->DeleteChildren(coll->GetId());
>     coll->ShowTreeDetail(browser);
> }
>

OK, I'll try to have a better understanding of the Refresh function.
I'll look at this in the next few days.

Thanks.


--
Guillaume.
 http://www.postgresqlfr.org
 http://dalibo.com

pgadmin-hackers by date:

Previous
From: Guillaume Lelarge
Date:
Subject: Re: Schema and tablespace
Next
From: Dave Page
Date:
Subject: Re: Schema and tablespace