1
0
mirror of https://github.com/pgvector/pgvector.git synced 2026-10-24 22:39:19 +03:00
Files
pgvector/test/sql/cast.sql
2026-08-15 09:00:32 -07:00

134 lines
4.1 KiB
SQL

-- array to vector
SELECT ARRAY[1,2,3]::vector;
SELECT ARRAY[1.0,2.0,3.0]::vector;
SELECT ARRAY[1,2,3]::real[]::vector;
SELECT ARRAY[1,2,3]::double precision[]::vector;
SELECT ARRAY[1,2,3]::numeric[]::vector;
SELECT '{1,2,3}'::real[]::vector;
SELECT '{1,2,3}'::real[]::vector(3);
SELECT '{1,2,3}'::real[]::vector(2);
SELECT '{NULL}'::real[]::vector;
SELECT '{NaN}'::real[]::vector;
SELECT '{Infinity}'::real[]::vector;
SELECT '{-Infinity}'::real[]::vector;
SELECT '{}'::real[]::vector;
SELECT '{{1}}'::real[]::vector;
SELECT '{1,2,3}'::double precision[]::vector;
SELECT '{1,2,3}'::double precision[]::vector(3);
SELECT '{1,2,3}'::double precision[]::vector(2);
SELECT '{4e38,-4e38}'::double precision[]::vector;
SELECT '{1e-46,-1e-46}'::double precision[]::vector;
-- array to halfvec
SELECT ARRAY[1,2,3]::halfvec;
SELECT ARRAY[1.0,2.0,3.0]::halfvec;
SELECT ARRAY[1,2,3]::real[]::halfvec;
SELECT ARRAY[1,2,3]::double precision[]::halfvec;
SELECT ARRAY[1,2,3]::numeric[]::halfvec;
SELECT '{1,2,3}'::real[]::halfvec;
SELECT '{1,2,3}'::real[]::halfvec(3);
SELECT '{1,2,3}'::real[]::halfvec(2);
SELECT '{NULL}'::real[]::halfvec;
SELECT '{NaN}'::real[]::halfvec;
SELECT '{Infinity}'::real[]::halfvec;
SELECT '{-Infinity}'::real[]::halfvec;
SELECT '{}'::real[]::halfvec;
SELECT '{{1}}'::real[]::halfvec;
SELECT '{65520,-65520}'::real[]::halfvec;
SELECT '{1e-8,-1e-8}'::real[]::halfvec;
SELECT '{1,2,3}'::double precision[]::halfvec;
SELECT '{1,2,3}'::double precision[]::halfvec(3);
SELECT '{1,2,3}'::double precision[]::halfvec(2);
SELECT '{4e38,-4e38}'::double precision[]::halfvec;
SELECT '{1e-46,-1e-46}'::double precision[]::halfvec;
-- array to sparsevec
SELECT ARRAY[1,0,2,0,3,0]::sparsevec;
SELECT ARRAY[1.0,0.0,2.0,0.0,3.0,0.0]::sparsevec;
SELECT ARRAY[1,0,2,0,3,0]::real[]::sparsevec;
SELECT ARRAY[1,0,2,0,3,0]::double precision[]::sparsevec;
SELECT ARRAY[1,0,2,0,3,0]::numeric[]::sparsevec;
SELECT '{1,0,2,0,3,0}'::real[]::sparsevec;
SELECT '{1,0,2,0,3,0}'::real[]::sparsevec(6);
SELECT '{1,0,2,0,3,0}'::real[]::sparsevec(5);
SELECT '{NULL}'::real[]::sparsevec;
SELECT '{NaN}'::real[]::sparsevec;
SELECT '{Infinity}'::real[]::sparsevec;
SELECT '{-Infinity}'::real[]::sparsevec;
SELECT '{}'::real[]::sparsevec;
SELECT '{{1}}'::real[]::sparsevec;
SELECT '{1,0,2,0,3,0}'::double precision[]::sparsevec;
SELECT '{1,0,2,0,3,0}'::double precision[]::sparsevec(6);
SELECT '{1,0,2,0,3,0}'::double precision[]::sparsevec(5);
SELECT '{4e38,-4e38}'::double precision[]::sparsevec;
SELECT '{1e-46,-1e-46}'::double precision[]::sparsevec;
-- vector to array
SELECT '[1,2,3]'::vector::real[];
-- vector to halfvec
SELECT '[1,2,3]'::vector::halfvec;
SELECT '[1,2,3]'::vector::halfvec(3);
SELECT '[1,2,3]'::vector::halfvec(2);
SELECT '[65520]'::vector::halfvec;
SELECT '[1e-8]'::vector::halfvec;
-- vector to sparsevec
SELECT '[0,1.5,0,3.5,0]'::vector::sparsevec;
SELECT '[0,1.5,0,3.5,0]'::vector::sparsevec(5);
SELECT '[0,1.5,0,3.5,0]'::vector::sparsevec(4);
-- halfvec to array
SELECT '[1,2,3]'::halfvec::real[];
-- halfvec to vector
SELECT '[1,2,3]'::halfvec::vector;
SELECT '[1,2,3]'::halfvec::vector(3);
SELECT '[1,2,3]'::halfvec::vector(2);
-- halfvec to sparsevec
SELECT '[0,1.5,0,3.5,0]'::halfvec::sparsevec;
SELECT '[0,1.5,0,3.5,0]'::halfvec::sparsevec(5);
SELECT '[0,1.5,0,3.5,0]'::halfvec::sparsevec(4);
-- sparsevec to vector
SELECT '{2:1.5,4:3.5}/5'::sparsevec::vector;
SELECT '{2:1.5,4:3.5}/5'::sparsevec::vector(5);
SELECT '{2:1.5,4:3.5}/5'::sparsevec::vector(4);
SELECT '{}/16001'::sparsevec::vector;
-- sparsevec to halfvec
SELECT '{2:1.5,4:3.5}/5'::sparsevec::halfvec;
SELECT '{2:1.5,4:3.5}/5'::sparsevec::halfvec(5);
SELECT '{2:1.5,4:3.5}/5'::sparsevec::halfvec(4);
SELECT '{}/16001'::sparsevec::halfvec;
SELECT '{1:65520}/1'::sparsevec::halfvec;
SELECT '{1:1e-8}/1'::sparsevec::halfvec;
-- max dimensions / elements
SELECT array_agg(n)::vector FROM generate_series(1, 16001) n;
SELECT array_to_vector(array_agg(n), 16001, false) FROM generate_series(1, 16001) n;
SELECT array_agg(n)::halfvec FROM generate_series(1, 16001) n;
SELECT array_agg(n)::sparsevec FROM generate_series(1, 16001) n;
-- ensure no error
SELECT ARRAY[1,2,3] = ARRAY[1,2,3];