Exemple #1
0
        private void CreateTable()
        {
            IColumnFactory columnFactory = DbContext.PowerPlant.CreateColumnFactory();
            List <IColumn> columns       = new List <IColumn>
            {
                columnFactory.CreateInstance(ColumnTypeName.Int64, "id", 0, 20, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Int, "seq_no", 0, 15, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Varchar, "val", 50, false, "' '", "Danish_Norwegian_CI_AS")
            };
            TableDefinition tableDefinition = new TableDefinition(TestTable, columns, "");

            DbSchema.CreateTable(tableDefinition);
        }
Exemple #2
0
        private void CreateTestableWithNull(string testTable)
        {
            IColumnFactory columnFactory = DbContext.PowerPlant.CreateColumnFactory();
            List <IColumn> columns       = new List <IColumn>
            {
                columnFactory.CreateInstance(ColumnTypeName.Int64, "id", 0, 20, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Int, "seq_no", 0, 15, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Blob, "val", true, "")
            };
            TableDefinition tableDefinition = new TableDefinition(testTable, columns, "");

            DbSchema.CreateTable(tableDefinition);
            Commands.ExecuteNonQuery($"insert into {testTable} (id, seq_no) values (0, 1)");
        }
Exemple #3
0
        protected virtual void CreateTestTable1Row3Columns1Value(IColumn col, string testValue = "NULL")
        {
            IColumnFactory columnFactory = DbContext.PowerPlant.CreateColumnFactory();
            List <IColumn> columns       = new List <IColumn>
            {
                columnFactory.CreateInstance(ColumnTypeName.Int64, "id", 0, 20, 0, false, false, "0", ""),
                col,
                columnFactory.CreateInstance(ColumnTypeName.Varchar, "val", 50, false, "' '", "Danish_Norwegian_CI_AS")
            };
            TableDefinition tableDefinition = new TableDefinition(TestTable, columns, "");

            DbSchema.CreateTable(tableDefinition);
            string tmp = string.Format("insert into {0} (id, test_col, val) values (9, {1}, 'control value')", TestTable, testValue);

            Commands.ExecuteNonQuery(tmp);
        }
Exemple #4
0
        private void CreateViewTables()
        {
            DbSchema.DropTable(Asysview);
            DbSchema.DropTable(Aagview);
            IColumnFactory columnFactory = DbContext.PowerPlant.CreateColumnFactory();
            List <IColumn> columns       = new List <IColumn>
            {
                columnFactory.CreateInstance(ColumnTypeName.Int, "priority", 0, 15, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Varchar, "query", 4000, false, "' '", "Danish_Norwegian_CI_AS"),
                columnFactory.CreateInstance(ColumnTypeName.Char, "status", 1, false, "' '", "Danish_Norwegian_CI_AS"),
                columnFactory.CreateInstance(ColumnTypeName.Char, "table_name", 25, false, "' '", "Danish_Norwegian_CI_AS")
            };

            DbSchema.CreateTable(new TableDefinition(Aagview, columns, ""));
            columns.Add(columnFactory.CreateInstance(ColumnTypeName.Char, "db_name", 10, false, "' '", "Danish_Norwegian_CI_AS"));
            DbSchema.CreateTable(new TableDefinition(Asysview, columns, ""));
        }
        protected void TestColumn(ColumnTypeName type, int length, int prec, int scale, bool isNullable, string def, string collation)
        {
            List <IColumn> columns = new List <IColumn> {
                ColumnFactory.CreateInstance(type, "col1", length, prec, scale, isNullable, false, def, collation)
            };
            ITableDefinition expectedTableDefinition = PowerPlant.CreateTableDefinition(TableName, columns, "");

            DbSchema.CreateTable(expectedTableDefinition);
            var columnTypeConverter = DbContext.PowerPlant.CreateColumnTypeConverter(ConversionFileForWrite);
            ITableDefinition retrievedTableDefinition = DbSchema.GetTableDefinition(columnTypeConverter, TableName);

            AssertTableDefinition(expectedTableDefinition, retrievedTableDefinition);
        }
Exemple #6
0
        private void CreateTestableWithCharCol(string testTable)
        {
            IColumnFactory columnFactory = DbContext.PowerPlant.CreateColumnFactory();
            List <IColumn> columns       = new List <IColumn>
            {
                columnFactory.CreateInstance(ColumnTypeName.Char, "char_col", 20, false, "' '", "Danish_Norwegian_CI_AS")
            };
            TableDefinition tableDefinition = new TableDefinition(testTable, columns, "");

            DbSchema.CreateTable(tableDefinition);
            string stmt = $"insert into {testTable} (char_col) values ('A  ')";

            Commands.ExecuteNonQuery(stmt);
        }
Exemple #7
0
        private static void ReadColumn(IColumnFactory columnFactory, IColumnTypeConverter columnsTypeConverter, List <IColumn> columns, XmlNode col)
        {
            string colName    = col.Attributes["Name"].InnerText;
            string type       = col["Type"].InnerText.ToLower();
            bool   isNullable = Convert.ToBoolean(col["IsNullable"].InnerText);
            string def        = col["Default"].InnerText;

            Dictionary <string, object> colDetails = ReadColumnDetails(col);
            var  length          = colDetails.ContainsKey("Length") ? Convert.ToInt32(colDetails["Length"]) : 0;
            var  prec            = colDetails.ContainsKey("Prec") ? Convert.ToInt32(colDetails["Prec"]) : 0;
            var  scale           = colDetails.ContainsKey("Scale") ? Convert.ToInt32(colDetails["Scale"]) : 0;
            var  collation       = colDetails.ContainsKey("Collation") ? (string)colDetails["Collation"] : "";
            bool isIdentity      = colDetails.ContainsKey("IsIdentity") && Convert.ToBoolean(col["IsIdentity"]);
            var  destinationType = columnsTypeConverter.GetDestinationType(type, ref length, ref prec, ref scale).ColumnTypeName(length);

            columns.Add(columnFactory.CreateInstance(destinationType, colName, length, prec, scale, isNullable, isIdentity, def, collation));
        }
Exemple #8
0
        public override ITableDefinition GetTableDefinition(IColumnTypeConverter columnTypeConverter, string tableName)
        {
            string selectStmt = "";

            selectStmt += "SELECT c.name, " + "\n";
            selectStmt += "       t.name AS t_name, " + "\n";
            selectStmt += "       isnull(c.max_length, 0) as length, " + "\n";
            selectStmt += "       isnull(c.precision, 0) as prec, " + "\n";
            selectStmt += "       isnull(c.scale, 0) as scale, " + "\n";
            selectStmt += "       c.is_nullable, " + "\n";
            selectStmt += "       convert(varchar(256), isnull(c.collation_name, '')) as collation, " + "\n";
            selectStmt += "       isnull(object_definition(c.default_object_id), '') as def, " + "\n";
            selectStmt += "       c.is_identity " + "\n";
            selectStmt += "FROM   sys.columns c " + "\n";
            selectStmt += "       JOIN sys.types t " + "\n";
            selectStmt += "         ON c.user_type_id = t.user_type_id " + "\n";
            selectStmt += string.Format("WHERE  c.object_id = Object_id('{0}') ", tableName) + "\n";
            selectStmt += "ORDER  BY c.column_id ";

            IColumnFactory columnFactory      = DbContext.PowerPlant.CreateColumnFactory();
            List <IColumn> columns            = new List <IColumn>();
            bool           tableHasBlobColumn = false;
            IDataCursor    cursor             = null;

            try
            {
                cursor = DbContext.PowerPlant.CreateDataCursor();
                IDataReader reader = cursor.ExecuteReader(selectStmt);
                while (reader.Read())
                {
                    string name   = reader.GetString(0);
                    string type   = reader.GetString(1);
                    int    length = reader.GetInt16(2);
                    if (length != -1 && (type == "nvarchar" || type == "nchar"))
                    {
                        length /= 2;
                    }
                    int prec  = reader.GetByte(3);
                    int scale = reader.GetByte(4);
                    if (scale != 0 && type == "datetime2")
                    {
                        prec = 0;
                    }
                    bool           isNullable = reader.GetBoolean(5);
                    string         collation  = reader.GetString(6);
                    string         def        = reader.GetString(7);
                    bool           isIdentity = reader.GetBoolean(8);
                    string         sourceType = type.AddParameters();
                    ColumnTypeName colType    = columnTypeConverter.GetDestinationType(sourceType, ref length, ref prec, ref scale).ColumnTypeName(length);
                    if (colType == ColumnTypeName.Blob || colType == ColumnTypeName.OldBlob)
                    {
                        tableHasBlobColumn = true;
                    }
                    columns.Add(
                        columnFactory.CreateInstance(
                            colType,
                            name,
                            length,
                            prec,
                            scale,
                            isNullable,
                            isIdentity,
                            def,
                            collation)
                        );
                }
            }
            catch (Exception ex)
            {
                throw new ADatabaseException("ERROR when Get TableDefinition: " + selectStmt, ex);
            }
            finally
            {
                if (cursor != null)
                {
                    cursor.Close();
                }
            }

            ITableDefinition tableDefinition = DbContext.PowerPlant.CreateTableDefinition(tableName, columns, GetSegmentName(tableName));

            tableDefinition.HasBlobColumn = tableHasBlobColumn;

            tableDefinition.Columns.RemoveAll(c => c.Name == "agrtid");

            return(tableDefinition);
        }
Exemple #9
0
        private void CreateTestableWithAllTypes(string testTable)
        {
            IColumnFactory columnFactory = DbContext.PowerPlant.CreateColumnFactory();
            List <IColumn> columns       = new List <IColumn>
            {
                columnFactory.CreateInstance(ColumnTypeName.Bool, "bool_col", 0, 20, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Char, "char_col", 2, false, "' '", "Danish_Norwegian_CI_AS"),
                columnFactory.CreateInstance(ColumnTypeName.DateTime, "date_col", false, "convert(datetime,'19000101',112)"),
                columnFactory.CreateInstance(ColumnTypeName.Float, "float_col", 0, 30, 8, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Guid, "guid_col", true, ""),
                columnFactory.CreateInstance(ColumnTypeName.Int, "int_col", 0, 15, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Int8, "int8_col", 0, 3, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Int16, "int16_col", 0, 5, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Int64, "int64_col", 0, 20, 0, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.LongText, "longtext_col", 0, false, "' '", "Danish_Norwegian_CI_AS"),
                columnFactory.CreateInstance(ColumnTypeName.Money, "money_col", 0, 30, 3, false, false, "0", ""),
                columnFactory.CreateInstance(ColumnTypeName.Blob, "blob_col", true, ""),
                columnFactory.CreateInstance(ColumnTypeName.NVarchar, "nvarchar_col", 50, false, "' '", "Danish_Norwegian_CI_AS"),
                columnFactory.CreateInstance(ColumnTypeName.Varchar, "varchar_col", 50, false, "' '", "Danish_Norwegian_CI_AS")
            };
            TableDefinition tableDefinition = new TableDefinition(testTable, columns, "");

            DbSchema.CreateTable(tableDefinition);
            string stmt =
                $"insert into {testTable} (bool_col, char_col, date_col, float_col, guid_col, int_col, int8_col, int16_col, int64_col, longtext_col, money_col, blob_col, nvarchar_col, varchar_col) ";

            if (DbContext.DbType == DbTypeName.SqlServer)
            {
                stmt += "values (1,'NO', 'Feb 23 1900', 123.12345678, '3f2504e0-4f89-11d3-9a0c-0305e82c3301', 1234567890, 150, 12345, 123456789012345, N'Very long text with æøå', 123.123, convert(varbinary, 'Lots of bytes'), N'A unicode ﺽ string', 'A varchar string')";
            }
            else
            {
                stmt += "values (1,'NO', to_date('Feb 23 1900', 'Mon DD YYYY'), 123.12345678, hextoraw('3f2504e04f8911d39a0c0305e82c3301'), 1234567890, 150, 12345, 123456789012345, 'Very long text with æøå', 123.123, utl_raw.cast_to_raw('Lots of bytes'), 'A unicode ﺽ string', 'A varchar string')";
            }
            Commands.ExecuteNonQuery(stmt);
        }
Exemple #10
0
        private List <IColumn> CreateTwoColumns()
        {
            List <IColumn> columns = new List <IColumn>
            {
                _columnFactory.CreateInstance(ColumnTypeName.NVarchar, "val", 50, false, "' '", "Danish_Norwegian_CI_AS"),
                _columnFactory.CreateInstance(ColumnTypeName.Int64, "id", false, "0")
            };

            return(columns);
        }