Tom, David, Thank you for the time and information.
I lost my system this morning, so I need to re-establish a system and do some additional homework. Thanks again. -Tim BTW: here is the definition of the pworkspaceobject table. tc=# \d+ pworkspaceobject Table "public.pworkspaceobject" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description -----------------------------+-----------------------------+-----------+----------+---------+----------+--------------+------------- puid | character varying(15) | | not null | | extended | | pobject_name | character varying(128) | | not null | | extended | | pobject_desc | character varying(240) | | | | extended | | pobject_type | character varying(32) | | not null | | extended | | pobject_application | character varying(32) | | not null | | extended | | vla_764_7 | integer | | not null | 0 | plain | | pip_classification | character varying(128) | | | | extended | | vla_764_10 | integer | | not null | 0 | plain | | pgov_classification | character varying(128) | | | | extended | | vla_764_12 | integer | | not null | 0 | plain | | pfnd0revisionid | character varying(32) | | | | extended | | vla_764_18 | integer | | not null | 0 | plain | | vla_764_20 | integer | | not null | 0 | plain | | rwso_threadu | character varying(15) | | | | extended | | rwso_threadc | integer | | | | plain | | prevision_limit | integer | | not null | | plain | | prevision_number | integer | | not null | | plain | | rowning_organizationu | character varying(15) | | | | extended | | rowning_organizationc | integer | | | | plain | | pactive_seq | integer | | | | plain | | rowning_projectu | character varying(15) | | | | extended | | rowning_projectc | integer | | | | plain | | pfnd0maturity | integer | | | | plain | | pdate_released | timestamp without time zone | | | | plain | | pfnd0isrevisiondiscontinued | smallint | | | | plain | | pfnd0inprocess | smallint | | | | plain | | aoid | character varying(15) | | not null | NULL::character varying | extended | | arev_category | integer | | not null | 48 | plain | | aspace_uid | character varying(15) | | | NULL::character varying | extended | | avalid_from | timestamp without time zone | | not null | to_timestamp('1900/01/02 00:00:00'::text, 'YYYY/MM/DD HH24:MI:SS'::text)::timestamp without time zone | plain | | avalid_to | timestamp without time zone | | | | plain | | vla_764_26 | integer | | not null | 0 | plain | | pawp0issuspect | smallint | | | | plain | | vla_764_24 | integer | | not null | 0 | plain | | vla_764_23 | integer | | not null | 0 | plain | | Indexes: "pipworkspaceobject" PRIMARY KEY, btree (puid) "pipworkspaceobject_0" btree (aoid) "pipworkspaceobject_1" btree (upper(pobject_type::text)) "pipworkspaceobject_2" btree (upper(pobject_name::text)) "pipworkspaceobject_3" btree (pobject_type) "pipworkspaceobject_4" btree (pobject_name) "pipworkspaceobject_5" btree (rwso_threadu) "pipworkspaceobject_6" btree (rowning_projectu) Access method: heap Options: autovacuum_analyze_scale_factor=0.0, autovacuum_analyze_threshold=500 On Thu, Oct 28, 2021 at 1:15 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > Tim Slechta <trslec...@gmail.com> writes: > > Why does the planner not use an index when a view is involved? > > It's not about a "view" ... you'd get the same results if you wrote > out the UNION ALL construct in-line as a sub-select. > > I think you may be shooting yourself in the foot by not making sure that > the UNION ALL arms match in data type. You did not show us the definition > of pworkspaceobject, but if pworkspaceobject.pobject_name isn't of type > text (maybe it's varchar?) then the type mismatch would prevent pushing > down a condition on that column. The source code says: > > * For subqueries using UNION/UNION ALL/INTERSECT/INTERSECT ALL, we can > * push quals into each component query, but the quals can only reference > * subquery columns that suffer no type coercions in the set operation. > * Otherwise there are possible semantic gotchas. > > I'm too tired to reconstruct an example of the semantic issues... > > regards, tom lane >