in src/PDWScripter/PDWscripter.cs [524:585]
private void getSourceColumnsGlobal()
{
List<ColumnDef> columns = new List<ColumnDef>();
string TableKey = "";
string SchemaName;
string TableName;
string tableKeyPrevious = "";
TableSt TableStruct = new TableSt();
cmd.CommandText =
@"select schema_name(tbl.schema_id) as SchemaName,tbl.Name as TableName, c.column_id, c.name, t.name as type, c.max_length, c.precision,
c.scale, c.is_nullable, d.distribution_ordinal, c.collation_name, ISNULL('DEFAULT ' + dc.definition, '') as DefaultConstraint
from sys.columns c
join sys.pdw_column_distribution_properties d
on c.object_id = d.object_id and c.column_id = d.column_id
join sys.types t on t.user_type_id = c.user_type_id
left join sys.default_constraints dc on c.default_object_id = dc.object_id and c.object_id = dc.parent_object_id
inner join sys.tables tbl on tbl.object_id = c.object_id and tbl.type = 'U'
order by schema_name(tbl.schema_id),tbl.name, Column_Id ";
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
SchemaName = rdr.GetString(rdr.GetOrdinal("SchemaName"));
TableName = rdr.GetString(rdr.GetOrdinal("TableName"));
TableKey = SchemaName + "." + TableName;
if (TableKey != tableKeyPrevious)
{
if (columns.Count != 0 && (TableStruct != null))
{
TableStruct.Columns = columns;
}
TableStruct = this.dbstruct.GetTable(TableKey);
columns = new List<ColumnDef>();
tableKeyPrevious = TableKey;
}
columns.Add(new ColumnDef(
rdr.GetInt32(rdr.GetOrdinal("column_id")),
rdr.GetString(rdr.GetOrdinal("name")),
rdr.GetString(rdr.GetOrdinal("type")),
rdr.GetInt16(rdr.GetOrdinal("max_length")),
rdr.GetByte(rdr.GetOrdinal("precision")),
rdr.GetByte(rdr.GetOrdinal("scale")),
rdr.GetBoolean(rdr.GetOrdinal("is_nullable")),
rdr.GetByte(rdr.GetOrdinal("distribution_ordinal")),
rdr.GetString(rdr.GetOrdinal("DefaultConstraint")),
rdr["collation_name"] == DBNull.Value ? string.Empty : (string)rdr["collation_name"]
));
}
if (columns.Count != 0 && (TableStruct != null))
{
TableStruct.Columns = columns;
}
rdr.Close();
}