Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add test to check if SQLiteCommandBuilder generates correct SQL when attached databases are being used and more than one database contains the same table name. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | tkt-343d392b51 |
Files: | files | file ages | folders |
SHA1: |
74a9c1671530644ffd4afbebdb093889 |
User & Date: | mistachkin 2011-10-09 03:56:43.673 |
Context
2011-10-09
| ||
04:08 | Change the default base schema name from 'sqlite_schema_stub' to 'sqlite_default_schema'. check-in: 1045ef98f0 user: mistachkin tags: tkt-343d392b51 | |
03:56 | Add test to check if SQLiteCommandBuilder generates correct SQL when attached databases are being used and more than one database contains the same table name. check-in: 74a9c16715 user: mistachkin tags: tkt-343d392b51 | |
03:19 | Copy the fix for the Bind_DateTime method to the SQLite3_UTF16 class. Add DateTimeKind connection string property to control the DateTimeKind of parsed DateTime values. Add the necessary method overloads to allow the DateTimeFormat and/or DateTimeKind to be specified by external callers. Reorganize the recognized DateTime formats so that ones with more information are always tried first. Also, add variants that support a trailing timezone specifier. Centralize DateTime format handling in the unit test infrastructure via the new getDateTimeFormat procedure. Revise setupDb unit test infrastructure procedure to accept a DateTimeKind. More changes to tests for ticket [343d392b51]. check-in: df7dcd3166 user: mistachkin tags: tkt-343d392b51 | |
Changes
Changes to Tests/basic.eagle.
︙ | ︙ | |||
824 825 826 827 828 829 830 | {10 {{x 10} {y2 2009-12-16T00:00:00.0000000Z}}} {11 {{x 11} {y2\ ${date}T12:00:00.0000000Z}}} {12 {{x 12} {y2 2009-12-16T12:00:00.0000000Z}}}}]} ############################################################################### unset -nocomplain date | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 824 825 826 827 828 829 830 831 832 833 834 835 836 837 | {10 {{x 10} {y2 2009-12-16T00:00:00.0000000Z}}} {11 {{x 11} {y2\ ${date}T12:00:00.0000000Z}}} {12 {{x 12} {y2 2009-12-16T12:00:00.0000000Z}}}}]} ############################################################################### unset -nocomplain date ############################################################################### unset -nocomplain testExeFile testLinqExeFile northwindEfDbFile testLinqOutFile ############################################################################### runSQLiteTestEpilogue |
︙ | ︙ |
Changes to Tests/tkt-343d392b51.eagle.
︙ | ︙ | |||
81 82 83 84 85 86 87 | ############################################################################### unset -nocomplain dateTimeFormat i dateTimeFormats ############################################################################### | | | 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | ############################################################################### unset -nocomplain dateTimeFormat i dateTimeFormats ############################################################################### runTest {test tkt-343d392b51-2.1 {SQLiteDataAdapter update fail} -setup { setupDb [set fileName tkt-343d392b51-2.1.db] set otherFileName tkt-343d392b51-2.1-otherDb.db } -body { set id [object invoke Interpreter.GetActive NextId] set dataSource [file join [getTemporaryPath] $fileName] set otherDataSource [file join [getTemporaryPath] $otherFileName] set otherDbName otherDb |
︙ | ︙ | |||
187 188 189 190 191 192 193 | otherDataSource dataSource id db otherFileName fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -match \ glob -result {* System.Data.DBConcurrencyException: *}} ############################################################################### | | | 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | otherDataSource dataSource id db otherFileName fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -match \ glob -result {* System.Data.DBConcurrencyException: *}} ############################################################################### runTest {test tkt-343d392b51-2.2 {SQLiteDataAdapter update success} -setup { setupDb [set fileName tkt-343d392b51-2.2.db] "" JulianDay set otherFileName tkt-343d392b51-2.2-otherDb.db } -body { set id [object invoke Interpreter.GetActive NextId] set dataSource [file join [getTemporaryPath] $fileName] set otherDataSource [file join [getTemporaryPath] $otherFileName] set otherDbName otherDb |
︙ | ︙ | |||
266 267 268 269 270 271 272 273 274 275 276 277 278 279 | // if ((long)dataRow\["x"\] % 2 == 0) dataRow\["y"\] = DateTime.UtcNow.ToString("[getDateTimeFormat]"); else dataRow.Delete(); } dataAdapter.Update(dataTable); // DBConcurrencyException (?) } } } } } | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 | // if ((long)dataRow\["x"\] % 2 == 0) dataRow\["y"\] = DateTime.UtcNow.ToString("[getDateTimeFormat]"); else dataRow.Delete(); } dataAdapter.Update(dataTable); // DBConcurrencyException (?) } } } } } } }] results errors System.Data.SQLite.dll] list $code $results \ [expr {[info exists errors] ? $errors : ""}] \ [expr {$code eq "Ok" ? [catch { object invoke _Dynamic${id}.Test${id} Main } result] : [set result ""]}] $result } -cleanup { cleanupDb $otherFileName cleanupDb $fileName unset -nocomplain result code results errors i sql otherTable otherDbName \ otherDataSource dataSource id db otherFileName fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -match \ regexp -result {^Ok System#CodeDom#Compiler#CompilerResults#\d+ \{\} 0 \{\}$}} ############################################################################### runTest {test tkt-343d392b51-3.1 {attached database, same table name} -setup { setupDb [set fileName tkt-343d392b51-3.1.db] set otherFileName tkt-343d392b51-3.1-otherDb.db } -body { set otherDataSource [file join [getTemporaryPath] $otherFileName] set otherDbName otherDb set otherTable [appendArgs $otherDbName .t1] set sql(inserts) "" set sql(1) [subst { \ CREATE TABLE t1(x INTEGER PRIMARY KEY); \ ATTACH DATABASE '${otherDataSource}' AS ${otherDbName}; \ CREATE TABLE ${otherTable}(x INTEGER PRIMARY KEY); \ [for {set i 1} {$i < 3} {incr i} { append sql(inserts) [appendArgs \ "INSERT INTO t1 (x) VALUES(" $i "); "] append sql(inserts) [appendArgs \ "INSERT INTO " ${otherTable} " (x) VALUES(" [expr {$i * 2}] "); "] }; return [expr {[info exists sql(inserts)] ? $sql(inserts) : ""}]] \ }] sql execute $db $sql(1) list [sql execute -execute reader -format list $db "SELECT x FROM t1;"] \ [sql execute -execute reader -format list $db [appendArgs \ "SELECT x FROM " ${otherTable} ";"]] } -cleanup { cleanupDb $otherFileName cleanupDb $fileName unset -nocomplain i sql otherTable otherDbName otherDataSource db \ otherFileName fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \ {{1 2} {2 4}}} ############################################################################### runTest {test tkt-343d392b51-3.2 {adapter, attached db, table names} -setup { setupDb [set fileName tkt-343d392b51-3.2.db] set otherFileName tkt-343d392b51-3.2-otherDb.db } -body { set id [object invoke Interpreter.GetActive NextId] set dataSource [file join [getTemporaryPath] $fileName] set otherDataSource [file join [getTemporaryPath] $otherFileName] set otherDbName otherDb set otherTable [appendArgs $otherDbName .t1] set sql(inserts) "" set sql(1) [subst { \ CREATE TABLE t1(x INTEGER PRIMARY KEY); \ ATTACH DATABASE '${otherDataSource}' AS ${otherDbName}; \ CREATE TABLE ${otherTable}(x INTEGER PRIMARY KEY); \ [for {set i 1} {$i < 3} {incr i} { append sql(inserts) [appendArgs \ "INSERT INTO t1 (x) VALUES(" $i ");"] append sql(inserts) [appendArgs \ "INSERT INTO " ${otherTable} " (x) VALUES(" [expr {$i * 2}] "); "] }; return [expr {[info exists sql(inserts)] ? $sql(inserts) : ""}]] \ }] set sql(2) [subst { \ SELECT x FROM ${otherTable} ORDER BY x; \ }] unset -nocomplain results errors set code [compileCSharpWith [subst { using System; using System.Data; using System.Data.SQLite; namespace _Dynamic${id} { public class Test${id} { public static void Main() { using (SQLiteConnection connection = new SQLiteConnection( "Data Source=${dataSource};")) { connection.Open(); using (SQLiteCommand command = connection.CreateCommand()) { command.CommandText = "${sql(1)}"; command.ExecuteNonQuery(); } using (SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter( "${sql(2)}", connection)) { using (DataSet dataSet = new DataSet()) { dataAdapter.Fill(dataSet, "${otherTable}"); DataTable dataTable = dataSet.Tables\["${otherTable}"\]; dataTable.Columns\["x"\].Unique = true; dataTable.PrimaryKey = new DataColumn\[\] { dataTable.Columns\["x"\] }; [expr {[isMono] ? "#pragma warning disable 219" : ""}] SQLiteCommandBuilder commandBuilder = new SQLiteCommandBuilder(dataAdapter); [expr {[isMono] ? "#pragma warning restore 219" : ""}] foreach (DataRow dataRow in dataTable.Rows) dataRow.Delete(); dataAdapter.Update(dataTable); // DBConcurrencyException (?) } } } } } |
︙ | ︙ |