public void ToString_WithJoinTable_NoJTSelectColumns() { var schema = "fromSchema"; var name = "fromTable"; var tableName = new EntityName(schema, name); var fromColumn1 = "fromCol1"; var fromColumn2 = "fromCol2"; var fromAlias2 = "fromAlias2"; var columns = new IColumnName[] { new ColumnName(fromColumn1), new ColumnName(fromColumn2, fromAlias2) }; IFromTable fromTable = new FromTable(tableName, columns); IEntityName joinTableName = new EntityName("joinTable"); var joinTable = new JoinTable(joinTableName); fromTable.Join(joinTable); var selectClause = fromTable.ToString(); var testString = $"select [{schema}].[{name}].[{fromColumn1}], [{schema}].[{name}].[{fromColumn2}] as [{fromAlias2}]\r\nfrom [{schema}].[{name}]\r\n"; Assert.AreEqual(testString.TrimEnd(), selectClause.TrimEnd()); }
protected override Statement Prepare(IQueryContext context) { var selectStatement = new SelectStatement { SelectExpression = SelectExpression, OrderBy = OrderBy }; // check to see if the construct is the special one for // selecting the latest IDENTITY value from a table if (IsIdentitySelect(selectStatement.SelectExpression)) { selectStatement.SelectExpression.Columns.RemoveAt(0); FromTable fromTable = ((IList <FromTable>)selectStatement.SelectExpression.From.AllTables)[0]; var idExp = Expression.FunctionCall("identity", Expression.Constant(DataObject.String(fromTable.Name.ToString()))); selectStatement.SelectExpression.Columns.Add(new SelectColumn(idExp)); } if (selectStatement.SelectExpression.Into != null) { selectStatement.intoClause = selectStatement.SelectExpression.Into; } // Generate the TableExpressionFromSet hierarchy for the expression, TableExpressionFromSet fromSet = Planner.GenerateFromSet(selectStatement.SelectExpression, context.Connection); // Form the plan selectStatement.Plan = Planner.FormQueryPlan(context.Connection, selectStatement.SelectExpression, fromSet, selectStatement.OrderBy); return(selectStatement); }
public void ToString_WithJoinTable() { var schema = "fromSchema"; var name = "fromTable"; var tableName = new EntityName(schema, name); var fromColumn1 = "fromCol1"; var fromColumn2 = "fromCol2"; var fromAlias2 = "fromAlias2"; var columns = new IItemName[] { new ItemName(fromColumn1), new ColumnName(fromColumn2, fromAlias2) }; var fromTable = new FromTable(tableName, columns); IEntityName joinTableName = new EntityName("joinTable"); IItemName[] selectColumns = new IItemName[2] { new ItemName("joinTblCol1"), new ItemName("joinTblCol2") }; var joinTable = new JoinTable(joinTableName, selectColumns); fromTable.Join(joinTable); var selectClause = fromTable.GetSelectClause(); var testString = $"[{schema}].[{name}].[{fromColumn1}], [{schema}].[{name}].[{fromColumn2}] as [{fromAlias2}], {joinTableName}.{selectColumns[0]}, {joinTableName}.{selectColumns[1]}"; Assert.AreEqual(testString, selectClause); }
public void Constructor_NullTableNameArgument() { IItemName[] selectColumns = new IItemName[1] { new ColumnName("name", "alias") }; var table = new FromTable(null, selectColumns); }
public void Constructor_EmptyColumnsArgument() { IEntityName tableName = new EntityName("tableName"); IItemName[] selectColumns = new IItemName[0]; var table = new FromTable(tableName, selectColumns); }
public void Constructor_OneNullColumnArgument() { IEntityName tableName = new EntityName("tableName"); IItemName[] selectColumns = new IItemName[2] { new ColumnName("name", "alias"), null }; var table = new FromTable(tableName, selectColumns); }
private void LoadTableRows() { FromTable.SetNumberOfRows((nint)_from.Count, "default"); for (var i = 0; i < _from.Count; i++) { var elementRow = (FromRowController)FromTable.GetRowController(i); elementRow.FromLabel.SetText(_from[i].Name); } }
public void ToString_WithSchemaAndOneColumn() { var schema = "fromSchema"; var name = "fromTable"; var tableName = new EntityName(schema, name); var fromColumn1 = "fromCol1"; var columns = new IItemName[] { new ItemName(fromColumn1) }; var ft = new FromTable(tableName, columns); Assert.AreEqual($"select [{schema}].[{name}].[{fromColumn1}]\r\nfrom [{schema}].[{name}]\r\n", ft.ToString()); }
public void Constructor() { IEntityName tableName = new EntityName("tableName"); IItemName[] selectColumns = new IItemName[1] { new ColumnName("name", "alias") }; var table = new FromTable(tableName, selectColumns); Assert.AreEqual(tableName, table.TableName); Assert.AreEqual(selectColumns, table.Columns); Assert.IsNull(table.JoinTables); }
public void ToString_WithoutSchema() { var name = "fromTable"; var tableName = new EntityName(name); var fromColumn1 = "fromCol1"; var fromColumn2 = "fromCol2"; var fromAlias2 = "fromAlias2"; var columns = new IItemName[] { new ItemName(fromColumn1), new ColumnName(fromColumn2, fromAlias2) }; var ft = new FromTable(tableName, columns); Assert.AreEqual($"select [{name}].[{fromColumn1}], [{name}].[{fromColumn2}] as [{fromAlias2}]\r\nfrom [{name}]\r\n", ft.ToString()); }
public override string ToString() { return(FromTable.ToString() + " -> " + ToTable.ToString()); }
/// <summary> /// Adds a table as source to the query with a given alias. /// </summary> /// <param name="alias">The unique name alias of the table source within the clause.</param> /// <param name="table">The table source object to query from.</param> public void AddTable(string alias, FromTable table) { if (table == null) throw new ArgumentNullException("table"); if (!String.IsNullOrEmpty(alias)) { if (tableNames.Contains(alias)) throw new ArgumentException(String.Format("Duplicated table name {0} is FROM clause.", alias)); tableNames.Add(alias); } // Create a new unique key for this table string key = CreateNewKey(); table.UniqueKey = key; fromTables.Add(table); }
public static void Serialize(FromTable table, BinaryWriter writer) { if (table.IsSubQuery) { writer.Write((byte) 2); SqlExpression.Serialize(table.SubQuery, writer); } else { writer.Write((byte)1); writer.Write(table.Name); } bool hasAlias = !String.IsNullOrEmpty(table.Alias); if (hasAlias) { writer.Write((byte) 1); writer.Write(table.Alias); } else { writer.Write((byte)0); } bool hasUniqueKey = !String.IsNullOrEmpty(table.UniqueKey); if (hasUniqueKey) { writer.Write((byte) 1); writer.Write(table.UniqueKey); } else { writer.Write((byte)0); } }
public static FromTable Deserialize(BinaryReader reader) { string name = null; SqlQueryExpression query = null; var type = reader.ReadByte(); if (type == 1) { name = reader.ReadString(); } else if (type == 2) { query = (SqlQueryExpression) SqlExpression.Deserialize(reader); } else { throw new FormatException(); } string alias = null; var hasAlias = reader.ReadByte() == 1; if (hasAlias) alias = reader.ReadString(); FromTable table; if (type == 1) { table = new FromTable(name, alias); } else { table = new FromTable(query, alias); } var hasUniqueKey = reader.ReadByte() == 1; if (hasUniqueKey) table.UniqueKey = reader.ReadString(); return table; }
private void AddFromTable(ObjectName tableName, FromTable table) { if (tableName != null) { if (allTableNames.Contains(tableName)) throw new ApplicationException("Duplicate table name in FROM clause: " + tableName); allTableNames.Add(tableName); } // Create a new unique key for this table string key = CreateNewKey(); table.UniqueKey = key; // Add the table key to the join set JoinSet.AddTable(key); // Add to the alias def map fromTableList.Add(table); }
public void Constructor_NullColumnsArgument() { IEntityName tableName = new EntityName("tableName"); var table = new FromTable(tableName, null); }
public FromTable Prepare(IExpressionPreparer preparer) { var fromTable = new FromTable { Name = Name, Alias = Alias, UniqueKey = UniqueKey, IsSubQueryTable = IsSubQueryTable }; if (SubSelect != null) fromTable.SubSelect = SubSelect.Prepare(preparer); return fromTable; }