Обсуждение: "blah" is not a domain error
I know domain support is pretty broken, so maybe this is a known issue... decibel=# create table test(m money); CREATE TABLE decibel=# insert into test values('-1.00'); INSERT 0 1 decibel=# alter domain money add check(money>0); ERROR: "money" is not a domain decibel=# drop domain money; ERROR: "money" is not a domain decibel=# \dD List of domains Schema | Name | Type | Modifier | Check --------+------+------+----------+------- (0 rows) decibel=# \d test Table "public.test" Column | Type | Modifiers --------+-------+----------- m | money | decibel=# create domain money as numeric(99,2); ERROR: type "money" already exists decibel=# select version(); version ------------------------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 8.1.2 on powerpc-apple-darwin8.4.0, compiled by GCC powerpc-apple-darwin8-gcc-4.0.0 (GCC) 4.0.0 20041026 (AppleComputer, Inc. build 4061) (1 row) decibel=# -- Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com Pervasive Software http://pervasive.com work: 512-231-6117 vcard: http://jim.nasby.net/pervasive.vcf cell: 512-569-9461
"Jim C. Nasby" <jnasby@pervasive.com> writes: > I know domain support is pretty broken, so maybe this is a known issue... What are you concerned about exactly? It looks perfectly reasonable to me. "money" is a base type not a domain. regards, tom lane
On Wed, May 24, 2006 at 05:29:34PM -0400, Tom Lane wrote: > "Jim C. Nasby" <jnasby@pervasive.com> writes: > > I know domain support is pretty broken, so maybe this is a known issue... > > What are you concerned about exactly? It looks perfectly reasonable > to me. "money" is a base type not a domain. Oops... I thought we'd removed it. Shouldn't it be an error to create a domain that conflicts with an existing type? bench=# create domain money as numeric(21,2); CREATE DOMAIN bench=# drop domain money; ERROR: "money" is not a domain bench=# create domain money as numeric(21,2); ERROR: type "money" already exists bench=# select version(); version ------------------------------------------------------------------------------------------------------ PostgreSQL 8.2devel on x86_64-unknown-freebsd6.0, compiled by GCC gcc (GCC) 3.4.4 [FreeBSD] 20050518 (1 row) bench=# -- Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com Pervasive Software http://pervasive.com work: 512-231-6117 vcard: http://jim.nasby.net/pervasive.vcf cell: 512-569-9461
"Jim C. Nasby" <jnasby@pervasive.com> writes: > Shouldn't it be an error to create a domain that conflicts with an existing > type? It is, if you create it in the same schema. "money", along with all the other built-in types, is in pg_catalog not public. regards, tom lane