From: | Guillaume Lelarge <guillaume(at)lelarge(dot)info> |
---|---|
To: | Dave Page <dpage(at)postgresql(dot)org> |
Cc: | pgadmin-hackers(at)postgresql(dot)org |
Subject: | Re: "set schema" patch |
Date: | 2007-12-30 21:12:21 |
Message-ID: | 477809B5.80500@lelarge.info |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Page | 2007-12-30 21:29:18 | Re: Schema and tablespace |
Previous Message | Guillaume Lelarge | 2007-12-30 20:57:35 | Re: Schema and tablespace |