protected override ISession CreateAdminSession(IDatabase database) { using (var session = base.CreateAdminSession(database)) { using (var query = session.CreateQuery()) { var tn1 = ObjectName.Parse("APP.test_table1"); var tableInfo1 = new TableInfo(tn1); tableInfo1.AddColumn(new ColumnInfo("id", PrimitiveTypes.Integer())); tableInfo1.AddColumn(new ColumnInfo("name", PrimitiveTypes.String())); tableInfo1.AddColumn(new ColumnInfo("date", PrimitiveTypes.DateTime())); query.CreateTable(tableInfo1); query.AddPrimaryKey(tn1, "id"); var tn2 = ObjectName.Parse("APP.test_table2"); var tableInfo2 = new TableInfo(tn2); tableInfo2.AddColumn(new ColumnInfo("id", PrimitiveTypes.Integer())); tableInfo2.AddColumn(new ColumnInfo("other_id", PrimitiveTypes.Integer())); tableInfo2.AddColumn(new ColumnInfo("count", PrimitiveTypes.Integer())); query.CreateTable(tableInfo2); query.AddPrimaryKey(tn2, "id"); query.AddForeignKey(tn2, new[] { "other_id" }, tn1, new[] { "id" }, ForeignKeyAction.Cascade, ForeignKeyAction.Cascade, null); query.Commit(); } } return(base.CreateAdminSession(database)); }
private TableInfo CreateSecondTable() { var tableInfo = new TableInfo(new ObjectName(new ObjectName("APP"), "codes")); tableInfo.AddColumn("person_id", PrimitiveTypes.Integer()); tableInfo.AddColumn("code", PrimitiveTypes.String()); tableInfo.AddColumn("registered", PrimitiveTypes.DateTime()); return(tableInfo); }
public void TestSetUp() { var tableInfo = new TableInfo(new ObjectName("test_table")); tableInfo.AddColumn("id", PrimitiveTypes.Numeric()); tableInfo.AddColumn("name", PrimitiveTypes.String()); tableInfo.AddColumn("date", PrimitiveTypes.DateTime()); var cornerTime = DateTimeOffset.UtcNow; var tmpTable = new TemporaryTable(tableInfo); AddRow(tmpTable, 1, "test1", cornerTime); AddRow(tmpTable, 2, "test2", cornerTime.AddSeconds(2)); AddRow(tmpTable, 3, "test3", cornerTime.AddSeconds(5)); tmpTable.BuildIndexes(); table = tmpTable; }
public static SqlType Deserialize(BinaryReader reader, ISqlTypeResolver typeResolver) { var typeCode = (SqlTypeCode)reader.ReadByte(); if (SqlBooleanType.IsBooleanType(typeCode)) { return(PrimitiveTypes.Boolean(typeCode)); } if (SqlDateTimeType.IsDateType(typeCode)) { return(PrimitiveTypes.DateTime(typeCode)); } if (typeCode == SqlTypeCode.DayToSecond) { return(PrimitiveTypes.DayToSecond()); } if (typeCode == SqlTypeCode.YearToMonth) { return(PrimitiveTypes.YearToMonth()); } if (SqlCharacterType.IsStringType(typeCode)) { var maxSize = reader.ReadInt32(); CultureInfo locale = null; var hasLocale = reader.ReadByte() == 1; if (hasLocale) { var name = reader.ReadString(); locale = new CultureInfo(name); } return(PrimitiveTypes.String(typeCode, maxSize, locale)); } if (SqlNumericType.IsNumericType(typeCode)) { var size = reader.ReadInt32(); var scale = reader.ReadInt32(); return(PrimitiveTypes.Numeric(typeCode, size, scale)); } if (SqlBinaryType.IsBinaryType(typeCode)) { var size = reader.ReadInt32(); return(PrimitiveTypes.Binary(typeCode, size)); } if (typeCode == SqlTypeCode.Type) { if (typeResolver == null) { throw new NotSupportedException("User-Defined types require a resolver context."); } // TODO: support type arguments var typeName = reader.ReadString(); return(typeResolver.Resolve(new SqlTypeResolveInfo(typeName))); } /* * TODO: * if (typeCode == SqlTypeCode.QueryPlan) * return new SqlQueryType(); */ if (typeCode == SqlTypeCode.Array) { var size = reader.ReadInt32(); return(new SqlArrayType(size)); } throw new NotSupportedException($"The type code '{typeCode}' does not support deserialization"); }
public static Field Date(SqlTypeCode typeCode, SqlDateTime value) { return(new Field(PrimitiveTypes.DateTime(typeCode), value)); }