mirror of
https://github.com/postgres/postgres.git
synced 2025-07-26 01:22:12 +03:00
Initial checkin of a contributed type that handles passwords efficiently.
This commit is contained in:
82
contrib/chkpass/chkpass.sql
Normal file
82
contrib/chkpass/chkpass.sql
Normal file
@ -0,0 +1,82 @@
|
||||
--
|
||||
-- PostgreSQL code for CHKPASS.
|
||||
-- Written by D'Arcy J.M. Cain
|
||||
-- darcy@druid.net
|
||||
-- http://www.druid.net/darcy/
|
||||
--
|
||||
-- $Header: /cvsroot/pgsql/contrib/chkpass/Attic/chkpass.sql,v 1.1 2001/05/03 12:32:13 darcy Exp $
|
||||
-- best viewed with tabs set to 4
|
||||
-- %%PGDIR%% changed to your local directory where modules is
|
||||
--
|
||||
|
||||
load '%%PGDIR%%/modules/chkpass.so';
|
||||
|
||||
--
|
||||
-- Input and output functions and the type itself:
|
||||
--
|
||||
|
||||
create function chkpass_in(opaque)
|
||||
returns opaque
|
||||
as '%%PGDIR%%/modules/chkpass.so'
|
||||
language 'c';
|
||||
|
||||
create function chkpass_out(opaque)
|
||||
returns opaque
|
||||
as '%%PGDIR%%/modules/chkpass.so'
|
||||
language 'c';
|
||||
|
||||
create type chkpass (
|
||||
internallength = 16,
|
||||
externallength = 13,
|
||||
input = chkpass_in,
|
||||
output = chkpass_out
|
||||
);
|
||||
|
||||
create function raw(chkpass)
|
||||
returns text
|
||||
as '%%PGDIR%%/modules/chkpass.so', 'chkpass_rout'
|
||||
language 'c';
|
||||
|
||||
--
|
||||
-- The various boolean tests:
|
||||
--
|
||||
|
||||
create function eq(chkpass, text)
|
||||
returns bool
|
||||
as '%%PGDIR%%/modules/chkpass.so', 'chkpass_eq'
|
||||
language 'c';
|
||||
|
||||
create function ne(chkpass, text)
|
||||
returns bool
|
||||
as '%%PGDIR%%/modules/chkpass.so', 'chkpass_ne'
|
||||
language 'c';
|
||||
|
||||
--
|
||||
-- Now the operators. Note how some of the parameters to some
|
||||
-- of the 'create operator' commands are commented out. This
|
||||
-- is because they reference as yet undefined operators, and
|
||||
-- will be implicitly defined when those are, further down.
|
||||
--
|
||||
|
||||
create operator = (
|
||||
leftarg = chkpass,
|
||||
rightarg = text,
|
||||
commutator = =,
|
||||
-- negator = <>,
|
||||
procedure = eq
|
||||
);
|
||||
|
||||
create operator <> (
|
||||
leftarg = chkpass,
|
||||
rightarg = text,
|
||||
negator = =,
|
||||
procedure = ne
|
||||
);
|
||||
|
||||
INSERT INTO pg_description (objoid, description)
|
||||
SELECT oid, 'password type with checks'
|
||||
FROM pg_type WHERE typname = 'chkpass';
|
||||
|
||||
--
|
||||
-- eof
|
||||
--
|
Reference in New Issue
Block a user