Changeset: fab1f7a16a9f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fab1f7a16a9f
Modified Files:
        sql/backends/monet5/Tests/pyapi19.stable.err
        sql/backends/monet5/Tests/pyapi19.stable.out
        sql/backends/monet5/Tests/pyapi25.stable.err
        sql/backends/monet5/Tests/pyapi25.stable.err.Windows
        sql/backends/monet5/Tests/pyapi25.stable.out
        sql/backends/monet5/Tests/pyapi29.stable.err
        sql/backends/monet5/Tests/pyapi29.stable.out
        sql/backends/monet5/UDF/pyapi/connection.c
        sql/backends/monet5/UDF/pyapi/pyapi.c
        sql/backends/monet5/UDF/pyapi/pyapi.mal
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_19.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_19.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_25.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_25.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_29.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_29.stable.out
        sql/backends/monet5/UDF/pyapi3/pyapi3.mal
Branch: Jul2017
Log Message:

Disallow loopback queries in parallel Python UDFs and mark single-threaded UDFs 
as unsafe on the MAL layer.


diffs (truncated from 1704 to 300 lines):

diff --git a/sql/backends/monet5/Tests/pyapi19.stable.err 
b/sql/backends/monet5/Tests/pyapi19.stable.err
--- a/sql/backends/monet5/Tests/pyapi19.stable.err
+++ b/sql/backends/monet5/Tests/pyapi19.stable.err
@@ -31,6 +31,64 @@ stderr of test 'pyapi19` in directory 's
 # 11:59:04 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-5346" "--port=35428"
 # 11:59:04 >  
 
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT * FROM mapped_query();
+ERROR = !Python exception
+        !
+        !  1. def pyfun(_columns,_column_types,_conn):
+        !> 2.   _conn.execute('CREATE TABLE pyapi19_integers(i INTEGER);')
+        !  3.   _conn.execute('INSERT INTO pyapi19_integers VALUES (0), (1), 
(2);')
+        !  4.   return(1)
+        !Loopback queries are not supported in parallel.
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT * FROM pyapi19_integers;
+ERROR = !current transaction is aborted (please ROLLBACK)
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = CREATE FUNCTION mapped_result_query() returns table (i integer) 
LANGUAGE PYTHON_MAP
+        {
+            res = _conn.execute('SELECT * FROM pyapi19_integers;')
+            return res['i']
+        };
+ERROR = !current transaction is aborted (please ROLLBACK)
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT * FROM mapped_result_query();
+ERROR = !current transaction is aborted (please ROLLBACK)
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT COUNT(i) FROM pyapi19_load_table();
+ERROR = !Python exception
+        !
+        !  1. def pyfun(_columns,_column_types,_conn):
+        !> 2.   res = _conn.execute('SELECT * FROM pyapi19_integers;')
+        !  3.   return res['i']
+        !  4. 
+        !Loopback queries are not supported in parallel.
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT * FROM mapped_result_query();
+ERROR = !Python exception
+        !
+        !  1. def pyfun(_columns,_column_types,_conn):
+        !> 2.   res = _conn.execute('SELECT * FROM pyapi19_strings;')
+        !  3.   return res['s']
+        !  4. 
+        !Loopback queries are not supported in parallel.
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT * FROM mapped_result_query();
+ERROR = !Python exception
+        !
+        !  1. def pyfun(_columns,_column_types,_conn):
+        !> 2.   res = _conn.execute('SELECT * FROM pyapi19_dates;')
+        !  3.   return res
+        !  4. 
+        !Loopback queries are not supported in parallel.
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT * FROM pyapi19_load_table() LIMIT 100;
+ERROR = !Python exception
+        !
+        !  1. def pyfun(_columns,_column_types,_conn):
+        !> 2.   res = _conn.execute('SELECT * FROM pyapi19_integers;')
+        !  3.   return res
+        !  4. 
+        !Loopback queries are not supported in parallel.
 
 # 11:59:05 >  
 # 11:59:05 >  "Done."
diff --git a/sql/backends/monet5/Tests/pyapi19.stable.out 
b/sql/backends/monet5/Tests/pyapi19.stable.out
--- a/sql/backends/monet5/Tests/pyapi19.stable.out
+++ b/sql/backends/monet5/Tests/pyapi19.stable.out
@@ -36,33 +36,6 @@ Ready.
 #    _conn.execute('INSERT INTO pyapi19_integers VALUES (0), (1), (2);')
 #    return(1)
 #};
-#SELECT * FROM mapped_query();
-% . # table_name
-% i # name
-% int # type
-% 1 # length
-[ 1    ]
-#SELECT * FROM pyapi19_integers;
-% sys.pyapi19_integers # table_name
-% i # name
-% int # type
-% 1 # length
-[ 0    ]
-[ 1    ]
-[ 2    ]
-#CREATE FUNCTION mapped_result_query() returns table (i integer) LANGUAGE 
PYTHON_MAP
-#{
-#    res = _conn.execute('SELECT * FROM pyapi19_integers;')
-#    return res['i']
-#};
-#SELECT * FROM mapped_result_query();
-% . # table_name
-% i # name
-% int # type
-% 1 # length
-[ 0    ]
-[ 1    ]
-[ 2    ]
 #ROLLBACK;
 #START TRANSACTION;
 #CREATE FUNCTION pyapi19_create_table() returns table (i integer) LANGUAGE P
@@ -75,12 +48,6 @@ Ready.
 #    return res['i']
 #};
 #CREATE TABLE pyapi19_integers AS SELECT * FROM pyapi19_create_table() WITH 
DATA;
-#SELECT COUNT(i) FROM pyapi19_load_table();
-% .L2 # table_name
-% L1 # name
-% bigint # type
-% 6 # length
-[ 100000       ]
 #ROLLBACK;
 #START TRANSACTION;
 #CREATE TABLE pyapi19_strings(s STRING);
@@ -91,14 +58,6 @@ Ready.
 #    res = _conn.execute('SELECT * FROM pyapi19_strings;')
 #    return res['s']
 #};
-#SELECT * FROM mapped_result_query();
-% . # table_name
-% i # name
-% clob # type
-% 11 # length
-[ "hello"      ]
-[ "33" ]
-[ "hello world"        ]
 #ROLLBACK;
 #START TRANSACTION;
 #CREATE TABLE pyapi19_dates(d DATE);
@@ -109,14 +68,6 @@ Ready.
 #    res = _conn.execute('SELECT * FROM pyapi19_dates;')
 #    return res
 #};
-#SELECT * FROM mapped_result_query();
-% . # table_name
-% d # name
-% date # type
-% 10 # length
-[ 2014-10-03   ]
-[ 2000-03-24   ]
-[ 2033-11-22   ]
 #ROLLBACK;
 #START TRANSACTION;
 #CREATE FUNCTION pyapi19_create_table() returns table (i integer, j integer, k 
double, l float, m hugeint, n bigint, o STRING, p DECIMAL) LANGUAGE P
@@ -136,111 +87,6 @@ Ready.
 #    return res
 #};
 #CREATE TABLE pyapi19_integers AS SELECT * FROM pyapi19_create_table() WITH 
DATA;
-#SELECT * FROM pyapi19_load_table() LIMIT 100;
-% .,   .,      .,      .,      .,      .,      .,      . # table_name
-% i,   j,      k,      l,      m,      n,      o,      p # name
-% int, int,    double, double, smallint,       bigint, clob,   decimal # type
-% 6,   6,      24,     24,     2,      6,      2,      20 # length
-[ 100000,      100000, 0,      1e+05,  0,      100000, "0",    0.000   ]
-[ 99999,       99999,  1,      99999,  1,      99999,  "1",    1.000   ]
-[ 99998,       99998,  2,      99998,  2,      99998,  "2",    2.000   ]
-[ 99997,       99997,  3,      99997,  3,      99997,  "3",    3.000   ]
-[ 99996,       99996,  4,      99996,  4,      99996,  "4",    4.000   ]
-[ 99995,       99995,  5,      99995,  5,      99995,  "5",    5.000   ]
-[ 99994,       99994,  6,      99994,  6,      99994,  "6",    6.000   ]
-[ 99993,       99993,  7,      99993,  7,      99993,  "7",    7.000   ]
-[ 99992,       99992,  8,      99992,  8,      99992,  "8",    8.000   ]
-[ 99991,       99991,  9,      99991,  9,      99991,  "9",    9.000   ]
-[ 99990,       99990,  10,     9.999e+04,      10,     99990,  "10",   10.000  
]
-[ 99989,       99989,  11,     99989,  11,     99989,  "11",   11.000  ]
-[ 99988,       99988,  12,     99988,  12,     99988,  "12",   12.000  ]
-[ 99987,       99987,  13,     99987,  13,     99987,  "13",   13.000  ]
-[ 99986,       99986,  14,     99986,  14,     99986,  "14",   14.000  ]
-[ 99985,       99985,  15,     99985,  15,     99985,  "15",   15.000  ]
-[ 99984,       99984,  16,     99984,  16,     99984,  "16",   16.000  ]
-[ 99983,       99983,  17,     99983,  17,     99983,  "17",   17.000  ]
-[ 99982,       99982,  18,     99982,  18,     99982,  "18",   18.000  ]
-[ 99981,       99981,  19,     99981,  19,     99981,  "19",   19.000  ]
-[ 99980,       99980,  20,     9.998e+04,      20,     99980,  "20",   20.000  
]
-[ 99979,       99979,  21,     99979,  21,     99979,  "21",   21.000  ]
-[ 99978,       99978,  22,     99978,  22,     99978,  "22",   22.000  ]
-[ 99977,       99977,  23,     99977,  23,     99977,  "23",   23.000  ]
-[ 99976,       99976,  24,     99976,  24,     99976,  "24",   24.000  ]
-[ 99975,       99975,  25,     99975,  25,     99975,  "25",   25.000  ]
-[ 99974,       99974,  26,     99974,  26,     99974,  "26",   26.000  ]
-[ 99973,       99973,  27,     99973,  27,     99973,  "27",   27.000  ]
-[ 99972,       99972,  28,     99972,  28,     99972,  "28",   28.000  ]
-[ 99971,       99971,  29,     99971,  29,     99971,  "29",   29.000  ]
-[ 99970,       99970,  30,     9.997e+04,      30,     99970,  "30",   30.000  
]
-[ 99969,       99969,  31,     99969,  31,     99969,  "31",   31.000  ]
-[ 99968,       99968,  32,     99968,  32,     99968,  "32",   32.000  ]
-[ 99967,       99967,  33,     99967,  33,     99967,  "33",   33.000  ]
-[ 99966,       99966,  34,     99966,  34,     99966,  "34",   34.000  ]
-[ 99965,       99965,  35,     99965,  35,     99965,  "35",   35.000  ]
-[ 99964,       99964,  36,     99964,  36,     99964,  "36",   36.000  ]
-[ 99963,       99963,  37,     99963,  37,     99963,  "37",   37.000  ]
-[ 99962,       99962,  38,     99962,  38,     99962,  "38",   38.000  ]
-[ 99961,       99961,  39,     99961,  39,     99961,  "39",   39.000  ]
-[ 99960,       99960,  40,     9.996e+04,      40,     99960,  "40",   40.000  
]
-[ 99959,       99959,  41,     99959,  41,     99959,  "41",   41.000  ]
-[ 99958,       99958,  42,     99958,  42,     99958,  "42",   42.000  ]
-[ 99957,       99957,  43,     99957,  43,     99957,  "43",   43.000  ]
-[ 99956,       99956,  44,     99956,  44,     99956,  "44",   44.000  ]
-[ 99955,       99955,  45,     99955,  45,     99955,  "45",   45.000  ]
-[ 99954,       99954,  46,     99954,  46,     99954,  "46",   46.000  ]
-[ 99953,       99953,  47,     99953,  47,     99953,  "47",   47.000  ]
-[ 99952,       99952,  48,     99952,  48,     99952,  "48",   48.000  ]
-[ 99951,       99951,  49,     99951,  49,     99951,  "49",   49.000  ]
-[ 99950,       99950,  50,     9.995e+04,      50,     99950,  "50",   50.000  
]
-[ 99949,       99949,  51,     99949,  51,     99949,  "51",   51.000  ]
-[ 99948,       99948,  52,     99948,  52,     99948,  "52",   52.000  ]
-[ 99947,       99947,  53,     99947,  53,     99947,  "53",   53.000  ]
-[ 99946,       99946,  54,     99946,  54,     99946,  "54",   54.000  ]
-[ 99945,       99945,  55,     99945,  55,     99945,  "55",   55.000  ]
-[ 99944,       99944,  56,     99944,  56,     99944,  "56",   56.000  ]
-[ 99943,       99943,  57,     99943,  57,     99943,  "57",   57.000  ]
-[ 99942,       99942,  58,     99942,  58,     99942,  "58",   58.000  ]
-[ 99941,       99941,  59,     99941,  59,     99941,  "59",   59.000  ]
-[ 99940,       99940,  60,     9.994e+04,      60,     99940,  "60",   60.000  
]
-[ 99939,       99939,  61,     99939,  61,     99939,  "61",   61.000  ]
-[ 99938,       99938,  62,     99938,  62,     99938,  "62",   62.000  ]
-[ 99937,       99937,  63,     99937,  63,     99937,  "63",   63.000  ]
-[ 99936,       99936,  64,     99936,  64,     99936,  "64",   64.000  ]
-[ 99935,       99935,  65,     99935,  65,     99935,  "65",   65.000  ]
-[ 99934,       99934,  66,     99934,  66,     99934,  "66",   66.000  ]
-[ 99933,       99933,  67,     99933,  67,     99933,  "67",   67.000  ]
-[ 99932,       99932,  68,     99932,  68,     99932,  "68",   68.000  ]
-[ 99931,       99931,  69,     99931,  69,     99931,  "69",   69.000  ]
-[ 99930,       99930,  70,     9.993e+04,      70,     99930,  "70",   70.000  
]
-[ 99929,       99929,  71,     99929,  71,     99929,  "71",   71.000  ]
-[ 99928,       99928,  72,     99928,  72,     99928,  "72",   72.000  ]
-[ 99927,       99927,  73,     99927,  73,     99927,  "73",   73.000  ]
-[ 99926,       99926,  74,     99926,  74,     99926,  "74",   74.000  ]
-[ 99925,       99925,  75,     99925,  75,     99925,  "75",   75.000  ]
-[ 99924,       99924,  76,     99924,  76,     99924,  "76",   76.000  ]
-[ 99923,       99923,  77,     99923,  77,     99923,  "77",   77.000  ]
-[ 99922,       99922,  78,     99922,  78,     99922,  "78",   78.000  ]
-[ 99921,       99921,  79,     99921,  79,     99921,  "79",   79.000  ]
-[ 99920,       99920,  80,     9.992e+04,      80,     99920,  "80",   80.000  
]
-[ 99919,       99919,  81,     99919,  81,     99919,  "81",   81.000  ]
-[ 99918,       99918,  82,     99918,  82,     99918,  "82",   82.000  ]
-[ 99917,       99917,  83,     99917,  83,     99917,  "83",   83.000  ]
-[ 99916,       99916,  84,     99916,  84,     99916,  "84",   84.000  ]
-[ 99915,       99915,  85,     99915,  85,     99915,  "85",   85.000  ]
-[ 99914,       99914,  86,     99914,  86,     99914,  "86",   86.000  ]
-[ 99913,       99913,  87,     99913,  87,     99913,  "87",   87.000  ]
-[ 99912,       99912,  88,     99912,  88,     99912,  "88",   88.000  ]
-[ 99911,       99911,  89,     99911,  89,     99911,  "89",   89.000  ]
-[ 99910,       99910,  90,     9.991e+04,      90,     99910,  "90",   90.000  
]
-[ 99909,       99909,  91,     99909,  91,     99909,  "91",   91.000  ]
-[ 99908,       99908,  92,     99908,  92,     99908,  "92",   92.000  ]
-[ 99907,       99907,  93,     99907,  93,     99907,  "93",   93.000  ]
-[ 99906,       99906,  94,     99906,  94,     99906,  "94",   94.000  ]
-[ 99905,       99905,  95,     99905,  95,     99905,  "95",   95.000  ]
-[ 99904,       99904,  96,     99904,  96,     99904,  "96",   96.000  ]
-[ 99903,       99903,  97,     99903,  97,     99903,  "97",   97.000  ]
-[ 99902,       99902,  98,     99902,  98,     99902,  "98",   98.000  ]
-[ 99901,       99901,  99,     99901,  99,     99901,  "99",   99.000  ]
 #ROLLBACK;
 
 # 11:59:05 >  
diff --git a/sql/backends/monet5/Tests/pyapi25.stable.err 
b/sql/backends/monet5/Tests/pyapi25.stable.err
--- a/sql/backends/monet5/Tests/pyapi25.stable.err
+++ b/sql/backends/monet5/Tests/pyapi25.stable.err
@@ -31,16 +31,117 @@ stderr of test 'pyapi25` in directory 's
 # 12:40:00 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-21450" "--port=30737"
 # 12:40:00 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-14818/.s.monetdb.37353
-QUERY = SELECT * FROM pyapi25errortable();
-ERROR = !SELECT: no such table 'hopefullynonexistanttable'
-        !Python exception
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT pyapi25(i) FROM pyapi25table; #multiply by 3
+ERROR = !Python exception
         !
-        !  1. def pyfun(_columns,_column_types,_conn):
-        !> 2.   _conn.execute('SELECT * FROM HOPEFULLYNONEXISTANTTABLE;')
-        !  3.   return 1
-        !  4. 
-        !SQL Query Failed: ParseException:SQLparser:42S02!SELECT: no such 
table 'hopefullynonexistanttable'
+        !  1. def pyfun(i,_columns,_column_types,_conn):
+        !> 2.   res = _conn.execute('SELECT i FROM pyapi25multiplication;')
+        !  3.   return res['i'] * i
+        !  4.   return i
+        !Loopback queries are not supported in parallel.
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = UPDATE pyapi25multiplication SET i=10;
+ERROR = !current transaction is aborted (please ROLLBACK)
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = SELECT pyapi25(i) FROM pyapi25table; #multiply by 10
+ERROR = !current transaction is aborted (please ROLLBACK)
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = DROP FUNCTION pyapi25;
+ERROR = !current transaction is aborted (please ROLLBACK)
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = DROP TABLE pyapi25table;
+ERROR = !current transaction is aborted (please ROLLBACK)
+MAPI  = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765
+QUERY = DROP TABLE pyapi25multiplication;
+ERROR = !current transaction is aborted (please ROLLBACK)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to