sqf-> SELECT sr.project,
sqf->     sr.sqf_id,
sqf->     wa.wa_path,
sqf->     sr.cbwa_type,
sqf->     sr.status,
sqf->     sr.nightly_rg_cl,
sqf->     ( SELECT max(fse.end_datetime) AS max
sqf(>            FROM public.flow_step_events fse
sqf(>           WHERE fse.sqf_id = sr.sqf_id) AS last_sqf_step_end,
sqf->     ( SELECT DISTINCT f.perl_sub_name
sqf(>            FROM public.flows f,
sqf(>             public.flow_step_events fse
sqf(>           WHERE f.flow_type = fse.flow_type AND fse.sqf_id =
sr.sqf_id AND f.step_number = (( SELECT max(fse2.step_number) AS max
sqf(>                    FROM public.flow_step_events fse2
sqf(>                   WHERE fse2.sqf_id = sr.sqf_id))) AS last_step_run
sqf->    FROM public.sqf_runs sr,
sqf->     public.workareas wa
sqf->   WHERE wa.current_user_sqf_id = sr.sqf_id
sqf->   ORDER BY sr.project, wa.wa_path, (( SELECT max(fse.end_datetime) AS
max
sqf(>            FROM public.flow_step_events fse
sqf(>           WHERE fse.sqf_id = sr.sqf_id));
CREATE VIEW

sqf=> \d+ current_workarea_users;
                       View "public.current_workarea_users"
      Column       |           Type           | Modifiers | Storage  |
Description
-------------------+--------------------------+-----------+----------+-------------
 project           | text                     |           | extended |
 sqf_id            | text                     |           | extended |
 wa_path           | text                     |           | extended |
 cbwa_type         | text                     |           | extended |
 status            | text                     |           | extended |
 nightly_rg_cl     | integer                  |           | plain    |
 last_sqf_step_end | timestamp with time zone |           | plain    |
 last_step_run     | text                     |           | extended |
View definition:
 SELECT sr.project,
    sr.sqf_id,
    wa.wa_path,
    sr.cbwa_type,
    sr.status,
    sr.nightly_rg_cl,
    ( SELECT max(fse.end_datetime) AS max
           FROM flow_step_events fse
          WHERE fse.sqf_id = sr.sqf_id) AS last_sqf_step_end,
    ( SELECT DISTINCT f.perl_sub_name
           FROM flows f,
            flow_step_events fse
          WHERE f.flow_type = fse.flow_type AND fse.sqf_id = sr.sqf_id AND
f.step_number = (( SELECT max(fse2.step_number) AS max
                   FROM flow_step_events fse2
                  WHERE fse2.sqf_id = sr.sqf_id))) AS last_step_run
   FROM sqf_runs sr,
    workareas wa
  WHERE wa.current_user_sqf_id = sr.sqf_id
  ORDER BY sr.project, wa.wa_path, (( SELECT max(fse.end_datetime) AS max
           FROM flow_step_events fse
          WHERE fse.sqf_id = sr.sqf_id));

sqf=>


You can see the "public." refs in the create view, but not echoed in the
stored view def.

On Thu, Mar 26, 2020 at 1:58 PM Adrian Klaver <adrian.kla...@aklaver.com>
wrote:

> On 3/26/20 10:55 AM, David Gauthier wrote:
> > Thanks Adrian for the quick reply.
> > I don't have a lot of choice regarding PG version.  I work for a large
> > corp with an IT dept which offers the version I have.  They create VMs
> > which are DB servers and this is the best they offer.  But I could
> > request something newer.  Never hurts to try.
> >
> > Ya, I kinda figured that there's nothing wrong with referencing tables
> > from the default (public) schema.  So I tried to redefine the view by
> > referencing the public tables literally, as in "public.thetable".  The
> > plan was to do some sort of global replace of "public." with "myschem."
> > in the output of pg_dump, maybe with sed or something.  But even after
> > explicitly using "public.", it didn't stick in the view def.
>
> Can we see an example view definition?
>
> >
> > On Thu, Mar 26, 2020 at 1:34 PM Adrian Klaver <adrian.kla...@aklaver.com
> > <mailto:adrian.kla...@aklaver.com>> wrote:
> >
> >     On 3/26/20 10:16 AM, David Gauthier wrote:
> >      > Here's an interesting one for you...
> >      > psql (9.6.7, server 11.3) on linux
> >      >
> >      > I have 2 DBs, differnet servers/instances.  I want to take all the
> >      > metadata and data for a set of tables/views in the public schema
> >     of one
> >      > DB and move it all over to be inside a schema of a second
> >     DB/instance.
> >
> >
> >     Well first, the current minor version of 9.6 is .17 so you are 10
> >     releases behind. In fact the 9.6.8 release includes changes that
> impact
> >     the below:
> >     https://www.postgresql.org/docs/9.6/release-9-6-8.html
> >
> >      >
> >      > I'm using pg_dump to create the script and I believe I can insert
> >     a "set
> >      > search_path=myschem" in the output of pg_dump such that when it
> >     runs,
> >      > the "CREATE TABLE", "CREATE VIEW", "GRANT...", etc.... commands,
> >     will
> >      > all go into the new schema (which I have prepared).  Problem is
> >     the view
> >      > defs.
> >      > The view defs do not prefix the referenced tables with
> >     "myschem.", so
> >      > the CREATE VIEW xyx commands fail.
> >      >
> >      > Is there a way to do this ?
> >
> >     By manually changing the definition? It is not an error for a VIEW in
> >     one schema to refer to tables in other schemas. AFAIK the code has no
> >     way of knowing you want to move the underlying tables just by
> >     specifying
> >     a search_path.
> >
> >      >
> >      > Thanks in Advance.
> >
> >
> >     --
> >     Adrian Klaver
> >     adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>
> >
>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>

Reply via email to