Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | More performance adjustments to the data reader class. Pursuant to [e122d26e70]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | experimental |
Files: | files | file ages | folders |
SHA1: |
53e8310fda4abc154f9c1e5bae4ec3e0 |
User & Date: | mistachkin 2014-10-07 17:52:49.097 |
Context
2014-10-08
| ||
18:49 | Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70]. check-in: e6cc5d000b user: mistachkin tags: trunk | |
2014-10-07
| ||
17:52 | More performance adjustments to the data reader class. Pursuant to [e122d26e70]. Closed-Leaf check-in: 53e8310fda user: mistachkin tags: experimental | |
2014-10-06
| ||
22:38 | Merge updates from trunk. check-in: 5fb0f836bd user: mistachkin tags: experimental | |
Changes
Changes to System.Data.SQLite/SQLiteDataReader.cs.
︙ | ︙ | |||
392 393 394 395 396 397 398 | private TypeAffinity VerifyType(int i, DbType typ) { TypeAffinity affinity = GetSQLiteType(_flags, i).Affinity; switch (affinity) { case TypeAffinity.Int64: | | | | | < > < > | 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 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 | private TypeAffinity VerifyType(int i, DbType typ) { TypeAffinity affinity = GetSQLiteType(_flags, i).Affinity; switch (affinity) { case TypeAffinity.Int64: if (typ == DbType.Int64) return affinity; if (typ == DbType.Int32) return affinity; if (typ == DbType.Int16) return affinity; if (typ == DbType.Byte) return affinity; if (typ == DbType.SByte) return affinity; if (typ == DbType.Boolean) return affinity; if (typ == DbType.DateTime) return affinity; if (typ == DbType.Double) return affinity; if (typ == DbType.Single) return affinity; if (typ == DbType.Decimal) return affinity; break; case TypeAffinity.Double: if (typ == DbType.Double) return affinity; if (typ == DbType.Single) return affinity; if (typ == DbType.Decimal) return affinity; if (typ == DbType.DateTime) return affinity; break; case TypeAffinity.Text: if (typ == DbType.String) return affinity; if (typ == DbType.Guid) return affinity; if (typ == DbType.DateTime) return affinity; if (typ == DbType.Decimal) return affinity; break; case TypeAffinity.Blob: if (typ == DbType.Guid) return affinity; if (typ == DbType.Binary) return affinity; if (typ == DbType.String) return affinity; break; } throw new InvalidCastException(); } /// <summary> |
︙ | ︙ | |||
1386 1387 1388 1389 1390 1391 1392 | _readingState = 1; // This command returned columns but no rows, so return true, but HasRows = false and Read() returns false } } // Ahh, we found a row-returning resultset eligible to be returned! _activeStatement = stmt; _fieldCount = fieldCount; | | | | 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 | _readingState = 1; // This command returned columns but no rows, so return true, but HasRows = false and Read() returns false } } // Ahh, we found a row-returning resultset eligible to be returned! _activeStatement = stmt; _fieldCount = fieldCount; _fieldIndexes = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase); _fieldTypeArray = new SQLiteType[PrivateVisibleFieldCount]; if ((_commandBehavior & CommandBehavior.KeyInfo) != 0) LoadKeyInfo(); return true; } } |
︙ | ︙ | |||
1474 1475 1476 1477 1478 1479 1480 | /// Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. /// </summary> /// <param name="flags">The flags associated with the parent connection object.</param> /// <param name="i">The index of the column to retrieve</param> /// <returns>A SQLiteType structure</returns> private SQLiteType GetSQLiteType(SQLiteConnectionFlags flags, int i) { | | < | < | | < | > | 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 | /// Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. /// </summary> /// <param name="flags">The flags associated with the parent connection object.</param> /// <param name="i">The index of the column to retrieve</param> /// <returns>A SQLiteType structure</returns> private SQLiteType GetSQLiteType(SQLiteConnectionFlags flags, int i) { SQLiteType typ = _fieldTypeArray[i]; if (typ == null) { // Initialize this column's field type instance typ = _fieldTypeArray[i] = new SQLiteType(); } // If not initialized, then fetch the declared column datatype and attempt to convert it // to a known DbType. if (typ.Affinity == TypeAffinity.Uninitialized) { typ.Type = SQLiteConvert.TypeNameToDbType( GetConnection(this), _activeStatement._sql.ColumnType( |
︙ | ︙ |