Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improve handling of base catalog/table name in GetSchemaTable, pursuant to [baf42ee135]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | tkt-baf42ee135 |
Files: | files | file ages | folders |
SHA1: |
9f02226408326bdb57c08fdcf5f2556f |
User & Date: | mistachkin 2018-03-08 14:14:57.073 |
Context
2018-03-08
| ||
16:09 | Add tests for ticket [baf42ee135] and get them passing. check-in: d0b0a52b9a user: mistachkin tags: tkt-baf42ee135 | |
14:14 | Improve handling of base catalog/table name in GetSchemaTable, pursuant to [baf42ee135]. check-in: 9f02226408 user: mistachkin tags: tkt-baf42ee135 | |
2018-03-02
| ||
13:42 | Final updates for release 1.0.108.0. check-in: 1dfd85913a user: mistachkin tags: trunk, release, release-1.0.108.0 | |
Changes
Changes to System.Data.SQLite/SQLiteDataReader.cs.
︙ | ︙ | |||
1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 | temp = columnToParent[n].DatabaseName; if (String.IsNullOrEmpty(temp) == false) row[SchemaTableOptionalColumn.BaseCatalogName] = temp; string dataType = null; // If we have a table-bound column, extract the extra information from it if (String.IsNullOrEmpty(strColumn) == false) { string collSeq = null; bool bNotNull = false; bool bPrimaryKey = false; bool bAutoIncrement = false; string[] arSize; // Get the column meta data _command.Connection._sql.ColumnMetaData( | > > > > > > > > > > | | | 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 | temp = columnToParent[n].DatabaseName; if (String.IsNullOrEmpty(temp) == false) row[SchemaTableOptionalColumn.BaseCatalogName] = temp; string dataType = null; // If we have a table-bound column, extract the extra information from it if (String.IsNullOrEmpty(strColumn) == false) { string baseCatalogName = null; if (row[SchemaTableOptionalColumn.BaseCatalogName] != DBNull.Value) baseCatalogName = (string)row[SchemaTableOptionalColumn.BaseCatalogName]; string baseTableName = null; if (row[SchemaTableColumn.BaseTableName] != DBNull.Value) baseTableName = (string)row[SchemaTableColumn.BaseTableName]; string collSeq = null; bool bNotNull = false; bool bPrimaryKey = false; bool bAutoIncrement = false; string[] arSize; // Get the column meta data _command.Connection._sql.ColumnMetaData( baseCatalogName, baseTableName, strColumn, ref dataType, ref collSeq, ref bNotNull, ref bPrimaryKey, ref bAutoIncrement); if (bNotNull || bPrimaryKey) row[SchemaTableColumn.AllowDBNull] = false; row[SchemaTableColumn.IsKey] = bPrimaryKey && CountParents(parentToColumns) <= 1; row[SchemaTableOptionalColumn.IsAutoIncrement] = bAutoIncrement; |
︙ | ︙ | |||
1526 1527 1528 1529 1530 1531 1532 | } } if (wantDefaultValue) { // Determine the default value for the column, which sucks because we have to query the schema for each column using (SQLiteCommand cmdTable = new SQLiteCommand(HelperMethods.StringFormat(CultureInfo.InvariantCulture, "PRAGMA [{0}].TABLE_INFO([{1}])", | | | | | | | | | | | | 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 | } } if (wantDefaultValue) { // Determine the default value for the column, which sucks because we have to query the schema for each column using (SQLiteCommand cmdTable = new SQLiteCommand(HelperMethods.StringFormat(CultureInfo.InvariantCulture, "PRAGMA [{0}].TABLE_INFO([{1}])", baseCatalogName, baseTableName ), _command.Connection)) using (DbDataReader rdTable = cmdTable.ExecuteReader()) { // Find the matching column while (rdTable.Read()) { if (String.Compare((string)row[SchemaTableColumn.BaseColumnName], rdTable.GetString(1), StringComparison.OrdinalIgnoreCase) == 0) { if (rdTable.IsDBNull(4) == false) row[SchemaTableOptionalColumn.DefaultValue] = rdTable[4]; break; } } } } // Determine IsUnique properly, which is a pain in the butt! if (wantUniqueInfo) { if (baseCatalogName != strCatalog || baseTableName != strTable) { strCatalog = baseCatalogName; strTable = baseTableName; tblIndexes = _command.Connection.GetSchema("Indexes", new string[] { baseCatalogName, null, baseTableName, null }); } foreach (DataRow rowIndexes in tblIndexes.Rows) { tblIndexColumns = _command.Connection.GetSchema("IndexColumns", new string[] { baseCatalogName, null, baseTableName, (string)rowIndexes["INDEX_NAME"], null }); foreach (DataRow rowColumnIndex in tblIndexColumns.Rows) { if (String.Compare(SQLiteConvert.GetStringOrNull(rowColumnIndex["COLUMN_NAME"]), strColumn, StringComparison.OrdinalIgnoreCase) == 0) { |
︙ | ︙ |