Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test new action workflow to validate json #17

Merged
merged 6 commits into from
Apr 22, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
test:
strategy:
matrix:
pg: [15, 14, 13, 12, 11, 10]
pg: [16, 15, 14, 13, 12, 11, 10]
name: 🐘 PostgreSQL ${{ matrix.pg }}
runs-on: ubuntu-latest
container: pgxn/pgxn-tools
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: 🚀 Release on PGXN
on:
push:
# Release on semantic version tag.
tags: ['v[0-9]+.[0-9]+.[0-9]+']
jobs:
release:
name: Release on PGXN
runs-on: ubuntu-latest
container: pgxn/pgxn-tools
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Bundle the Release
run: pgxn-bundle
- name: Release on PGXN
env:
PGXN_USERNAME: ${{ secrets.PGXN_USERNAME }}
PGXN_PASSWORD: ${{ secrets.PGXN_PASSWORD }}
run: pgxn-release
176 changes: 176 additions & 0 deletions ajbool--0.0.3.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION ajbool" to load this file. \quit

CREATE FUNCTION ajbool_in(cstring)
RETURNS ajbool
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE STRICT;


CREATE FUNCTION ajbool_out(ajbool)
RETURNS cstring
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE STRICT;

CREATE FUNCTION ajbool_recv(internal)
RETURNS ajbool
LANGUAGE internal IMMUTABLE AS 'charrecv';

CREATE FUNCTION ajbool_send(ajbool)
RETURNS bytea
LANGUAGE internal IMMUTABLE AS 'charsend';

CREATE TYPE ajbool (
INPUT = ajbool_in,
OUTPUT = ajbool_out,
RECEIVE = ajbool_recv,
SEND = ajbool_send,
INTERNALLENGTH = 1,
ALIGNMENT = char,
STORAGE = plain,
CATEGORY = 'B',
PASSEDBYVALUE
);
COMMENT ON TYPE ajbool IS 'boolean type with explict NULL';

CREATE FUNCTION ajbool_to_bool(ajbool) RETURNS bool AS
'MODULE_PATHNAME'
LANGUAGE c IMMUTABLE STRICT;

CREATE CAST (ajbool AS bool)
WITH FUNCTION ajbool_to_bool(ajbool) AS IMPLICIT;

CREATE FUNCTION bool_to_ajbool(bool) RETURNS ajbool
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE;

CREATE CAST (bool as ajbool) WITH FUNCTION bool_to_ajbool(bool) AS ASSIGNMENT;

CREATE FUNCTION ajbool_eq(ajbool, ajbool)
RETURNS boolean LANGUAGE internal IMMUTABLE AS 'chareq';

CREATE FUNCTION ajbool_ne(ajbool, ajbool)
RETURNS boolean LANGUAGE internal IMMUTABLE AS 'charne';

CREATE FUNCTION ajbool_lt(ajbool, ajbool)
RETURNS boolean LANGUAGE internal IMMUTABLE AS 'charlt';

CREATE FUNCTION ajbool_le(ajbool, ajbool)
RETURNS boolean LANGUAGE internal IMMUTABLE AS 'charle';

CREATE FUNCTION ajbool_gt(ajbool, ajbool)
RETURNS boolean LANGUAGE internal IMMUTABLE AS 'chargt';

CREATE FUNCTION ajbool_ge(ajbool, ajbool)
RETURNS boolean LANGUAGE internal IMMUTABLE AS 'charge';

CREATE FUNCTION ajbool_cmp(ajbool, ajbool)
RETURNS integer LANGUAGE internal IMMUTABLE AS 'btcharcmp';

CREATE FUNCTION hash_ajbool(ajbool)
RETURNS integer LANGUAGE internal IMMUTABLE AS 'hashchar';

CREATE OPERATOR = (
LEFTARG = ajbool,
RIGHTARG = ajbool,
PROCEDURE = ajbool_eq,
COMMUTATOR = '=',
NEGATOR = '<>',
RESTRICT = eqsel,
JOIN = eqjoinsel
);
COMMENT ON OPERATOR =(ajbool, ajbool) IS 'equals?';

CREATE OPERATOR <> (
LEFTARG = ajbool,
RIGHTARG = ajbool,
PROCEDURE = ajbool_ne,
COMMUTATOR = '<>',
NEGATOR = '=',
RESTRICT = neqsel,
JOIN = neqjoinsel
);
COMMENT ON OPERATOR <>(ajbool, ajbool) IS 'not equals?';

CREATE OPERATOR < (
LEFTARG = ajbool,
RIGHTARG = ajbool,
PROCEDURE = ajbool_lt,
COMMUTATOR = > ,
NEGATOR = >= ,
RESTRICT = scalarltsel,
JOIN = scalarltjoinsel
);
COMMENT ON OPERATOR <(ajbool, ajbool) IS 'less-than';

CREATE OPERATOR <= (
LEFTARG = ajbool,
RIGHTARG = ajbool,
PROCEDURE = ajbool_le,
COMMUTATOR = >= ,
NEGATOR = > ,
RESTRICT = scalarltsel,
JOIN = scalarltjoinsel
);
COMMENT ON OPERATOR <=(ajbool, ajbool) IS 'less-than-or-equal';

CREATE OPERATOR > (
LEFTARG = ajbool,
RIGHTARG = ajbool,
PROCEDURE = ajbool_gt,
COMMUTATOR = < ,
NEGATOR = <= ,
RESTRICT = scalargtsel,
JOIN = scalargtjoinsel
);
COMMENT ON OPERATOR >(ajbool, ajbool) IS 'greater-than';

CREATE OPERATOR >= (
LEFTARG = ajbool,
RIGHTARG = ajbool,
PROCEDURE = ajbool_ge,
COMMUTATOR = <= ,
NEGATOR = < ,
RESTRICT = scalargtsel,
JOIN = scalargtjoinsel
);
COMMENT ON OPERATOR >=(ajbool, ajbool) IS 'greater-than-or-equal';

CREATE OPERATOR CLASS btree_ajbool_ops
DEFAULT FOR TYPE ajbool USING btree
AS
OPERATOR 1 < ,
OPERATOR 2 <= ,
OPERATOR 3 = ,
OPERATOR 4 >= ,
OPERATOR 5 > ,
FUNCTION 1 ajbool_cmp(ajbool, ajbool);

CREATE OPERATOR CLASS hash_ajbool_ops
DEFAULT FOR TYPE ajbool USING hash AS
OPERATOR 1 = ,
FUNCTION 1 hash_ajbool(ajbool);

-- adds parallel suport
DO $$
DECLARE version_num integer;
BEGIN
SELECT current_setting('server_version_num') INTO STRICT version_num;
IF version_num > 90600 THEN
EXECUTE $E$ ALTER FUNCTION ajbool_in(cstring) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_out(ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_recv(internal) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_send(ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_to_bool(ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION bool_to_ajbool(bool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_eq(ajbool, ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_ne(ajbool, ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_lt(ajbool, ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_le(ajbool, ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_gt(ajbool, ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_ge(ajbool, ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION ajbool_cmp(ajbool, ajbool) PARALLEL SAFE $E$;
EXECUTE $E$ ALTER FUNCTION hash_ajbool(ajbool) PARALLEL SAFE $E$;
END IF;
END;
$$;
Binary file added ajbool-1.0.0.tar.gz
za-arthur marked this conversation as resolved.
Show resolved Hide resolved
Binary file not shown.
9 changes: 8 additions & 1 deletion test/expected/parallel_test.out
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
BEGIN;
SET max_parallel_workers_per_gather=4;
SET force_parallel_mode=on;
DO $$
BEGIN
IF current_setting('server_version_num')::int >= 160000 THEN
EXECUTE 'SET debug_parallel_query = on';
ELSE
EXECUTE 'SET force_parallel_mode = on';
END IF;
END $$;
CREATE TABLE parallel_test(i int, data ajbool) WITH (parallel_workers = 4);
INSERT INTO parallel_test
SELECT i, CASE i%3 WHEN 0 THEN 't' WHEN 1 THEN 'f' ELSE 'u' END::ajbool as data
Expand Down
9 changes: 8 additions & 1 deletion test/expected/parallel_test_0.out
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
BEGIN;
SET max_parallel_workers_per_gather=4;
SET force_parallel_mode=on;
DO $$
BEGIN
IF current_setting('server_version_num')::int >= 160000 THEN
EXECUTE 'SET debug_parallel_query = on';
ELSE
EXECUTE 'SET force_parallel_mode = on';
END IF;
END $$;
CREATE TABLE parallel_test(i int, data ajbool) WITH (parallel_workers = 4);
INSERT INTO parallel_test
SELECT i, CASE i%3 WHEN 0 THEN 't' WHEN 1 THEN 'f' ELSE 'u' END::ajbool as data
Expand Down
9 changes: 8 additions & 1 deletion test/sql/parallel_test.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
BEGIN;
SET max_parallel_workers_per_gather=4;
SET force_parallel_mode=on;
DO $$
BEGIN
IF current_setting('server_version_num')::int >= 160000 THEN
EXECUTE 'SET debug_parallel_query = on';
ELSE
EXECUTE 'SET force_parallel_mode = on';
END IF;
END $$;

CREATE TABLE parallel_test(i int, data ajbool) WITH (parallel_workers = 4);
INSERT INTO parallel_test
Expand Down
Loading