What does # mean in plpgsql?

Started by Stephen Cookover 15 years ago6 messagesgeneral
Jump to latest
#1Stephen 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

#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: Stephen Cook (#1)
Re: What does # mean in plpgsql?

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>:

Show quoted text

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

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Stephen Cook (#1)
Re: What does # mean in plpgsql?

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

#4Daniel Verite
daniel@manitou-mail.org
In reply to: Stephen Cook (#1)
Re: What does # mean in plpgsql?

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

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Pavel Stehule (#2)
Re: What does # mean in plpgsql?

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

#6Stephen Cook
sclists@gmail.com
In reply to: Pavel Stehule (#2)
Re: What does # mean in plpgsql?

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