13/10/03, messie from [ Łukasz Jarosław Mozer ] ...
$q='SELECT access FROM nodes WHERE ip=inet2int(?)';
Czy to jest standardowa funkcja postgresa?
nie, ale mozna zdefiniowac. ja mam tak:
CREATE FUNCTION inet2int (inet) RETURNS bigint AS ' split(/\./,$_[0]); return($_[0]*256**3+$_[1]*256**2+$_[2]*256**1+$_[3]*256**0); ' LANGUAGE plperl;
mozna tez w plpgsql, pewnie bedzie dzialac szybciej, ale trzeba sie nagimnastykowac:
CREATE FUNCTION inet2int (inet) RETURNS bigint AS ' begin return to_number(split_part(host($1),''.'',1),''999'')*256^3 +to_number(split_part(host($1),''.'',2),''999'')*256^2 +to_number(split_part(host($1),''.'',3),''999'')*256 +to_number(split_part(host($1),''.'',4),''999''); end; ' LANGUAGE plpgsql;