Funcion inet2int - error

From: Rubén da Silva <ruben(at)ozonomultimedia(dot)com>
To: postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Funcion inet2int - error
Date: 2006-12-01 11:40:55
Message-ID: 457014C7.6090405@ozonomultimedia.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

He creado una función para pasar de inet a entero largo (int8):

==============

CREATE OR REPLACE FUNCTION inet2int(inet "varchar")
RETURNS information_schema.cardinal_number AS
$BODY$ip = args[0]
octetos = ip.split(".")
A=256*256*256
B=265*256
C=256
entero = long(octetos[0])*A + long(octetos[1])*B + long(octetos[2])*C +
long(octetos[3])
return entero$BODY$

===============

Probando por ejemplo con 212.51.32.201 me devuelve el error:

ERROR: value "3560238025" is out of range for type integer

Ese valor y mayores están en la BD como int8.
-Es fallo de plpython?
Ejecutando la funcion fuera de postgres devuelve perfectamente el valor.
-Postgres no se espera un int8?

P.D. La he creado porque no encontré una existente que lo haga. Si la
hay por favor avisadme.

Un saludo,
Rubén

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Ortega 2006-12-01 12:19:09 Re: arman cadenas
Previous Message Eliana Gutierrez 2006-12-01 03:32:57 Re: Check columnname in a table