List:MySQL and .NET« Previous MessageNext Message »
From:Marcin Domański Date:November 25 2004 11:39am
Subject:Deadlock during Fill in 1.0.2@4.1.7
View as plain text  
When I try to use Parameters (lastSync is DateTime) there is deadlock when
DateTime is 0001-01-01 00:00:00. I thought that query is evaluating too
long but there are no queries sent to server at all (!). I've checked this
select manually and it works (1204records in less than second).

string selectDom = @"
				SELECT
					`l_wojewodztwo`.`ID_wojewodztwo` AS 'kod_wojewodztwa',
					`g_adres`.`ulica` AS 'lok_ulica',
					`g_adres`.`nr_domu` AS 'lok_nr_domu',
					`g_adres`.`nr_lokalu` AS 'lok_nr_lokalu',
					`l_miejscowosc`.`nazwa` AS 'lok_miejscowosc',
					`g_oferta`.`cena_za_metr` AS 'cena_metra',
					`g_oferta`.`prowizja_sp` AS 'cena_prowizja_proc',
					`g_oferta`.`prowizja_sp_czy_procent`,
					`g_oferta`.`cena` AS 'cena_kwota',
					`g_oferta`.`typWymiany` AS 'wymiana_typ',
					`g_of_dom`.`powierzchnia_calkowita` AS 'pow',
					`g_oferta`.`dostepnosc_od` AS 'kiedy_wolne_data',
					`g_of_dom`.`powierzchnia_mieszkalna` AS 'pow_mieszkalna',
					`g_of_dom`.`rok_budowy`,
					`g_oferta`.`uwagi`,
					`g_oferta`.`ID_globalny`,
					`g_oferta`.`typ_oferty`,
					`g_oferta`.`ID_klienci` AS 'id_zgloszenia',
					`g_oferta`.`ID_pracownik` AS 'id_pracownicy',
					`g_oferta`.`data_modyfikacji`,
					`g_oferta`.`numer_oferty` AS 'nr_oferty',
					`g_of_dom`.`powierzchnia_dzialki` AS 'pow_dzialki',
					`g_oferta`.`rezerwacja_do` AS 'blokada_do_dnia',
					`g_oferta`.`do_kiedy_wylacznosc`,
					`l_powiat`.`nazwa` AS 'lok_powiat',
					`l_gmina`.`nazwa` AS 'lok_gmina',
					`g_oferta`.`data_rejestracji`
				FROM
					`l_wojewodztwo`,
					`g_adres`,
					`l_miejscowosc`,
					`g_oferta`,
					`g_of_dom`,
					`l_powiat`,
					`l_gmina`
				WHERE
					`g_oferta`.`data_wczytania` > ?lastSync AND
					`g_of_dom`.`ID_oferty` = `g_oferta`.`ID_globalny` AND
					`g_oferta`.`ID_adresu` = `g_adres`.`ID_adres` AND
					`l_powiat`.`ID_wojewodztwa` = `l_wojewodztwo`.`ID_wojewodztwo` AND
					`l_gmina`.`ID_powiatu` = `l_powiat`.`ID_powiat` AND
					`l_miejscowosc`.`ID_gminy` = `l_gmina`.`ID_gmina` AND
					`g_adres`.`ID_miejscowosci` = `l_miejscowosc`.`ID_miejscowosc`
tempDTsql = new DataTable();
tempC = new MySqlCommand(selectDom, myConn);
tempCP = new MySqlParameter("?lastSync", MySqlDbType.Timestamp);
tempC.Parameters.Add(tempCP);
tempCP.Value = lastSync;
tempDA = new MySqlDataAdapter(tempC);
tempCB = new MySqlCommandBuilder(tempDA);
tempDA.Fill(tempDTsql); <- here is deadlock i can't even stop the thread

This part of code helps:
if(lastSync > DateTime.MinValue) {
	tempCP.Value = lastSync;
} else {
	tempCP.Value = null;
}

Greetings,
   Martin

Thread
Deadlock during Fill in 1.0.2@4.1.7Marcin Domański25 Nov