private void AddColumnAliasToQueryBlock(string columnName, string alias, OracleReference objectReference) { var parentObjectReferences = new HashSet <OracleDataObjectReference>(); var columnReferences = objectReference.Owner.AllColumnReferences .Where(c => (c.ValidObjectReference == objectReference || (c.Owner != null && c.ValidObjectReference?.QueryBlocks.FirstOrDefault() == c.Owner) || (c.ValidObjectReference as OracleDataObjectReference)?.IncludeInnerReferences.Any(r => r == objectReference) == true) && String.Equals(c.NormalizedName, columnName)); foreach (var columnReference in columnReferences) { _executionContext.SegmentsToReplace.Add( new TextSegment { IndextStart = columnReference.ColumnNode.SourcePosition.IndexStart, Length = columnReference.ColumnNode.SourcePosition.Length, Text = alias }); if (columnReference.SelectListColumn != null && columnReference.SelectListColumn.IsDirectReference && columnReference.SelectListColumn.AliasNode == columnReference.ColumnNode) { parentObjectReferences.UnionWith(GetParentObjectReferences(objectReference.Owner)); } } foreach (var parentReference in parentObjectReferences) { AddColumnAliasToQueryBlock(columnName, alias, parentReference); } }
private static bool IsBooleanLiteral(OracleReference columnReference) { if (columnReference.ObjectNode != null) { return(false); } return(String.Equals(columnReference.NormalizedName, "\"TRUE\"") || String.Equals(columnReference.NormalizedName, "\"FALSE\"")); }
private bool TryBuildSchemaTooltip(OracleReference reference) { if (reference.OwnerNode == _terminal) { BuildSchemaTooltip(reference.Container.SemanticModel.DatabaseModel); } return(ToolTip != null); }
private static ColumnDescriptionItem GetExpandedColumn(OracleReference objectReference, OracleColumn column, bool isPseudocolumn) { var nullable = objectReference?.SchemaObject.GetTargetSchemaObject() is OracleView ? (bool?)null : column.Nullable; return (new ColumnDescriptionItem { OwnerIdentifier = objectReference?.FullyQualifiedObjectName ?? OracleObjectIdentifier.Empty, ColumnName = OracleCodeCompletionProvider.GetPrettyColumnName(column.Name), DataType = column.FullTypeName, Nullable = nullable, IsPseudocolumn = isPseudocolumn, IsHidden = column.Hidden }); }
private static ColumnDescriptionItem GetExpandedColumn(OracleReference objectReference, OracleColumn column, bool isPseudocolumn) { var nullable = objectReference?.SchemaObject.GetTargetSchemaObject() is OracleView ? (bool?)null : column.Nullable; return new ColumnDescriptionItem { OwnerIdentifier = objectReference?.FullyQualifiedObjectName ?? OracleObjectIdentifier.Empty, ColumnName = OracleCodeCompletionProvider.GetPrettyColumnName(column.Name), DataType = column.FullTypeName, Nullable = nullable, IsPseudocolumn = isPseudocolumn, IsHidden = column.Hidden }; }
private bool TryBuildSchemaTooltip(OracleReference reference) { if (reference.OwnerNode == _terminal) { BuildSchemaTooltip(reference.Container.SemanticModel.DatabaseModel); } return ToolTip != null; }
private static IEnumerable <TerminalUsage> GetModelClauseAndPivotTableReferences(OracleReference columnReference, bool onlyAliasOrigin) { var usages = new List <TerminalUsage>(); if (columnReference.Owner == null) { return(usages); } var normalizedName = columnReference.NormalizedName; var modelClauseAndPivotTableColumnReferences = columnReference.Owner.AllColumnReferences .Where(c => c.ColumnNodeObjectReferences.Count == 1 && c != columnReference && c.Placement.In(StatementPlacement.Model, StatementPlacement.PivotClause) && String.Equals(c.SelectListColumn?.NormalizedName, normalizedName)); foreach (var innerReference in modelClauseAndPivotTableColumnReferences) { var definition = new TerminalUsage { Terminal = innerReference.SelectListColumn.AliasNode, Option = DisplayOptions.Definition }; usages.Add(definition); if (!innerReference.SelectListColumn.IsDirectReference) { continue; } if (innerReference.SelectListColumn.HasExplicitAlias) { var usage = new TerminalUsage { Terminal = innerReference.ColumnNode, Option = DisplayOptions.Usage }; usages.Add(usage); } var objectReference = (OracleDataObjectReference)innerReference.ColumnNodeObjectReferences.First(); foreach (var innerObjectReference in objectReference.IncludeInnerReferences) { usages.AddRange(GetChildQueryBlockColumnReferences(innerObjectReference, innerReference, onlyAliasOrigin)); } } if (columnReference.Owner.ModelReference != null) { foreach (var modelColumn in columnReference.Owner.ModelReference.ColumnDefinitions.Where(c => !c.IsDirectReference && c.AliasNode != null && String.Equals(c.NormalizedName, normalizedName))) { var definition = new TerminalUsage { Terminal = modelColumn.AliasNode, Option = DisplayOptions.Definition }; usages.Add(definition); } } return(usages); }
private void AddColumnAliasToQueryBlock(string columnName, string alias, OracleReference objectReference) { var parentObjectReferences = new HashSet<OracleDataObjectReference>(); var columnReferences = objectReference.Owner.AllColumnReferences .Where(c => (c.ValidObjectReference == objectReference || (c.Owner != null && c.ValidObjectReference?.QueryBlocks.FirstOrDefault() == c.Owner) || (c.ValidObjectReference as OracleDataObjectReference)?.IncludeInnerReferences.Any(r => r == objectReference) == true) && String.Equals(c.NormalizedName, columnName)); foreach (var columnReference in columnReferences) { _executionContext.SegmentsToReplace.Add( new TextSegment { IndextStart = columnReference.ColumnNode.SourcePosition.IndexStart, Length = columnReference.ColumnNode.SourcePosition.Length, Text = alias }); if (columnReference.SelectListColumn != null && columnReference.SelectListColumn.IsDirectReference && columnReference.SelectListColumn.AliasNode == columnReference.ColumnNode) { parentObjectReferences.UnionWith(GetParentObjectReferences(objectReference.Owner)); } } foreach (var parentReference in parentObjectReferences) { AddColumnAliasToQueryBlock(columnName, alias, parentReference); } }
private static IEnumerable<TerminalUsage> GetModelClauseAndPivotTableReferences(OracleReference columnReference, bool onlyAliasOrigin) { var usages = new List<TerminalUsage>(); if (columnReference.Owner == null) { return usages; } var normalizedName = columnReference.NormalizedName; var modelClauseAndPivotTableColumnReferences = columnReference.Owner.AllColumnReferences .Where(c => c.ColumnNodeObjectReferences.Count == 1 && c != columnReference && c.Placement.In(StatementPlacement.Model, StatementPlacement.PivotClause) && String.Equals(c.SelectListColumn?.NormalizedName, normalizedName)); foreach (var innerReference in modelClauseAndPivotTableColumnReferences) { var definition = new TerminalUsage { Terminal = innerReference.SelectListColumn.AliasNode, Option = DisplayOptions.Definition }; usages.Add(definition); if (!innerReference.SelectListColumn.IsDirectReference) { continue; } if (innerReference.SelectListColumn.HasExplicitAlias) { var usage = new TerminalUsage { Terminal = innerReference.ColumnNode, Option = DisplayOptions.Usage }; usages.Add(usage); } var objectReference = (OracleDataObjectReference)innerReference.ColumnNodeObjectReferences.First(); foreach (var innerObjectReference in objectReference.IncludeInnerReferences) { usages.AddRange(GetChildQueryBlockColumnReferences(innerObjectReference, innerReference, onlyAliasOrigin)); } } if (columnReference.Owner.ModelReference != null) { foreach (var modelColumn in columnReference.Owner.ModelReference.ColumnDefinitions.Where(c => !c.IsDirectReference && c.AliasNode != null && String.Equals(c.NormalizedName, normalizedName))) { var definition = new TerminalUsage { Terminal = modelColumn.AliasNode, Option = DisplayOptions.Definition }; usages.Add(definition); } } return usages; }