Exemplo n.º 1
0
        private void CreateTable(IQuery query)
        {
            var tableInfo = new TableInfo(tableName);

            tableInfo.AddColumn("id", PrimitiveTypes.Integer());
            tableInfo.AddColumn("name", PrimitiveTypes.String());

            query.Access().CreateObject(tableInfo);
        }
Exemplo n.º 2
0
        public static TableInfo Deserialize(BinaryReader reader, ITypeResolver typeResolver)
        {
            var version = reader.ReadInt32();

            if (version != 3)
            {
                throw new FormatException("Invalid version of the table info.");
            }

            var catName   = reader.ReadString();
            var schemName = reader.ReadString();
            var tableName = reader.ReadString();

            var objSchemaName = !String.IsNullOrEmpty(catName)
                                ? new ObjectName(new ObjectName(catName), schemName)
                                : new ObjectName(schemName);

            var objTableName = new ObjectName(objSchemaName, tableName);

            var tableInfo = new TableInfo(objTableName);

            var colCount = reader.ReadInt32();

            for (int i = 0; i < colCount; i++)
            {
                var columnInfo = ColumnInfo.Deserialize(reader, typeResolver);

                if (columnInfo != null)
                {
                    tableInfo.AddColumn(columnInfo);
                }
            }

            return(tableInfo);
        }
Exemplo n.º 3
0
        public static TemporaryTable SingleColumnTable(IContext database, string columnName, SqlType columnType)
        {
            var tableInfo = new TableInfo(new ObjectName("single"));

            tableInfo.AddColumn(columnName, columnType);
            tableInfo = tableInfo.AsReadOnly();
            return(new TemporaryTable(database, tableInfo));
        }
Exemplo n.º 4
0
        private static TableInfo MakeTableInfo(string tableName, IEnumerable <ColumnInfo> columns)
        {
            var tableInfo = new TableInfo(ObjectName.Parse(tableName));

            foreach (var columnInfo in columns)
            {
                tableInfo.AddColumn(columnInfo);
            }
            return(tableInfo);
        }
        public TableInfo Build()
        {
            if (String.IsNullOrEmpty(name))
            {
                throw new InvalidOperationException("A name for the table is required");
            }

            var tableInfo = new TableInfo(new ObjectName(new ObjectName(schema), name));

            foreach (var column in columns)
            {
                var columnInfo = column.Build();

                tableInfo.AddColumn(columnInfo);
            }

            return(tableInfo);
        }
Exemplo n.º 6
0
        public FunctionTable(ITable table, SqlExpression[] functionList, string[] columnNames, IRequest queryContext)
            : base(queryContext.Context)
        {
            // Make sure we are synchronized over the class.
            lock (typeof(FunctionTable)) {
                uniqueId = uniqueKeySeq;
                ++uniqueKeySeq;
            }

            uniqueId = (uniqueId & 0x0FFFFFFF) | 0x010000000;

            context = queryContext;

            ReferenceTable = table;
            varResolver    = table.GetVariableResolver();
            varResolver    = varResolver.ForRow(0);

            // Create a DataTableInfo object for this function table.
            funTableInfo = new TableInfo(FunctionTableName);

            expList = new SqlExpression[functionList.Length];
            expInfo = new byte[functionList.Length];

            // Create a new DataColumnInfo for each expression, and work out if the
            // expression is simple or not.
            for (int i = 0; i < functionList.Length; ++i)
            {
                var expr = functionList[i];
                // Examine the expression and determine if it is simple or not
                if (expr.IsConstant() && !expr.HasAggregate(context))
                {
                    // If expression is a constant, solve it
                    var result = expr.Evaluate(context, null);
                    if (result.ExpressionType != SqlExpressionType.Constant)
                    {
                        throw new InvalidOperationException();
                    }

                    expr       = result;
                    expList[i] = expr;
                    expInfo[i] = 1;
                }
                else
                {
                    // Otherwise must be dynamic
                    expList[i] = expr;
                    expInfo[i] = 0;
                }

                // Make the column info
                funTableInfo.AddColumn(columnNames[i], expr.ReturnType(context, varResolver));
            }

            // Make sure the table info isn't changed from this point on.
            funTableInfo = funTableInfo.AsReadOnly();

            // routine tables are the size of the referring table.
            rowCount = table.RowCount;

            // Set schemes to 'blind search'.
            SetupIndexes(DefaultIndexTypes.BlindSearch);
        }
Exemplo n.º 7
0
        public void OnTableCompositeCreate(IQuery systemQuery)
        {
            // SYSTEM.PKEY_INFO
            var tableInfo = new TableInfo(SystemSchema.PrimaryKeyInfoTableName);

            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("table", PrimitiveTypes.String());
            tableInfo.AddColumn("deferred", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);

            // SYSTEM.PKEY_COLS
            tableInfo = new TableInfo(SystemSchema.PrimaryKeyColumnsTableName);
            tableInfo.AddColumn("pk_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("column", PrimitiveTypes.String());
            tableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);

            // SYSTEM.FKEY_INFO
            tableInfo = new TableInfo(SystemSchema.ForeignKeyInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("table", PrimitiveTypes.String());
            tableInfo.AddColumn("ref_schema", PrimitiveTypes.String());
            tableInfo.AddColumn("ref_table", PrimitiveTypes.String());
            tableInfo.AddColumn("update_rule", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("delete_rule", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("deferred", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);

            // SYSTEM.FKEY_COLS
            tableInfo = new TableInfo(SystemSchema.ForeignKeyColumnsTableName);
            tableInfo.AddColumn("fk_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("fcolumn", PrimitiveTypes.String());
            tableInfo.AddColumn("pcolumn", PrimitiveTypes.String());
            tableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);

            // SYSTEM.UNIQUE_INFO
            tableInfo = new TableInfo(SystemSchema.UniqueKeyInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("table", PrimitiveTypes.String());
            tableInfo.AddColumn("deferred", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);

            // SYSTEM.UNIQUE_COLS
            tableInfo = new TableInfo(SystemSchema.UniqueKeyColumnsTableName);
            tableInfo.AddColumn("un_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("column", PrimitiveTypes.String());
            tableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);

            // SYSTEM.CHECK_INFO
            tableInfo = new TableInfo(SystemSchema.CheckInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("table", PrimitiveTypes.String());
            tableInfo.AddColumn("expression", PrimitiveTypes.String());
            tableInfo.AddColumn("deferred", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("serialized_expression", PrimitiveTypes.Binary());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);
        }