Posted By: snake (keeping on the sunny side) on 'CZdatabases'
Title:     Strange things happen - ECPG na Postgresu 6.5.2
Date:      Mon Jan 24 23:08:42 2000

Hi all!

Nevim, jestli to patri na czprogramming, czunix nebo spis sem. V kazdym 
pripade bych hrozne mocuvital pomoc:

---- padajici verze ---
int db_fce(var1)
EXEC SQL BEGIN DECLARE SECTION;
  char* var1; // nepomuze ani char var[30] - pada uplne stejne, i kdyz to [30]
EXEC SQL END DECLARE SECTION;       // by melo byt "spravnejsi
{
  EXEC SQL SELECT sloupec INTO :var1 FROM tabulka;
}

---- prekompilatorem naprosto "stejne" prelozena, ale nepadajici verze:
int db_fce(char* var1)
{
  EXEC SQL BEGIN DECLARE SECTION;
    char var2[30]; // nejdriv si vytvorim "klon", ale UVNITR {}
  EXEC SQL END DECLARE SECTION;
  EXEC SQL SELECT sloupec INTO :var2 FROM tabulka;
  strcpy(var1,var2);
}

No a ted babo rad. Kdyz jsem se dival na vypis, co vytvori prekompilator, 
vypadal v druhem pripade _nachlup_ stejne (pokud nahore bylo var1[30]) - 
akorat bylo "1" nahrazeno "2"!!!

Pritom v prvnim pripade pri pridani testovaciho printf("%p",var1) se ukazatel 
zmenil po vykonani SELECTu. Pokud jsem udelal ale ten druhy priklad a nechal 
si vypisovat ukazatel na var2, ten se mi nezmenil a ukazoval porad stejne.

Nasel jsem chybu v kompilatoru gcc nebo kde mam hledat chybu? Opakoval jsem to 
vicekrat na svem i na cizim (jiny CPU, pamet, gcc i postgres (6.5.3)) a 
chovalo se to stejne. 

snake

P.S. Pomoooooooooooc;-|

Search the boards