private void DeparseHanaTableSerializeBehaviorNode(ScriptWriter writer, HanaTableSerializeBehaviorNode node, QsiScript script) { writer.Write("FOR ").Write(node.Type == HanaTableSerializeType.Json ? "JSON" : "XML"); if (node.Options.Count > 0) { writer.Write(" ("); writer.WriteJoin(", ", node.Options, (w, n) => { w.Write(IdentifierUtility.Escape(n.Key, EscapeQuotes.Single, EscapeBehavior.TwoTime)); w.Write('='); w.Write(IdentifierUtility.Escape(n.Value, EscapeQuotes.Single, EscapeBehavior.TwoTime)); }); writer.Write(')'); } if (!string.IsNullOrEmpty(node.ReturnType)) { writer.Write(" RETURNS ").Write(node.ReturnType); } }
private void DeparseHanaTableSystemTimeBehaviorNode(ScriptWriter writer, HanaTableSystemTimeBehaviorNode node, QsiScript script) { writer.Write("FOR SYSTEM_TIME "); if (node.FromTo.HasValue) { writer.Write("FROM "); writer.Write(IdentifierUtility.Escape(node.FromTo.Value.Item1, EscapeQuotes.Single, EscapeBehavior.TwoTime)); writer.Write("TO "); writer.Write(IdentifierUtility.Escape(node.FromTo.Value.Item2, EscapeQuotes.Single, EscapeBehavior.TwoTime)); } else if (node.Between.HasValue) { writer.Write("BETWEEN "); writer.Write(IdentifierUtility.Escape(node.Between.Value.Item1, EscapeQuotes.Single, EscapeBehavior.TwoTime)); writer.Write("AND "); writer.Write(IdentifierUtility.Escape(node.Between.Value.Item2, EscapeQuotes.Single, EscapeBehavior.TwoTime)); } else { writer.Write("AS OF "); writer.Write(IdentifierUtility.Escape(node.Time, EscapeQuotes.Single, EscapeBehavior.TwoTime)); } }
private void DeparseHanaViewDefinitionNode(ScriptWriter writer, HanaViewDefinitionNode node, QsiScript script) { writer.Write("CREATE VIEW ").Write(node.Identifier); if (!string.IsNullOrEmpty(node.Comment)) { writer.Write(" COMMENT "); writer.Write(IdentifierUtility.Escape(node.Comment, EscapeQuotes.Single, EscapeBehavior.TwoTime)); } if (!node.Columns.IsEmpty) { writer.WriteSpace(); writer.Write('('); DeparseTreeNode(writer, node.Columns.Value, script); writer.Write(')'); } if (!node.Parameters.IsEmpty) { writer.WriteSpace().Write(node.Parameters.Value.Text); } writer.Write(" AS "); DeparseTreeNode(writer, node.Source.Value, script); if (!node.Associations.IsEmpty) { writer.WriteSpace().Write(node.Associations.Value.Text); } if (!node.Masks.IsEmpty) { writer.WriteSpace().Write(node.Masks.Value.Text); } if (!node.ExpressionMacros.IsEmpty) { writer.WriteSpace().Write(node.ExpressionMacros.Value.Text); } if (!node.Annotation.IsEmpty) { writer.WriteSpace().Write(node.Annotation.Value.Text); } if (node.StructuredPrivilegeCheck) { writer.WriteSpace().Write("WITH STRUCTURED PRIVILEGE CHECK"); } if (!node.Cache.IsEmpty) { writer.WriteSpace().Write(node.Cache.Value.Text); } if (!node.Force) { writer.WriteSpace().Write("FORCE"); } if (!node.CheckOption) { writer.WriteSpace().Write("WITH CHECK OPTION"); } if (!node.DdlOnly) { writer.WriteSpace().Write("WITH DDL ONLY"); } if (!node.ReadOnly) { writer.WriteSpace().Write("WITH READ ONLY"); } if (!node.Anonymization.IsEmpty) { writer.WriteSpace().Write(node.Anonymization.Value.Text); } }
private void DeparseHanaTableApplicationTimeBehaviorNode(ScriptWriter writer, HanaTableApplicationTimeBehaviorNode node, QsiScript script) { writer.Write("FOR APPLICATION_TIME AS OF "); writer.Write(IdentifierUtility.Escape(node.Time, EscapeQuotes.Single, EscapeBehavior.TwoTime)); }