Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  plpython_record.sql

  Sprache: SQL
 

--
-- Test returning tuples
--

CREATE TABLE table_record (
 first text,
 second int4
 ) ;

CREATE TYPE type_record AS (
 first text,
 second int4
 ) ;


CREATE FUNCTION test_table_record_as(typ text, first text, second integer, retnull boolean) RETURNS table_record AS $$
if retnull:
 return None
if typ == 'dict':
 return { 'first': first, 'second': second, 'additionalfield''must not cause trouble' }
elif typ == 'tuple':
 return ( first, second )
elif typ == 'list':
 return [ first, second ]
elif typ == 'obj':
 class type_record: pass
 type_record.first = first
 type_record.second = second
 return type_record
$$ LANGUAGE plpython3u;

CREATE FUNCTION test_type_record_as(typ text, first text, second integer, retnull boolean) RETURNS type_record AS $$
if retnull:
 return None
if typ == 'dict':
 return { 'first': first, 'second': second, 'additionalfield''must not cause trouble' }
elif typ == 'tuple':
 return ( first, second )
elif typ == 'list':
 return [ first, second ]
elif typ == 'obj':
 class type_record: pass
 type_record.first = first
 type_record.second = second
 return type_record
elif typ == 'str':
 return "('%s',%r)" % (first, second)
$$ LANGUAGE plpython3u;

CREATE FUNCTION test_in_out_params(first in text, second out text) AS $$
return first + '_in_to_out';
$$ LANGUAGE plpython3u;

CREATE FUNCTION test_in_out_params_multi(first in text,
                                         second out text, third out text) AS $$
return (first + '_record_in_to_out_1', first + '_record_in_to_out_2');
$$ LANGUAGE plpython3u;

CREATE FUNCTION test_inout_params(first inout text) AS $$
return first + '_inout';
$$ LANGUAGE plpython3u;


-- Test tuple returning functions
SELECT * FROM test_table_record_as('dict'nullnullfalse);
SELECT * FROM test_table_record_as('dict''one'nullfalse);
SELECT * FROM test_table_record_as('dict'null2false);
SELECT * FROM test_table_record_as('dict''three'3false);
SELECT * FROM test_table_record_as('dict'nullnulltrue);

SELECT * FROM test_table_record_as('tuple'nullnullfalse);
SELECT * FROM test_table_record_as('tuple''one'nullfalse);
SELECT * FROM test_table_record_as('tuple'null2false);
SELECT * FROM test_table_record_as('tuple''three'3false);
SELECT * FROM test_table_record_as('tuple'nullnulltrue);

SELECT * FROM test_table_record_as('list'nullnullfalse);
SELECT * FROM test_table_record_as('list''one'nullfalse);
SELECT * FROM test_table_record_as('list'null2false);
SELECT * FROM test_table_record_as('list''three'3false);
SELECT * FROM test_table_record_as('list'nullnulltrue);

SELECT * FROM test_table_record_as('obj'nullnullfalse);
SELECT * FROM test_table_record_as('obj''one'nullfalse);
SELECT * FROM test_table_record_as('obj'null2false);
SELECT * FROM test_table_record_as('obj''three'3false);
SELECT * FROM test_table_record_as('obj'nullnulltrue);

SELECT * FROM test_type_record_as('dict'nullnullfalse);
SELECT * FROM test_type_record_as('dict''one'nullfalse);
SELECT * FROM test_type_record_as('dict'null2false);
SELECT * FROM test_type_record_as('dict''three'3false);
SELECT * FROM test_type_record_as('dict'nullnulltrue);

SELECT * FROM test_type_record_as('tuple'nullnullfalse);
SELECT * FROM test_type_record_as('tuple''one'nullfalse);
SELECT * FROM test_type_record_as('tuple'null2false);
SELECT * FROM test_type_record_as('tuple''three'3false);
SELECT * FROM test_type_record_as('tuple'nullnulltrue);

SELECT * FROM test_type_record_as('list'nullnullfalse);
SELECT * FROM test_type_record_as('list''one'nullfalse);
SELECT * FROM test_type_record_as('list'null2false);
SELECT * FROM test_type_record_as('list''three'3false);
SELECT * FROM test_type_record_as('list'nullnulltrue);

SELECT * FROM test_type_record_as('obj'nullnullfalse);
SELECT * FROM test_type_record_as('obj''one'nullfalse);
SELECT * FROM test_type_record_as('obj'null2false);
SELECT * FROM test_type_record_as('obj''three'3false);
SELECT * FROM test_type_record_as('obj'nullnulltrue);

SELECT * FROM test_type_record_as('str''one'1false);

SELECT * FROM test_in_out_params('test_in');
SELECT * FROM test_in_out_params_multi('test_in');
SELECT * FROM test_inout_params('test_in');

-- try changing the return types and call functions again

ALTER TABLE table_record DROP COLUMN first;
ALTER TABLE table_record DROP COLUMN second;
ALTER TABLE table_record ADD COLUMN first text;
ALTER TABLE table_record ADD COLUMN second int4;

SELECT * FROM test_table_record_as('obj''one'1false);

ALTER TYPE type_record DROP ATTRIBUTE first;
ALTER TYPE type_record DROP ATTRIBUTE second;
ALTER TYPE type_record ADD ATTRIBUTE first text;
ALTER TYPE type_record ADD ATTRIBUTE second int4;

SELECT * FROM test_type_record_as('obj''one'1false);

-- errors cases

CREATE FUNCTION test_type_record_error1() RETURNS type_record AS $$
    return { 'first''first' }
$$ LANGUAGE plpython3u;

SELECT * FROM test_type_record_error1();


CREATE FUNCTION test_type_record_error2() RETURNS type_record AS $$
    return [ 'first' ]
$$ LANGUAGE plpython3u;

SELECT * FROM test_type_record_error2();


CREATE FUNCTION test_type_record_error3() RETURNS type_record AS $$
    class type_record: pass
    type_record.first = 'first'
    return type_record
$$ LANGUAGE plpython3u;

SELECT * FROM test_type_record_error3();

CREATE FUNCTION test_type_record_error4() RETURNS type_record AS $$
    return 'foo'
$$ LANGUAGE plpython3u;

SELECT * FROM test_type_record_error4();

Messung V0.5 in Prozent
C=92 H=96 G=93

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002