File: units.sql

package info (click to toggle)
postgresql-unit 7.10-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,540 kB
  • sloc: sql: 1,768; ansic: 1,334; lex: 358; yacc: 140; perl: 100; makefile: 40; sh: 25
file content (53 lines) | stat: -rw-r--r-- 1,552 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
SET unit.time_output_custom = false;

/* revert to pre-12 default */
SET extra_float_digits = 0;
SELECT prefix, factor, definition FROM unit_prefixes ORDER BY factor, prefix COLLATE "C";
RESET extra_float_digits;

SELECT name, unit, definition FROM unit_units ORDER BY dimension(unit), unit, name COLLATE "C";

-- units that do not conform to their original definition
SELECT name, unit, definition, definition::unit AS parsed_definition, unit / definition::unit AS deviation
  FROM unit_units WHERE unit <> definition::unit;

-- units that differ when pushed through output-input functions
SELECT name, unit, unit::text::unit, definition FROM unit_units WHERE unit::text::unit::text <> unit::text;

-- prefix-unit combinations that are ambiguous
/*
CREATE FUNCTION valid_unit(u text)
RETURNS boolean LANGUAGE plpgsql
AS $$
BEGIN
	PERFORM u::unit;
	RETURN true;
EXCEPTION
WHEN OTHERS THEN
	RETURN false;
END;
$$;

-- takes about 5min to run with cold cache, and about 3s with the hash table filled
SELECT prefix||name AS unit, prefix, name
FROM unit_prefixes CROSS JOIN unit_units
WHERE NOT valid_unit(prefix||name)
ORDER BY prefix||name, prefix;
*/

SELECT 'daA'::unit; -- ambiguous in original definitions.units
SELECT 'dasb'::unit;
SELECT 'dat'::unit;
SELECT 'dau'::unit;
SELECT 'daustbl'::unit;
SELECT 'daustblsp'::unit;
SELECT 'daustbsp'::unit;
SELECT 'daustsp'::unit;
SELECT 'Eint'::unit;
SELECT 'Gint'::unit;
SELECT 'Mint'::unit;
SELECT 'Pint'::unit;
SELECT 'Tint'::unit;
SELECT 'Yint'::unit;
SELECT 'yoctodecillion'::unit;
SELECT 'Zint'::unit;