Thread: What does # mean in plpgsql?
What does the hash mark (#) mean in plpgsql? I saw it used in the pseudo_encrypt function @ http://wiki.postgresql.org/wiki/Pseudo_encrypt, on the line: r2 := l1 # ((((1366.0 * r1 + 150889) % 714025) / 714025.0) * 32767)::int; My google-fu has failed me on this one, and I needs to know. Thanks! -- Stephen
hello try: postgres=# select oprcode, oprleft::regtype, oprright::regtype from pg_operator where oprname = '#'; oprcode | oprleft | oprright ---------------+----------+---------- path_npoints | - | path box_intersect | box | box poly_npoints | - | polygon lseg_interpt | lseg | lseg line_interpt | line | line bitxor | bit | bit int2xor | smallint | smallint int4xor | integer | integer int8xor | bigint | bigint (9 rows) so this means a xor operation regards Pavel Stehule 2010/8/12 Stephen Cook <sclists@gmail.com>: > What does the hash mark (#) mean in plpgsql? > > I saw it used in the pseudo_encrypt function @ > http://wiki.postgresql.org/wiki/Pseudo_encrypt, on the line: > > r2 := l1 # ((((1366.0 * r1 + 150889) % 714025) / 714025.0) * 32767)::int; > > My google-fu has failed me on this one, and I needs to know. > > Thanks! > > > -- Stephen > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general >
On Thursday 12 August 2010 7:51:39 am Stephen Cook wrote: > What does the hash mark (#) mean in plpgsql? > > I saw it used in the pseudo_encrypt function @ > http://wiki.postgresql.org/wiki/Pseudo_encrypt, on the line: > > r2 := l1 # ((((1366.0 * r1 + 150889) % 714025) / 714025.0) * 32767)::int; > > My google-fu has failed me on this one, and I needs to know. > > Thanks! > > > -- Stephen From here: http://www.postgresql.org/docs/8.4/interactive/functions-math.html bitwise XOR -- Adrian Klaver adrian.klaver@gmail.com
Stephen Cook wrote: > What does the hash mark (#) mean in plpgsql? > > I saw it used in the pseudo_encrypt function @ > http://wiki.postgresql.org/wiki/Pseudo_encrypt, on the line: > > r2 := l1 # ((((1366.0 * r1 + 150889) % 714025) / 714025.0) * 32767)::int; > > My google-fu has failed me on this one, and I needs to know. It's a bitwise exclusive OR (XOR) Best regards, -- Daniel PostgreSQL-powered mail user agent and storage: http://www.manitou-mail.org
Pavel Stehule <pavel.stehule@gmail.com> writes: > try: > postgres=# select oprcode, oprleft::regtype, oprright::regtype from > pg_operator where oprname = '#'; Or even easier: regression=# \do+ # List of operators Schema | Name | Left arg type | Right arg type | Result type | Description ------------+------+---------------+----------------+-------------+-------------------------------- pg_catalog | # | bigint | bigint | bigint | bitwise xor pg_catalog | # | bit | bit | bit | bitwise exclusive or ... regards, tom lane
On 8/12/2010 10:56 AM, Pavel Stehule wrote: > so this means a xor operation > > 2010/8/12 Stephen Cook<sclists@gmail.com>: >> What does the hash mark (#) mean in plpgsql? >> >> I saw it used in the pseudo_encrypt function @ >> http://wiki.postgresql.org/wiki/Pseudo_encrypt, on the line: >> >> r2 := l1 # ((((1366.0 * r1 + 150889) % 714025) / 714025.0) * 32767)::int; >> >> My google-fu has failed me on this one, and I needs to know. >> >> Thanks! Thanks (and also to everyone else who said the same thing almost instantly). That's not one I have used yet (at least not in a database). I should have known it was an operator and looked it up that way... what threw me off was that when I paste that line in pgAdmin it changes the font and formatting for that line. So I thought it must be something special. Sorry for the noise. -- Stephen