mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	This provides a mechanism for specifying conversions between SQL data types and procedural languages. As examples, there are transforms for hstore and ltree for PL/Perl and PL/Python. reviews by Pavel Stěhule and Andres Freund
		
			
				
	
	
		
			46 lines
		
	
	
		
			977 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			977 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| CREATE EXTENSION plpython2u;
 | |
| CREATE EXTENSION ltree_plpython2u;
 | |
| CREATE FUNCTION test1(val ltree) RETURNS int
 | |
| LANGUAGE plpythonu
 | |
| TRANSFORM FOR TYPE ltree
 | |
| AS $$
 | |
| plpy.info(repr(val))
 | |
| return len(val)
 | |
| $$;
 | |
| SELECT test1('aa.bb.cc'::ltree);
 | |
| INFO:  ['aa', 'bb', 'cc']
 | |
| CONTEXT:  PL/Python function "test1"
 | |
|  test1 
 | |
| -------
 | |
|      3
 | |
| (1 row)
 | |
| 
 | |
| CREATE FUNCTION test1n(val ltree) RETURNS int
 | |
| LANGUAGE plpython2u
 | |
| TRANSFORM FOR TYPE ltree
 | |
| AS $$
 | |
| plpy.info(repr(val))
 | |
| return len(val)
 | |
| $$;
 | |
| SELECT test1n('aa.bb.cc'::ltree);
 | |
| INFO:  ['aa', 'bb', 'cc']
 | |
| CONTEXT:  PL/Python function "test1n"
 | |
|  test1n 
 | |
| --------
 | |
|       3
 | |
| (1 row)
 | |
| 
 | |
| CREATE FUNCTION test2() RETURNS ltree
 | |
| LANGUAGE plpythonu
 | |
| TRANSFORM FOR TYPE ltree
 | |
| AS $$
 | |
| return ['foo', 'bar', 'baz']
 | |
| $$;
 | |
| -- plpython to ltree is not yet implemented, so this will fail,
 | |
| -- because it will try to parse the Python list as an ltree input
 | |
| -- string.
 | |
| SELECT test2();
 | |
| ERROR:  syntax error at position 0
 | |
| CONTEXT:  while creating return value
 | |
| PL/Python function "test2"
 |