Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
 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));
 }