mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Fix previous commit's test, for non-UTF8 databases with non-XML builds.
To ensure stable output, catch one more configuration-specific error. Back-patch to 9.3, like the commit that added the test.
This commit is contained in:
		@@ -660,11 +660,12 @@ DECLARE
 | 
			
		||||
  degree_symbol text;
 | 
			
		||||
  res xml[];
 | 
			
		||||
BEGIN
 | 
			
		||||
  -- Per the documentation, xpath() doesn't work on non-ASCII data when
 | 
			
		||||
  -- the server encoding is not UTF8.  The EXCEPTION block below,
 | 
			
		||||
  -- currently dead code, will be relevant if we remove this limitation.
 | 
			
		||||
  -- Per the documentation, except when the server encoding is UTF8, xpath()
 | 
			
		||||
  -- may not work on non-ASCII data.  The untranslatable_character and
 | 
			
		||||
  -- undefined_function traps below, currently dead code, will become relevant
 | 
			
		||||
  -- if we remove this limitation.
 | 
			
		||||
  IF current_setting('server_encoding') <> 'UTF8' THEN
 | 
			
		||||
    RAISE LOG 'skip: encoding % unsupported for xml',
 | 
			
		||||
    RAISE LOG 'skip: encoding % unsupported for xpath',
 | 
			
		||||
      current_setting('server_encoding');
 | 
			
		||||
    RETURN;
 | 
			
		||||
  END IF;
 | 
			
		||||
@@ -679,9 +680,12 @@ BEGIN
 | 
			
		||||
  END IF;
 | 
			
		||||
EXCEPTION
 | 
			
		||||
  -- character with byte sequence 0xc2 0xb0 in encoding "UTF8" has no equivalent in encoding "LATIN8"
 | 
			
		||||
  WHEN untranslatable_character THEN RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
  WHEN untranslatable_character
 | 
			
		||||
  -- default conversion function for encoding "UTF8" to "MULE_INTERNAL" does not exist
 | 
			
		||||
  WHEN undefined_function THEN RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
  OR undefined_function
 | 
			
		||||
  -- unsupported XML feature
 | 
			
		||||
  OR feature_not_supported THEN
 | 
			
		||||
    RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
END
 | 
			
		||||
$$;
 | 
			
		||||
-- Test xmlexists and xpath_exists
 | 
			
		||||
 
 | 
			
		||||
@@ -571,11 +571,12 @@ DECLARE
 | 
			
		||||
  degree_symbol text;
 | 
			
		||||
  res xml[];
 | 
			
		||||
BEGIN
 | 
			
		||||
  -- Per the documentation, xpath() doesn't work on non-ASCII data when
 | 
			
		||||
  -- the server encoding is not UTF8.  The EXCEPTION block below,
 | 
			
		||||
  -- currently dead code, will be relevant if we remove this limitation.
 | 
			
		||||
  -- Per the documentation, except when the server encoding is UTF8, xpath()
 | 
			
		||||
  -- may not work on non-ASCII data.  The untranslatable_character and
 | 
			
		||||
  -- undefined_function traps below, currently dead code, will become relevant
 | 
			
		||||
  -- if we remove this limitation.
 | 
			
		||||
  IF current_setting('server_encoding') <> 'UTF8' THEN
 | 
			
		||||
    RAISE LOG 'skip: encoding % unsupported for xml',
 | 
			
		||||
    RAISE LOG 'skip: encoding % unsupported for xpath',
 | 
			
		||||
      current_setting('server_encoding');
 | 
			
		||||
    RETURN;
 | 
			
		||||
  END IF;
 | 
			
		||||
@@ -590,15 +591,14 @@ BEGIN
 | 
			
		||||
  END IF;
 | 
			
		||||
EXCEPTION
 | 
			
		||||
  -- character with byte sequence 0xc2 0xb0 in encoding "UTF8" has no equivalent in encoding "LATIN8"
 | 
			
		||||
  WHEN untranslatable_character THEN RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
  WHEN untranslatable_character
 | 
			
		||||
  -- default conversion function for encoding "UTF8" to "MULE_INTERNAL" does not exist
 | 
			
		||||
  WHEN undefined_function THEN RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
  OR undefined_function
 | 
			
		||||
  -- unsupported XML feature
 | 
			
		||||
  OR feature_not_supported THEN
 | 
			
		||||
    RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
END
 | 
			
		||||
$$;
 | 
			
		||||
ERROR:  unsupported XML feature
 | 
			
		||||
DETAIL:  This functionality requires the server to be built with libxml support.
 | 
			
		||||
HINT:  You need to rebuild PostgreSQL using --with-libxml.
 | 
			
		||||
CONTEXT:  PL/pgSQL function inline_code_block line 17 at assignment
 | 
			
		||||
-- Test xmlexists and xpath_exists
 | 
			
		||||
SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF '<towns><town>Bidford-on-Avon</town><town>Cwmbran</town><town>Bristol</town></towns>');
 | 
			
		||||
ERROR:  unsupported XML feature
 | 
			
		||||
 
 | 
			
		||||
@@ -642,11 +642,12 @@ DECLARE
 | 
			
		||||
  degree_symbol text;
 | 
			
		||||
  res xml[];
 | 
			
		||||
BEGIN
 | 
			
		||||
  -- Per the documentation, xpath() doesn't work on non-ASCII data when
 | 
			
		||||
  -- the server encoding is not UTF8.  The EXCEPTION block below,
 | 
			
		||||
  -- currently dead code, will be relevant if we remove this limitation.
 | 
			
		||||
  -- Per the documentation, except when the server encoding is UTF8, xpath()
 | 
			
		||||
  -- may not work on non-ASCII data.  The untranslatable_character and
 | 
			
		||||
  -- undefined_function traps below, currently dead code, will become relevant
 | 
			
		||||
  -- if we remove this limitation.
 | 
			
		||||
  IF current_setting('server_encoding') <> 'UTF8' THEN
 | 
			
		||||
    RAISE LOG 'skip: encoding % unsupported for xml',
 | 
			
		||||
    RAISE LOG 'skip: encoding % unsupported for xpath',
 | 
			
		||||
      current_setting('server_encoding');
 | 
			
		||||
    RETURN;
 | 
			
		||||
  END IF;
 | 
			
		||||
@@ -661,9 +662,12 @@ BEGIN
 | 
			
		||||
  END IF;
 | 
			
		||||
EXCEPTION
 | 
			
		||||
  -- character with byte sequence 0xc2 0xb0 in encoding "UTF8" has no equivalent in encoding "LATIN8"
 | 
			
		||||
  WHEN untranslatable_character THEN RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
  WHEN untranslatable_character
 | 
			
		||||
  -- default conversion function for encoding "UTF8" to "MULE_INTERNAL" does not exist
 | 
			
		||||
  WHEN undefined_function THEN RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
  OR undefined_function
 | 
			
		||||
  -- unsupported XML feature
 | 
			
		||||
  OR feature_not_supported THEN
 | 
			
		||||
    RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
END
 | 
			
		||||
$$;
 | 
			
		||||
-- Test xmlexists and xpath_exists
 | 
			
		||||
 
 | 
			
		||||
@@ -193,11 +193,12 @@ DECLARE
 | 
			
		||||
  degree_symbol text;
 | 
			
		||||
  res xml[];
 | 
			
		||||
BEGIN
 | 
			
		||||
  -- Per the documentation, xpath() doesn't work on non-ASCII data when
 | 
			
		||||
  -- the server encoding is not UTF8.  The EXCEPTION block below,
 | 
			
		||||
  -- currently dead code, will be relevant if we remove this limitation.
 | 
			
		||||
  -- Per the documentation, except when the server encoding is UTF8, xpath()
 | 
			
		||||
  -- may not work on non-ASCII data.  The untranslatable_character and
 | 
			
		||||
  -- undefined_function traps below, currently dead code, will become relevant
 | 
			
		||||
  -- if we remove this limitation.
 | 
			
		||||
  IF current_setting('server_encoding') <> 'UTF8' THEN
 | 
			
		||||
    RAISE LOG 'skip: encoding % unsupported for xml',
 | 
			
		||||
    RAISE LOG 'skip: encoding % unsupported for xpath',
 | 
			
		||||
      current_setting('server_encoding');
 | 
			
		||||
    RETURN;
 | 
			
		||||
  END IF;
 | 
			
		||||
@@ -212,9 +213,12 @@ BEGIN
 | 
			
		||||
  END IF;
 | 
			
		||||
EXCEPTION
 | 
			
		||||
  -- character with byte sequence 0xc2 0xb0 in encoding "UTF8" has no equivalent in encoding "LATIN8"
 | 
			
		||||
  WHEN untranslatable_character THEN RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
  WHEN untranslatable_character
 | 
			
		||||
  -- default conversion function for encoding "UTF8" to "MULE_INTERNAL" does not exist
 | 
			
		||||
  WHEN undefined_function THEN RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
  OR undefined_function
 | 
			
		||||
  -- unsupported XML feature
 | 
			
		||||
  OR feature_not_supported THEN
 | 
			
		||||
    RAISE LOG 'skip: %', SQLERRM;
 | 
			
		||||
END
 | 
			
		||||
$$;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user