diff options
Diffstat (limited to 'src/test/regress/expected/enum.out')
-rw-r--r-- | src/test/regress/expected/enum.out | 153 |
1 files changed, 151 insertions, 2 deletions
diff --git a/src/test/regress/expected/enum.out b/src/test/regress/expected/enum.out index 56240c0e7a2..b1ba3f1fad3 100644 --- a/src/test/regress/expected/enum.out +++ b/src/test/regress/expected/enum.out @@ -25,6 +25,155 @@ ERROR: invalid input value for enum rainbow: "mauve" LINE 1: SELECT 'mauve'::rainbow; ^ -- +-- adding new values +-- +CREATE TYPE planets AS ENUM ( 'venus', 'earth', 'mars' ); +SELECT enumlabel, enumsortorder +FROM pg_enum +WHERE enumtypid = 'planets'::regtype +ORDER BY 2; + enumlabel | enumsortorder +-----------+--------------- + venus | 1 + earth | 2 + mars | 3 +(3 rows) + +ALTER TYPE planets ADD 'uranus'; +SELECT enumlabel, enumsortorder +FROM pg_enum +WHERE enumtypid = 'planets'::regtype +ORDER BY 2; + enumlabel | enumsortorder +-----------+--------------- + venus | 1 + earth | 2 + mars | 3 + uranus | 4 +(4 rows) + +ALTER TYPE planets ADD 'mercury' BEFORE 'venus'; +ALTER TYPE planets ADD 'saturn' BEFORE 'uranus'; +ALTER TYPE planets ADD 'jupiter' AFTER 'mars'; +ALTER TYPE planets ADD 'neptune' AFTER 'uranus'; +SELECT enumlabel, enumsortorder +FROM pg_enum +WHERE enumtypid = 'planets'::regtype +ORDER BY 2; + enumlabel | enumsortorder +-----------+--------------- + mercury | 0 + venus | 1 + earth | 2 + mars | 3 + jupiter | 3.25 + saturn | 3.5 + uranus | 4 + neptune | 5 +(8 rows) + +SELECT enumlabel, enumsortorder +FROM pg_enum +WHERE enumtypid = 'planets'::regtype +ORDER BY enumlabel::planets; + enumlabel | enumsortorder +-----------+--------------- + mercury | 0 + venus | 1 + earth | 2 + mars | 3 + jupiter | 3.25 + saturn | 3.5 + uranus | 4 + neptune | 5 +(8 rows) + +-- errors for adding labels +ALTER TYPE planets ADD + 'plutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutopluto'; +ERROR: invalid enum label "plutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutopluto" +DETAIL: Labels must be 63 characters or less. +ALTER TYPE planets ADD 'pluto' AFTER 'zeus'; +ERROR: "zeus" is not an existing enum label +-- +-- Test inserting so many values that we have to renumber +-- +create type insenum as enum ('L1', 'L2'); +alter type insenum add 'i1' before 'L2'; +alter type insenum add 'i2' before 'L2'; +alter type insenum add 'i3' before 'L2'; +alter type insenum add 'i4' before 'L2'; +alter type insenum add 'i5' before 'L2'; +alter type insenum add 'i6' before 'L2'; +alter type insenum add 'i7' before 'L2'; +alter type insenum add 'i8' before 'L2'; +alter type insenum add 'i9' before 'L2'; +alter type insenum add 'i10' before 'L2'; +alter type insenum add 'i11' before 'L2'; +alter type insenum add 'i12' before 'L2'; +alter type insenum add 'i13' before 'L2'; +alter type insenum add 'i14' before 'L2'; +alter type insenum add 'i15' before 'L2'; +alter type insenum add 'i16' before 'L2'; +alter type insenum add 'i17' before 'L2'; +alter type insenum add 'i18' before 'L2'; +alter type insenum add 'i19' before 'L2'; +alter type insenum add 'i20' before 'L2'; +alter type insenum add 'i21' before 'L2'; +alter type insenum add 'i22' before 'L2'; +alter type insenum add 'i23' before 'L2'; +alter type insenum add 'i24' before 'L2'; +alter type insenum add 'i25' before 'L2'; +alter type insenum add 'i26' before 'L2'; +alter type insenum add 'i27' before 'L2'; +alter type insenum add 'i28' before 'L2'; +alter type insenum add 'i29' before 'L2'; +alter type insenum add 'i30' before 'L2'; +-- The exact values of enumsortorder will now depend on the local properties +-- of float4, but in any reasonable implementation we should get at least +-- 20 splits before having to renumber; so only hide values > 20. +SELECT enumlabel, + case when enumsortorder > 20 then null else enumsortorder end as so +FROM pg_enum +WHERE enumtypid = 'insenum'::regtype +ORDER BY enumsortorder; + enumlabel | so +-----------+---- + L1 | 1 + i1 | 2 + i2 | 3 + i3 | 4 + i4 | 5 + i5 | 6 + i6 | 7 + i7 | 8 + i8 | 9 + i9 | 10 + i10 | 11 + i11 | 12 + i12 | 13 + i13 | 14 + i14 | 15 + i15 | 16 + i16 | 17 + i17 | 18 + i18 | 19 + i19 | 20 + i20 | + i21 | + i22 | + i23 | + i24 | + i25 | + i26 | + i27 | + i28 | + i29 | + i30 | + L2 | +(32 rows) + +-- -- Basic table creation, row selection -- CREATE TABLE enumtest (col rainbow); @@ -403,7 +552,7 @@ SELECT COUNT(*) FROM pg_type WHERE typname = 'rainbow'; SELECT * FROM pg_enum WHERE NOT EXISTS (SELECT 1 FROM pg_type WHERE pg_type.oid = enumtypid); - enumtypid | enumlabel ------------+----------- + enumtypid | enumsortorder | enumlabel +-----------+---------------+----------- (0 rows) |