private void CreateTable(IQuery query) { var tableInfo = new TableInfo(tableName); tableInfo.AddColumn("id", PrimitiveTypes.Integer()); tableInfo.AddColumn("name", PrimitiveTypes.String()); query.Access().CreateObject(tableInfo); }
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); }
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)); }
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); }
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); }
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); }