Postgresql函数gserialized_gist_joinsel:不支持jointype 1错误

Postgresql函数gserialized_gist_joinsel:不支持jointype 1错误,postgresql,Postgresql,我创建了一个函数。函数已成功创建。当我执行查询时,我得到一个错误。我还想将结果插入一个变量。我怎样才能解决这个问题 错误是 NOTICE: gserialized_gist_joinsel: jointype 1 not supported CONTEXT: SQL statement "select translate(replace((select array (( select '((select ''25'' as puan , ''

我创建了一个函数。函数已成功创建。当我执行查询时,我得到一个错误。我还想将结果插入一个变量。我怎样才能解决这个问题

错误是

NOTICE:  gserialized_gist_joinsel: jointype 1 not supported
CONTEXT:  SQL statement "select translate(replace((select array 
            ((
            select '((select ''25'' as puan , ''-1'' as mahalle, ''-1'' as sokak,'''|| ilce || '''::character varying(100)   as ilce, ''' || mesafe ||''' as mesafe,left(full_page_text,350) as full_page_text,datetime,pageurl,25 as puan from veriahtapotu.vap_scr_haber where full_text @@ to_tsquery(''simple'','''|| left(replace(replace(ilce,'ğ','g'),' ',''),10)  || ':*'')  ) limit 10 ) ' as query  from 
            ( select translate(lower(il_adi),'çğıöüş','cgious') as il ,translate(lower(ilce_adi),'çğıöüş','cgious') as ilce ,st_distance(st_transform(st_setsrid(st_point(28.9771378040314, 41.0069088335407 ), 4326), 500000),st_centroid(ilce_geom))::int as mesafe from grid.grid_tr_idari_il_ilce_mahkoy t1
            where st_intersects(st_transform(st_setsrid(st_point(28.9771378040314, 41.0069088335407 ), 4326), 500000),ilce_geom) group by il_adi,ilce_adi,ilce_geom) t1) union all 
            (select '((select ''50'' as puan ,''-1'' as mahalle, '''|| ilce || '''::character varying(100)   as ilce, '''|| mahkoy || '''::character varying(100)   as mahalle,''' || mesafe ||''' as mesafe,left(full_page_text,350) as full_page_text,datetime,pageurl,50 as puan from veriahtapotu.vap_scr_haber where full_text @@ to_tsquery(''simple'','''|| left(replace(replace(ilce,'ğ','g'),' ',''),10)  || ':*&' || left(replace(mahkoy,' ',''),10) || ':*'')  ) limit 10 ) ' as query from
            ( select translate(lower(il_adi),'çğıöüş','cgious') as il ,translate(lower(ilce_adi),'çğıöüş','cgious') as ilce,translate(lower(mahkoy_adi),'çğıöüş','cgious')  as mahkoy ,st_distance(st_transform(st_setsrid(st_point(28.9771378040314, 41.0069088335407 ), 4326), 500000),st_centroid(mahkoy_geom))::int as mesafe from grid.grid_tr_idari_il_ilce_mahkoy t1
            where st_intersects(st_transform(st_setsrid(st_point(28.9771378040314, 41.0069088335407 ), 4326), 500000),mahkoy_geom)) t1)  union all 
            (select * from (
            select '((select  ''100'' as puan ,'''|| ilce || '''::character varying(100)   as ilce, '''|| mahkoy || '''::character varying(100)   as mahalle,'''|| sokak_full || '''::character varying(100)   as sokak, ''' || mesafe ||''' as mesafe,left(full_page_text,350) as full_page_text,datetime,pageurl,100 as puan from veriahtapotu.vap_scr_haber where full_text @@ to_tsquery(''simple'','''|| left(replace(replace(ilce,'ğ','g'),' ',''),10)  || ':*&' || left(replace(mahkoy,' ',''),10) || ':*&'|| left(replace(sokak,' ',''),10)  ||':*'')  ) limit 10 ) 'as query  from(
            select translate(lower(il_adi),'çğıöüş','cgious') as il ,translate(lower(ilce_adi),'çğıöüş','cgious') as ilce ,translate(lower(mahkoy_adi),'çğıöüş','cgious')  as mahkoy ,sokak ,sokak_full,postcode,mesafe from (
            select * from (
            select distinct on(sokak) * from (
            SELECT lower(st_nm_base) as sokak , lower(st_name) as sokak_full , st_distance(st_transform(st_setsrid(st_point(28.9771378040314, 41.0069088335407 ), 4326), 500000),geom_2)::int as mesafe,st_centroid(geom_2),l_postcode as postcode
              FROM (select * from poi.streets_34 ) t1
              where st_intersects(st_buffer(st_transform(st_setsrid(st_point(28.9771378040314, 41.0069088335407 ), 4326), 500000),100),geom_2)
              ) t1 ) t1 order by mesafe asc ) t1  
              left join (select il_adi,ilce_adi,mahkoy_adi,il_id,ilce_id,mahkoy_id,mahkoy_geom from  grid.grid_tr_idari_il_ilce_mahkoy ) t2  on st_intersects(t1.st_centroid,t2.mahkoy_geom))t1  where char_length(sokak)>1) t1))
              ::Text ),'","','union all'),'"{}','   ') "
PL/pgSQL function developer.sil(double precision,double precision) line 3 at EXECUTE statement


ERROR:  control reached end of function without RETURN
CONTEXT:  PL/pgSQL function developer.sil(double precision,double precision)
这是函数定义:

CREATE OR REPLACE FUNCTION developer.sil(
    IN lat double precision,
    IN lng double precision)
  RETURNS character varying AS
$BODY$
    BEGIN
        EXECUTE format(
              'select translate(replace((select array 
            ((
            select ''((select ''''25'''' as puan , ''''-1'''' as mahalle, ''''-1'''' as sokak,''''''|| ilce || ''''''::character varying(100)   as ilce, '''''' || mesafe ||'''''' as mesafe,left(full_page_text,350) as full_page_text,datetime,pageurl,25 as puan from veriahtapotu.vap_scr_haber where full_text @@ to_tsquery(''''simple'''',''''''|| left(replace(replace(ilce,''ğ'',''g''),'' '',''''),10)  || '':*'''')  ) limit 10 ) '' as query  from 
            ( select translate(lower(il_adi),''çğıöüş'',''cgious'') as il ,translate(lower(ilce_adi),''çğıöüş'',''cgious'') as ilce ,st_distance(st_transform(st_setsrid(st_point(%s, %s ), 4326), 500000),st_centroid(ilce_geom))::int as mesafe from grid.grid_tr_idari_il_ilce_mahkoy t1
            where st_intersects(st_transform(st_setsrid(st_point(%s, %s ), 4326), 500000),ilce_geom) group by il_adi,ilce_adi,ilce_geom) t1) union all 
            (select ''((select ''''50'''' as puan ,''''-1'''' as mahalle, ''''''|| ilce || ''''''::character varying(100)   as ilce, ''''''|| mahkoy || ''''''::character varying(100)   as mahalle,'''''' || mesafe ||'''''' as mesafe,left(full_page_text,350) as full_page_text,datetime,pageurl,50 as puan from veriahtapotu.vap_scr_haber where full_text @@ to_tsquery(''''simple'''',''''''|| left(replace(replace(ilce,''ğ'',''g''),'' '',''''),10)  || '':*&'' || left(replace(mahkoy,'' '',''''),10) || '':*'''')  ) limit 10 ) '' as query from
            ( select translate(lower(il_adi),''çğıöüş'',''cgious'') as il ,translate(lower(ilce_adi),''çğıöüş'',''cgious'') as ilce,translate(lower(mahkoy_adi),''çğıöüş'',''cgious'')  as mahkoy ,st_distance(st_transform(st_setsrid(st_point(%s, %s ), 4326), 500000),st_centroid(mahkoy_geom))::int as mesafe from grid.grid_tr_idari_il_ilce_mahkoy t1
            where st_intersects(st_transform(st_setsrid(st_point(%s, %s ), 4326), 500000),mahkoy_geom)) t1)  union all 
            (select * from (
            select ''((select  ''''100'''' as puan ,''''''|| ilce || ''''''::character varying(100)   as ilce, ''''''|| mahkoy || ''''''::character varying(100)   as mahalle,''''''|| sokak_full || ''''''::character varying(100)   as sokak, '''''' || mesafe ||'''''' as mesafe,left(full_page_text,350) as full_page_text,datetime,pageurl,100 as puan from veriahtapotu.vap_scr_haber where full_text @@ to_tsquery(''''simple'''',''''''|| left(replace(replace(ilce,''ğ'',''g''),'' '',''''),10)  || '':*&'' || left(replace(mahkoy,'' '',''''),10) || '':*&''|| left(replace(sokak,'' '',''''),10)  ||'':*'''')  ) limit 10 ) ''as query  from(
            select translate(lower(il_adi),''çğıöüş'',''cgious'') as il ,translate(lower(ilce_adi),''çğıöüş'',''cgious'') as ilce ,translate(lower(mahkoy_adi),''çğıöüş'',''cgious'')  as mahkoy ,sokak ,sokak_full,postcode,mesafe from (
            select * from (
            select distinct on(sokak) * from (
            SELECT lower(st_nm_base) as sokak , lower(st_name) as sokak_full , st_distance(st_transform(st_setsrid(st_point(%s, %s ), 4326), 500000),geom_2)::int as mesafe,st_centroid(geom_2),l_postcode as postcode
              FROM (select * from poi.streets_34 ) t1
              where st_intersects(st_buffer(st_transform(st_setsrid(st_point(%s, %s ), 4326), 500000),100),geom_2)
              ) t1 ) t1 order by mesafe asc ) t1  
              left join (select il_adi,ilce_adi,mahkoy_adi,il_id,ilce_id,mahkoy_id,mahkoy_geom from  grid.grid_tr_idari_il_ilce_mahkoy ) t2  on st_intersects(t1.st_centroid,t2.mahkoy_geom))t1  where char_length(sokak)>1) t1))
              ::Text ),''","'',''union all''),''"{}'',''   '') '
        ,sil.lng, sil.lat, sil.lng, sil.lat, sil.lng, sil.lat, sil.lng, sil.lat, sil.lng, sil.lat, sil.lng, sil.lat);
    END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100

查看代码,很明显错误是关于
左连接的。但我不能说得更多。旁注(而是问题):为什么要使用
EXECUTE
?您可以在
plpgsql
上下文中使用参数(甚至可以是
语言SQL
,因为您的函数中也没有控制流语句)以目前的形式来看,这是很难理解的。