private void DeparseLockingNode(ScriptWriter writer, MySqlLockingNode node) { if (node.TableLockType == MySqlTableLockType.ShareMode) { writer.Write("LOCK IN SHARE MODE"); } else { writer.Write("FOR "); writer.Write(node.TableLockType == MySqlTableLockType.Update ? "UPDATE" : "SHARE"); if (!ListUtility.IsNullOrEmpty(node.Tables)) { writer.WriteSpace(); writer.Write("OF "); writer.WriteJoin(", ", node.Tables); } if (node.RowLockType.HasValue) { writer.WriteSpace(); writer.Write(node.RowLockType == MySqlRowLockType.SkipLocked ? "SKIP LOCKED" : "NOWAIT"); } } }
protected override void DeparseDerivedTableNode(ScriptWriter writer, IQsiDerivedTableNode node, QsiScript script) { base.DeparseDerivedTableNode(writer, node, script); if (node is not MySqlDerivedTableNode mysqlNode) { return; } if (!mysqlNode.ProcedureAnalyse.IsEmpty) { var procedureAnalyse = mysqlNode.ProcedureAnalyse.Value; writer.WriteSpace(); writer.Write("PROCEDURE ANALYSE ("); writer.Write(procedureAnalyse.MaxElements); if (procedureAnalyse.MaxMemory.HasValue) { writer.Write(", "); writer.Write(procedureAnalyse.MaxMemory.Value); } writer.Write(')'); } if (mysqlNode.Lockings?.Count > 0) { writer.WriteSpace(); writer.WriteJoin(" ", mysqlNode.Lockings, DeparseLockingNode); } }
private void DeparseImpalaGroupingExpressionNode(ScriptWriter writer, ImpalaGroupingExpressionNode node, QsiScript script) { writer.Write("GROUP BY "); bool parens = false; switch (node.GroupingSetsType) { case ImpalaGroupingSetsType.Sets: writer.Write("GROUPING SETS("); parens = true; break; case ImpalaGroupingSetsType.Cube: writer.Write("CUBE("); parens = true; break; case ImpalaGroupingSetsType.Rollup: writer.Write("ROLLUP("); parens = true; break; } writer.WriteJoin(", ", node.Items, (_, item) => DeparseTreeNode(writer, item, script)); if (parens) { writer.Write(')'); } }
private void DeparseImpalaValuesTableNode(ScriptWriter writer, ImpalaValuesTableNode node, QsiScript script) { writer.Write("VALUES "); writer.WriteJoin(", ", node.Rows, (w, row) => { DeparseTreeNode(w, row, script); }); if (!node.Order.IsEmpty) { writer.WriteSpace(); DeparseTreeNode(writer, node.Order.Value, script); } if (!node.Order.IsEmpty) { writer.WriteSpace(); DeparseTreeNode(writer, node.Order.Value, script); } if (!node.Limit.IsEmpty) { writer.WriteSpace(); DeparseTreeNode(writer, node.Limit.Value, script); } }
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 DeparseHanaAssociationExpressionNode(ScriptWriter writer, HanaAssociationExpressionNode node, QsiScript script) { writer.WriteJoin(".", node.References, (w, r) => DeparseTreeNode(w, r, script)); }