Posted By: Jovo () on 'CZdatabases'
Title:     What the hey!
Date:      Sat Jul 23 00:59:45 2011

Ahoj.

  Stala se mi takova "vtipna" vec, doufam, ze cizi nestesti vas pobavi:-)

  Tak jsem na ostrem prostredi pustil SQL script odladeny na testovacim - obe 
prostredi jsou identicka DB2v7.1 - ve kterem jsem pridaval novy nullable int 
sloupec: ALTER TABLE ADD COLUMN "km"...
  Pak na nej davam SELECT km FROM... a dostanu "invalid token". SELECT * 
funguje, sloupec KM vidim. Pro jistotu to zkusim oquotovat: SELECT "km" 
FROM... a zase "invalid token". Zkousim to horem dolem, i z aplikace a porad 
se mi to stavi na zadni. Po asi pul hodine prace me napadlo se pripojit pres 
GUI rozhrani (Control Center) a ejhle:

    ...
    prijato VARCHAR
    vyslal  BIGINT
    "km"    INTEGER

- na ostrem prostredi mi ALTER pridal nazev sloupce i s temi uvozovkami! No 
nazdar...
  Vzhledem k tomu, ze DROP COLUMN umi az v 9+ (fakt nekecam, DB2 az do verze 
9 neumi DROP COLUMN!), jediny zpusob je vylejt to, DROPnout tabulku a zase to 
tam nalejt. "Nastesti" verze 7 neumi ani INSERT SELECT:( a commandline utilita 
db2look je jiz nekolik let rozbita a GUI na ni prekvapive spoleha pri 
generovani DDL. Prece nebudu create script psat rucne opisovanim z obrazovky, 
kdyz je tam 20 sloupcu!
  Po dalsi hodine a pul jsem to vzdal kvuli referencni integrite - identity 
sloupec db2 umi jen pouze kdyz je GENERATE ALWAYS, takze i kdybych se tam 
pokousel nalejt spravna ID, skoncil bych s temi, co vygeneruje DB2 a budu ja 
prochazet rozpadle FK a uvadet je v navazanych tabulkach (nastesti jen jedna) 
na pravou miru?

  Misto vyliti ve vlastni rezii jsem se na to vykaslal, pridal jsem novy 
sloupec:
    ...
    prijato   VARCHAR
    vyslal    BIGINT
    "km"      INTEGER
    kilometry INTEGER
, prepsal persistencni vrstvu a protoze PL pracuje vzdy s vyjmenovanymi 
sloupci, tak to ani nevadi:-) Za 10 minut bylo vymalovano.


Aleluja!
Jovo.
PS: prvotni napad pridat tam sloupec KM bez uvozovek jsem zavrhnul - kdovico
    by mi nacitani vracelo, zvlast kdyz system musi v jave pouzivat jeste 
    TYPE3 driver

Search the boards