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;-|