private void getStats()

in src/PDWScripter/PDWscripter.cs [1220:1292]


        private void getStats(Boolean GetStructure, Boolean SourceFromFile)
        {
            stats.Clear();
            statsClause = "";
            StringBuilder statspec = new StringBuilder();

            if (!SourceFromFile)
            {
                cmd.CommandText =
                "select s.name as stat_name, sc.stats_column_id, c.name, has_filter, filter_definition " +
                "from sys.stats s " +
                "join sys.stats_columns sc on s.stats_id = sc.stats_id and s.object_id = sc.object_id " +
                "join sys.columns c on c.column_id = sc.column_id  and c.object_id = sc.object_id " +
                "where s.object_id = (select object_id from sys.tables where schema_name(schema_id) + '.' + name = '" + sourceTable + "') " +
                "and user_created=1 " +
                "order by s.name, sc.stats_column_id ";

                rdr = cmd.ExecuteReader();

                if (rdr.HasRows)
                {
                    string statname = "";
                    StatDef statdef = null;
                    while (rdr.Read())
                    {


                        if (statname != rdr.GetString(rdr.GetOrdinal("stat_name")))
                        {
                            statname = rdr.GetString(rdr.GetOrdinal("stat_name"));
                            statdef = new StatDef(statname);
                            if (!(rdr.IsDBNull(rdr.GetOrdinal("filter_definition"))))
                                statdef.filter = rdr.GetString(rdr.GetOrdinal("filter_definition"));
                            stats.Add(statdef);
                            if (!GetStructure)
                            {
                                //no further steps needed
                            }
                            else
                            {
                                //adding stat definition to database structure
                                dbstruct.GetTable(sourceTable).statistics.Add(statdef);
                            }


                        }
                        statdef.cols.Add(new StatColumnDef(
                            rdr.GetInt32(rdr.GetOrdinal("stats_column_id")),
                            rdr.GetString(rdr.GetOrdinal("name"))
                            ));


                    }
                }

                rdr.Close();
                if (GetStructure)
                {
                    return;
                }
            }
            else
            {
                // retrieve stats from dbstruct from json file
                stats.AddRange(dbstruct.GetTable(sourceTable).statistics);
            }
            foreach (StatDef statdef in stats)
            {
                statspec.Append(buildCreateStatisticsText(statdef,destTable));

            }
            statsClause = statspec.ToString();
        }