The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
["select nspname from pg_namespace where nspname = 'agentz' limit 1;\n",1,"data"]
["select nspname from pg_namespace where nspname = '_global' limit 1;\n",1,"data"]
["set search_path to _global,public","0E0","data"]
["delete from _accounts where name ='agentz'",1,"data"]
["drop schema agentz cascade\n","0E0","data"]
["create schema agentz;\nset search_path to agentz;\n","0E0","data"]
["    create table agentz._models (\n        id serial primary key,\n        name text unique not null,\n        table_name text unique not null,\n        description text\n    );\n\n    create table agentz._columns (\n        id serial primary key,\n        name text  not null,\n        type text not null,\n        table_name text not null,\n        \"default\" text,\n        label text,\n        unique(table_name, name)\n    );\n\n    create table agentz._roles (\n        name text primary key,\n        parentRole integer default 0, -- a column reference to agentz._roles itself. 0 means no parent\n        password text,\n        login text not null,\n        description text not null\n    );\n\n    create table agentz._access_rules (\n        id serial primary key,\n        role text not null,\n        method varchar(10) not null,\n        url text not null\n    );\n\n    create table agentz._views (\n        id serial primary key,\n        name text unique not null,\n        definition text unique not null,\n        description text\n    );\n","0E0","data"]
["insert into agentz._roles (name, description, login, password)\nvalues ('Admin', 'Administrator', 'password', 'blahblahblah');\n\ninsert into agentz._roles (name, description, login)\nvalues ('Public', 'Anonymous', 'anonymous');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/model');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/model/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/model/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/model/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/model/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/model');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/model/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/model/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/model/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/model/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/model');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/model/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/model/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/model/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/model/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/model');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/model/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/model/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/model/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/model/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/view');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/view/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/view/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/view/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/view/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/view');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/view/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/view/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/view/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/view/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/view');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/view/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/view/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/view/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/view/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/view');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/view/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/view/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/view/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/view/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/role');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/role/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/role/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/role/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/role/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/role');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/role/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/role/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/role/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/role/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/role');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/role/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/role/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/role/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/role/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/role');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/role/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/role/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/role/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/role/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/action');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/action/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/action/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/action/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'DELETE', '/=/action/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/action');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/action/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/action/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/action/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'GET', '/=/action/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/action');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/action/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/action/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/action/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'PUT', '/=/action/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/action');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/action/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/action/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/action/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/action/~/~/~/~');\ninsert into agentz._access_rules (role, method, url) values ('Admin', 'POST', '/=/admin/~');\n",1,"data"]
["set search_path to agentz,public","0E0","data"]
["select nspname from pg_namespace where nspname = '_global' limit 1;\n",1,"data"]
["create or replace function _upgrade() returns integer as $$\nbegin\n    create table _general (\n        version varchar(10),\n        created timestamp (0) with time zone default now()\n    );\n    insert into _general (version) values ('0.001');\n    alter table _access_rules rename to _access;\n    alter table _roles rename to _tmp;\n    create table _roles (\n        id serial primary key,\n        name text unique not null,\n        password text,\n        login text not null,\n        description text not null,\n        created timestamp (0) with time zone default now()\n    );\n    insert into _roles\n        (name, password, login, description)\n        (select name, password, login, description from _tmp);\n    drop table _tmp;\n    alter table _columns add column indexed text;\n    alter table _models add column created timestamp (0) with time zone default now();\n    alter table _views add column created timestamp (0) with time zone default now();\n    create table _action (\n        id serial primary key,\n        name text unique not null,\n        description text,\n        definition text unique not null,\n        confirmed_by text,\n        created timestamp (0) with time zone default now()\n    );\n    return 0;\nend;\n$$ language plpgsql;\n;","0E0","data"]
["select _upgrade();",1,"data"]
["update _general set version='0.001'",1,"data"]
["create or replace function _upgrade() returns integer as $$\nbegin\n    drop table _action;\n    insert into _access (role, method, url) values ('Admin', 'DELETE', '/=/feed');\n    insert into _access (role, method, url) values ('Admin', 'DELETE', '/=/feed/~');\n    insert into _access (role, method, url) values ('Admin', 'GET', '/=/feed');\n    insert into _access (role, method, url) values ('Admin', 'GET', '/=/feed/~');\n    insert into _access (role, method, url) values ('Admin', 'GET', '/=/feed/~/~/~');\n    insert into _access (role, method, url) values ('Admin', 'POST', '/=/feed/~');\n    insert into _access (role, method, url) values ('Admin', 'PUT', '/=/feed/~');\n    create table _feeds (\n        id serial primary key,\n        name text unique not null,\n        description text not null,\n        view text not null,\n        title text not null,\n        link text not null,\n        logo text,\n        copyright text,\n        language text,\n        author text,\n        created timestamp (0) with time zone default now()\n    );\n    return 0;\nend;\n$$ language plpgsql;\n;","0E0","data"]
["select _upgrade();",1,"data"]
["update _general set version='0.002'",1,"data"]
["create or replace function _upgrade() returns integer as $$\nbegin\n    update _roles set password=md5(password);\n    return 0;\nend;\n$$ language plpgsql;\n;","0E0","data"]
["select _upgrade();",1,"data"]
["update _general set version='0.003'",1,"data"]
["update _general set version='0.004'",1,"data"]
["create or replace function _upgrade() returns integer as $$\nbegin\n    update _columns set \"default\" = '[\"' || regexp_replace(regexp_replace(\"default\", '\"', '\\\\\"', 'g'), '''''', '''', 'g') || '\"]' where not \"default\" ~ '^''.*''$';\n    update _columns set \"default\" = regexp_replace(\"default\", '^''|''$', '\"', 'g') where \"default\" ~ '^''.*''$';\n    alter table _views drop constraint _views_definition_key;\n\n    return 0;\nend;\n$$ language plpgsql;\n;","0E0","data"]
["select _upgrade();",1,"data"]
["update _general set version='0.005'",1,"data"]
["create or replace function _upgrade() returns integer as $$\nbegin\n    alter table _models drop column table_name;\n    alter table _columns rename column table_name to model;\n\n    delete from _access where role = 'Admin';\n    alter table _access add column segments smallint;\n    alter table _access add column prohibiting boolean default false;\n    alter table _access rename column url to prefix;\n    update _access\n    set segments = char_length(regexp_replace(prefix, '[^/]+', '', 'g')) - 1,\n        prohibiting = false, prefix = regexp_replace(prefix, '^/=/|(/~)+$', '', 'g');\n    alter table _access alter column prohibiting set not null;\n    alter table _access alter column prefix set not null;\n\n    return 0;\nend;\n$$ language plpgsql;\n;","0E0","data"]
["select _upgrade();",1,"data"]
["update _general set version='0.006'",1,"data"]
["create or replace function _upgrade() returns integer as $$\nbegin\n    create table _actions (\n        id serial primary key,\n        name text unique not null,\n        definition text not null,\n        description text,\n        compiled text,\n        created timestamp(0) with time zone default now()\n    );\n    create table _action_params (\n        id serial primary key,\n        name text not null,\n        type text not null,\n        label text,\n        default_value text,\n        used bool not null,\n        action_id integer references _actions(id) on delete cascade\n    );\n    return 0;\nend\n$$ language plpgsql;\n;","0E0","data"]
["select _upgrade();",1,"data"]
["update _general set version='0.007'",1,"data"]
["create or replace function _upgrade() returns integer as $$\ndeclare\n    model_sql varchar;\n    col_sql   varchar;\n    model_rec record;\n    col_rec   record;\nbegin\n    -- loop to comment all model's all column\n    model_sql := 'select name, description from _models';\n    -- loop for per model\n    for model_rec in execute model_sql loop\n       execute 'comment on table ' || quote_ident(model_rec.name) || ' is ' || quote_literal(model_rec.description) || ';';\n       execute 'comment on column ' || quote_ident(model_rec.name) || '.id is ' || quote_literal('ID') || ';';\n       col_sql := 'select name, label from _columns where model = ' || quote_literal(model_rec.name) || ';';\n       -- loop for per column except id\n       for col_rec in execute col_sql loop\n          execute 'comment on column ' || quote_ident(model_rec.name) || '.' || quote_ident(col_rec.name) || ' is ' || quote_literal(col_rec.label) || ';';\n       end loop;\n    end loop;\n\n    -- create _ylogins table for ylogin model\n    create table _ylogins(\n        id serial primary key,\n        name text unique not null,\n        mapping_view text,\n        on_register text not null,\n        on_login text,\n        next_page text not null,\n        error_page text not null,\n        description text,\n        created timestamp(0) with time zone default now()\n    );\n\n   -- create index for _access table\n    create index idx_query_for_acl on _access(role, method, segments);\n\n    return 0;\nend;\n$$ language plpgsql;\n;","0E0","data"]
["select _upgrade();",1,"data"]
["update _general set version='0.008'",1,"data"]
["create or replace function _upgrade() returns integer as $$\nbegin\n    alter table _access add column applied_to cidr[] default '{0.0.0.0/0}';\n    return 0;\nend\n$$ language plpgsql;\n;","0E0","data"]
["select _upgrade();",1,"data"]
["update _general set version='0.009'",1,"data"]
["set search_path to _global,public","0E0","data"]
["insert into _accounts (name) values ('agentz')",1,"data"]
["set search_path to agentz,public","0E0","data"]
["select nspname from pg_namespace where nspname = 'agentz' limit 1;\n",1,"data"]
["create table test (id serial, body text)","0E0","data"]
["insert into test (body) values ('hello world')",1,"data"]
["select max(id) from \"test\"",[["1"]],"data"]
["select * from test",[["1","hello world"]],"data"]
["select * from test",[{"body":"hello world","id":"1"}],"data"]
["insert into test (body) values ('hello world');\ninsert into test (body) values ('blah');",1,"data"]
["update test set body=body||'aaa';",3,"data"]
["select * from test",[["1","hello worldaaa"],["2","hello worldaaa"],["3","blahaaa"]],"data"]
["select * from test",[{"body":"hello worldaaa","id":"1"},{"body":"hello worldaaa","id":"2"},{"body":"blahaaa","id":"3"}],"data"]
["insert into test (body) values (null);",1,"data"]
["select * from test",[{"body":"hello worldaaa","id":"1"},{"body":"hello worldaaa","id":"2"},{"body":"blahaaa","id":"3"},{"body":null,"id":"4"}],"data"]
["drop table test cascade","0E0","data"]