Re: PostgreSQL 8.3 ve Implicit Cast

From: alaattin(at)gmail(dot)com
To: Devrim GÜNDÜZ <devrim(at)gunduz(dot)org>
Cc: pgsql-tr-genel(at)postgresql(dot)org
Subject: Re: PostgreSQL 8.3 ve Implicit Cast
Date: 2008-11-09 13:27:54
Message-ID: 4e8f49a10811090527r34960d19k13e28cea8d5b0704@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

Uygulama 3. taraflar tarafından geliştirilmiş ve malesef bazı
kısımları şifrelenmiş bir uygulama, bu yüzden yeni sürüm yayınlanana
kadar bunu yapma şansımız yok. Öte yandan, Peter Eisentraut tarafından
http://people.planetpostgresql.org/peter/index.php?/archives/18-Readding-implicit-casts-in-PostgreSQL-8.3.html
adresinde yayınlanan makalede (PlanetPostgreSQL erişilemez olduğu için
google önbelleğinden ulaşılabiliyor sadece) castlerin eklenmesine
yönelik bulunan sql betiğini (ekte bulunabilir) çalıştırarak castleri
oluşturduk lakin bu kez de önceki
iletide belirttiğim:

Could not execute query [Native Error: ERROR: operator is not unique: text ||
integer at character 75 HINT: Could not choose a best candidate operator. You
might need to add explicit type casts.] [User Info: SELECT to_section AS
section,to_ref_id AS ref_id, section || '|'::char || ref_id || '|'::char ||
to_section || '|'::char || to_ref_id AS key, comment FROM association WHERE
(section='trackeritem' AND ref_id='24') UNION SELECT section AS section,ref_id
AS ref_id, section || '|'::char || ref_id || '|'::char || to_section ||
'|'::char || to_ref_id AS key, comment FROM association WHERE
(to_section='trackeritem' AND to_ref_id='24')]

hatasını almaya başladık. Açıkçası sorunu tam olarak teşhis edemediğim
için, çözüm üretemiyorum; kodun içinden birisi olarak yardımcı
olabilirseniz memnun olurum.

Şimdi, benim hatadan anladığım || operatörü için text 'ten integer 'e
cast edecek birden fazla fonksiyon var ve operatör doğru cast
fonksiyonunu seçemiyor. Manual'de sayfa 136'da diyor ki:

The string concatenation operator (||) "still accepts non-string
input", so long as at least one input is of a string type, as shown in
Table 9-5.

Sanırım bunun olabilmesi için || operatörü bünyesinde implement
edilmiş bir implicit cast mekanizması var ve bu mekanizma benim elle
eklediğim implicit castler ile çakışıyor ve || operatörünün exception
üretmesine sebep oluyor.

Durum özetle budur, konuya ilişkin fikirlerinizi bekliyorum.

Selamlar

Alaattin Kahramanlar

On 11/8/08, Devrim GÜNDÜZ <devrim(at)gunduz(dot)org> wrote:
> On Fri, 2008-11-07 at 23:02 +0200, Alaattin Kahramanlar wrote:
>> PostgreSQL 8.3 öncesi için tasarlanmış bir uygulama kullanmaktayız.
>> Sunucuyu 8.3'e yükselttikten sonra tahmin ettiğimiz üzere bir takım
>> 'cast' hataları almaya başladık. Özellikle integer->text castleri için
>> sorun olduğu ve 8.3te 'implicit casti etkinleştirmek' mümkün olmadığı
>> (?) için; bunu, sistemde ilgili casti tanımlayarak aşabileceğimizi
>> düşünerek
>
> *Bana kalsa* uygulamanızı düzeltin. Bu castleri eklemek mümkün
> PostgreSQL'e tekrar; ama sonuçta doğru çözüm olmaz sanıyorum.
>
> --
> Devrim GÜNDÜZ, RHCE
> devrim~gunduz.org, devrim~PostgreSQL.org, devrim.gunduz~linux.org.tr
> http://www.gunduz.org
>

Attachment Content-Type Size
fix.sql application/octet-stream 3.3 KB

In response to

Browse pgsql-tr-genel by date

  From Date Subject
Next Message Ali Dereli 2008-11-10 06:38:10 PosgreSQl kurtarımı
Previous Message Devrim GÜNDÜZ 2008-11-08 07:18:04 Re: PostgreSQL 8.3 ve Implicit Cast