From: | Hitoshi Harada <umi(dot)tanuki(at)gmail(dot)com> |
---|---|
To: | David Fetter <david(at)fetter(dot)org> |
Cc: | Andrew Dunstan <andrew(at)dunslane(dot)net>, Merlin Moncure <mmoncure(at)gmail(dot)com>, Kiswono Prayogo <kiswono(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: half OOT, plv8js group created ^^ |
Date: | 2009-11-01 05:42:19 |
Message-ID: | e08cc0400910312242i7d7104bdi109693acb00b6e9a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
2009/10/31 David Fetter <david(at)fetter(dot)org>:
> Please send a patch! :) :) :)
Here's my working directory. Kiswono, thanks for adding me to your
google code project. I prefer the license would be New BSD rather than
GPL.
From instant README:
plv8 version 2009/11/01
* OVERVIEW
plv8 is shared library that provides a PostgreSQL procedual language
powered by V8 JavaScript Engine. With this program you can write in
JavaScript your function that is callable from SQL.
* REQUIREMENT
plv8 requires:
PG: version 8.4.x (maybe older are allowed)
V8: version 1.2
g++ and all tools that PG and V8 requires to be built.
* INSTALL
** Get PostgreSQL and V8 source
PG: http://www.postgresql.org/ftp/source/
v8: http://code.google.com/p/v8/wiki/Source
Build both of them. Note v8 build option requires mode=release and
library=shared. Edit Makefile in plv8 directory so that $(PGDIR) and
$(V8DIR) point their directories and type "make". If your prompt
doesn't say anything and you can find plv8.so, that's all.
* TEST
Copy plv8.so into $(PGHOME)/lib and libv8.so from v8 directory into
some path that PostgreSQL can read as a library such like /usr/lib/.
Then type below SQL in your psql;
CREATE FUNCTION plv8_call_handler() RETURNS language_handler AS
'$libdir/plv8' LANGUAGE C;
CREATE FUNCTION plv8_call_validator(Oid) RETURNS void AS
'$libdir/plv8' LANGUAGE C;
CREATE LANGUAGE plv8 HANDLER plv8_call_handler VALIDATOR plv8_call_validator;
-- create js function
CREATE OR REPLACE FUNCTION plv8_test(keys text[], vals text[]) RETURNS
text AS $$
var o = {};
for(var i=0; i<keys.length; i++){
o[keys[i]] = vals[i];
}
return JSON.stringify(o);
$$ LANGUAGE plv8 IMMUTABLE STRICT;
-- test
SELECT plv8_test(ARRAY['name', 'age'], ARRAY['Tom', '29']);
* CAVEATS
- This is WIP version.
- Tested on only CentOS 5 (x86), PostgreSQL 8.4 (8.5devel) and v8 1.2.
- There's no interface to call SPI.
- You must specify argument names in function declarations.
- 1-dim array can be put as arguments. Multi dimension array is not supported.
- And many, many bugs...
Any question and comment appreciated.
Regards,
--
Hitoshi Harada
Attachment | Content-Type | Size |
---|---|---|
plv8.20091101.tgz | application/x-gzip | 6.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Stark | 2009-11-01 12:43:57 | Re: per-tablespace random_page_cost/seq_page_cost |
Previous Message | Robert Haas | 2009-11-01 02:04:12 | Re: per-tablespace random_page_cost/seq_page_cost |