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
,因为您的函数中也没有控制流语句)以目前的形式来看,这是很难理解的。