PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

plv8 wyłącza wykonanie i przygotowanie funkcji w eval()

W końcu znalazłem rozwiązanie:

create or replace function
public.js(src text, input json) returns json as $$
  //-- select js('var a = input.test; var output = []; for(k in a) { output.push(10+a[k]); };', '{"test": [1,2,3]}'::json)
  //-- select public.js('plv8.elog(NOTICE, "yoyo");', null) // should not be possible
  plv8.elog(NOTICE, 'test');
  var evalRes = null;
  (function() {
        var plv8 = null; //-- In order to disable execute, prepare...
        evalRes = eval('var output=null; ' + src + '; output;');
  })();
  plv8.elog(NOTICE, 'test2');
  return JSON.stringify(evalRes);
$$ LANGUAGE plv8;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Optymalizacja zapytań w PostgreSQL. WYJAŚNIJ podstawy – część 2

  2. Unikaj wyłącznych blokad dostępu do tabel, do których istnieją odniesienia, podczas opuszczania PostgreSQL

  3. Przechowywanie zagnieżdżonych skrótów w PostgreSQL z Rails 4 (i Hstore)

  4. Czy istnieje sposób na przydatne indeksowanie kolumny tekstowej zawierającej wzorce wyrażeń regularnych?

  5. Instrukcja Postgresql CASE - czy mogę użyć wartości zwracanej przez CASE w moim SELECT?