[Linux-programlama] libpq sınırlaması :(

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Volkan YAZICI (yazicivo@ttnet.net.tr)
Date: Thu 24 Mar 2005 - 09:30:03 EET


Merhaba,

Bugün PQgetvalue() fonksiyonunu inceliyordum ve sanırım ufak (!)
bir duvar ile karşılaştım.

Önerme 1:
  Fiziksel depolama alanınız yettiÄŸi sürece, istediÄŸiniz kadar
  satır saklayabilirsiniz bir PostgreSQL tablosunda. Yani
  teorik olarak sınırsız.

Önerme 2:
  src/interfaces/libpq/fe-exec.c dosyasında tanımlanan PQgetvalue
  fonksiyonuna bakıyoruz:
  
  char *
  PQgetvalue(const PGresult *res, int tup_num, int field_num)
  {
    if (!check_tuple_field_number(res, tup_num, field_num))
          return NULL;
        return res->tuples[tup_num][field_num].value;
  }

  Görüldüğü üzere, tup_num (satır indisi) bir integer olarak tanımlanmış.
  Ve istediÄŸimiz satırı "res->tuples[tup_num][field_num].value;"
  yordamı yardımı ile çağırıyoruz.

  Åžimdi bu bir kenarda dursun: satır numarası bir integer olarak
  tanımlı.

Önerme 3:
  Sistemde limits.h dosyasına bakıyoruz:

  /* Minimum and maximum values a `signed int' can hold. */
  # define INT_MIN (-INT_MAX - 1)
  # define INT_MAX 2147483647

  Bu da bir kenarda dursun: Sistem kullanılabilecek en büyük integer
  deÄŸeri: 2147483647

libpq çıkmazı: Eğer ben bir tablodaki 2147483647+1 inci satırı öğrenmeye
çalışırsam halim yaman.

Ufak bir nokta daha var. tuples'in yüklü bir struct olduğu göz önüne
alınırsa, tuples[INT_MAX][INT_MAX] büyüklüğünde bir çağrı ne derece
çalşır? (Bkz. Basit bir "short buf[INT_MAX]" oluşturma örneği.)

Aslında bu resmin sadece küçük bir parçası. Şöyle ki; piyasadaki
API'lerin %99'unun libpq'yu kendilerine baz aldıkları düşünülecek
olursa, onların hepsinde de bu (eğer düşüncem doğruysa) sınırlama
mevcut.

Sanırım sorum şimdilik bu kadar.
Yorum, öneri ve en önemlisi can simitlerinizi bekliyorum.

P.S. Lütfen ben bir noktayı gözden kaçırmış olayım. API kullanacak
insanların dünyası sınırlanmasın. :P

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.