private SourceRemoteTableRowset(string serverName, string databaseName, SchemaName schemaName, TableName tableName, RowsetAlias rowsetAlias): base(rowsetAlias) {
			Debug.Assert(tableName != null);
			if (!string.IsNullOrEmpty(serverName)) {
				this.serverName = new Identifier(serverName);
			}
			this.databaseName = new Identifier(databaseName);
			this.schemaName = schemaName;
			this.tableName = tableName;
		}
		public MergeStatement(QueryOptions queryOptions, TopExpression topExpression, DestinationRowset destinationRowset, RowsetAlias destinationAlias, SourceRowset sourceRowset, Predicate predicate, Sequence<MergeWhenMatched> mergeWhenMatcheds, OutputClause outputClause, QueryHint queryHint) {
			this.queryOptions = queryOptions;
			this.topExpression = topExpression;
			this.destinationRowset = destinationRowset;
			this.destinationAlias = destinationAlias;
			this.sourceRowset = sourceRowset;
			this.predicate = predicate;
			whenMatchedCollection = mergeWhenMatcheds.ToList();
			this.outputClause = outputClause;
			this.queryHint = queryHint;
		}
		public SourceNestedSelectRowset(SelectQuery select, RowsetAlias rowsetAlias): base(rowsetAlias) {
			Debug.Assert(select != null);
			this.@select = select;
		}
		public SourceVariableNodesRowset(VariableName variableName, NamedFunction functionCall, RowsetAlias rowsetAlias): base(functionCall, rowsetAlias) {
			this.variableName = variableName;
		}
		public SourceTableRowset(Qualified<SchemaName, TableName> tableName, RowsetAlias rowsetAlias, TableHintGroup tableHints): base(rowsetAlias) {
			Debug.Assert(tableName != null);
			this.tableName = tableName;
			this.tableHints = tableHints;
		}
		//		[Rule("<SourceRowset> ::= <SchemaName> ~'.' <TableName> ~'.' <ColumnName> ~'.' <FunctionCall> <RowsetAlias>")]
		//		public SourceTableColumnNodesRowset(SchemaName schemaName, TableName tableName, ColumnName columnName, ExpressionFunctionCall functionCall, RowsetAlias rowsetAlias): this(new Qualified<SchemaName, TableName>(schemaName, tableName), columnName, functionCall, rowsetAlias) {}

		private SourceTableColumnNodesRowset(Qualified<SchemaName, TableName> tableNameQualified, ColumnName columnName, NamedFunction functionCall, RowsetAlias rowsetAlias): base(functionCall, rowsetAlias) {
			Debug.Assert(tableNameQualified != null);
			Debug.Assert(columnName != null);
			this.tableNameQualified = tableNameQualified;
			this.columnName = columnName;
		}
		public SourceTableColumnNodesRowset(SchemaName tableName, TableName columnName, NamedFunction functionCall, RowsetAlias rowsetAlias): this(new Qualified<SchemaName, TableName>(null, new TableName(tableName.Value)), new ColumnName(columnName.Value), functionCall, rowsetAlias) {
			tableNameQualified.LockOverride(); // TableName here is usually an alias to a table, so don't prefix this
		}
		public SourceValuesRowset(Sequence<Sequence<Expression>> valuesList, RowsetAlias rowsetAlias): base(rowsetAlias) {
			foreach (Sequence<Expression> expressions in valuesList) {
				this.valuesList.Add(expressions.ToArray());
			}
			Debug.Assert(this.valuesList.Count > 0);
		}
Example #9
0
		protected SourceRowset(RowsetAlias rowsetAlias) {
			this.rowsetAlias = rowsetAlias;
		}
		public SourceFunctionRowset(NamedFunction function, RowsetAlias rowsetAlias): base(rowsetAlias) {
			Debug.Assert(function != null);
			this.function = function;
		}
		public SourceFunctionRowset(SchemaName schemaName, NamedFunction function, RowsetAlias rowsetAlias): this(function.QualifiedWith(schemaName), rowsetAlias) {}
		public SourceTableVariableRowset(VariableName tableName, RowsetAlias rowsetAlias): base(rowsetAlias) {
			Debug.Assert(tableName != null);
			this.tableName = tableName;
		}
		protected SourceNodesRowset(NamedFunction functionCall, RowsetAlias rowsetAlias): base(rowsetAlias) {
			Debug.Assert(functionCall != null);
			functionCall.FunctionName.LockOverride();
			this.functionCall = functionCall;
		}
		public SourceTableVariableNodesRowset(VariableName tableName, ColumnName columnName, NamedFunction functionCall, RowsetAlias rowsetAlias): base(functionCall, rowsetAlias) {
			Debug.Assert(tableName != null);
			Debug.Assert(columnName != null);
			this.tableName = tableName;
			this.columnName = columnName;
		}
		public SourceRemoteTableRowset(SchemaName serverName, TableName databaseName, SchemaName schemaName, TableName tableName, RowsetAlias rowsetAlias): this(serverName.Value, databaseName.Value, schemaName, tableName, rowsetAlias) {}
		public SourceRemoteTableRowset(SchemaName databaseName, TableName schemaName, TableName tableName, RowsetAlias rowsetAlias): this(string.Empty, databaseName.Value, new SchemaName(schemaName.Value), tableName, rowsetAlias) {}