Example #1
0
        protected virtual void ExtractFulltextIndexes()
        {
            string query = @"
  SELECT
    t.schema_id,
    fic.object_id,
    fi.unique_index_id,
    fc.name,
    fc.is_default,
    fic.column_id,
    fic.type_column_id,
    fl.name,
    i.name,
    fi.change_tracking_state,
    fi.crawl_start_date
  FROM {CATALOG}.sys.tables t
  INNER JOIN {CATALOG}.sys.fulltext_index_columns AS fic
    ON t.object_id = fic.object_id 
  INNER JOIN {CATALOG}.sys.fulltext_languages AS fl
    ON fic.language_id = fl.lcid
  INNER JOIN {CATALOG}.sys.fulltext_indexes fi
    ON fic.object_id = fi.object_id
  INNER JOIN {CATALOG}.sys.fulltext_catalogs fc
    ON fc.fulltext_catalog_id = fi.fulltext_catalog_id
  INNER JOIN {CATALOG}.sys.indexes AS i 
    ON fic.object_id = i.object_id
      AND fi.unique_index_id = i.index_id
  WHERE {SYSTABLE_FILTER}
    AND t.schema_id {SCHEMA_FILTER}
  ORDER BY
    t.schema_id,
    fic.object_id,
    fic.column_id";

            query = PerformReplacements(query);

            int            currentTableId = 0;
            ColumnResolver table          = null;
            FullTextIndex  index          = null;

            using (var cmd = Connection.CreateCommand(query))
                using (var reader = cmd.ExecuteReader())
                    while (reader.Read())
                    {
                        int nextTableId = reader.GetInt32(1);
                        if (currentTableId != nextTableId)
                        {
                            GetDataTable(nextTableId, ref currentTableId, ref table);
                            index = table.Table.CreateFullTextIndex(string.Empty);
                            index.FullTextCatalog = reader.GetBoolean(4)
              ? null
              : reader.GetString(3);
                            index.UnderlyingUniqueIndex = reader.GetString(8);
                            index.ChangeTrackingMode    = GetChangeTrackingMode(reader.GetString(9), reader.IsDBNull(10));
                        }
                        var column = index.CreateIndexColumn(table.GetColumn(reader.GetInt32(5)));
                        column.TypeColumn = (reader.IsDBNull(6)) ? null : table.GetColumn(reader.GetInt32(6));
                        column.Languages.Add(new Language(reader.GetString(7)));
                    }
        }
Example #2
0
        private void ReadFullTextIndexColumnData(DbDataReader reader, ExtractionContext context,
                                                 ref int currentTableId, ref ColumnResolver table, ref FullTextIndex index)
        {
            var nextTableId = reader.GetInt32(1);

            if (currentTableId != nextTableId)
            {
                GetDataTable(nextTableId, context, ref currentTableId, ref table);
                index = table.Table.CreateFullTextIndex(string.Empty);
                index.FullTextCatalog = reader.GetBoolean(4)
          ? null
          : reader.GetString(3);
                index.UnderlyingUniqueIndex = reader.GetString(8);
                index.ChangeTrackingMode    = GetChangeTrackingMode(reader.GetString(9), reader.IsDBNull(10));
            }

            var column = index.CreateIndexColumn(table.GetColumn(reader.GetInt32(5)));

            column.TypeColumn = (reader.IsDBNull(6)) ? null : table.GetColumn(reader.GetInt32(6));
            column.Languages.Add(new Language(reader.GetString(7)));
        }