public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { Translator = translator; NodeFactory = nodeFactory; AddFunction(newNodes, "to_number", CreateFunctionParameterNodeWithSubNodes(subNodes[1])); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { Translator = translator; NodeFactory = nodeFactory; AddFunction(newNodes, "getdate", new List <IASTNode>()); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // TO_COUNTER('9') => convert(bigint, '0') ) Translator = translator; NodeFactory = nodeFactory; AddFunction(newNodes, "convert", CreateFunctionParameterNode("bigint"), CreateFunctionParameterNodeWithSubNodes(subNodes[1])); }
public static IATranslator CreateInstance(DbTypeName dbType, IASTNodeFactory nodeFactory) { if (dbType == DbTypeName.Oracle) { return(new OracleTranslator(nodeFactory)); } return(new SqlServerTranslator(nodeFactory)); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // TO_CHAR(123) => CONVERT(nvarchar, 123) Translator = translator; NodeFactory = nodeFactory; AddFunction(newNodes, "convert", CreateFunctionParameterNode("nvarchar"), CreateFunctionParameterNodeWithSubNodes(subNodes[1])); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // TO_int('123') => CONVERT(int, '123') Translator = translator; NodeFactory = nodeFactory; AddFunction(newNodes, "convert", CreateFunctionParameterNode("int"), CreateFunctionParameterNodeWithSubNodes(subNodes[1])); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // GUID2STR(guid_col) => lower(guid_col) Translator = translator; NodeFactory = nodeFactory; AddFunction(newNodes, "lower", CreateFunctionParameterNodeWithSubNodes(subNodes[1])); }
public override IASTNode Parse(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { while (tokens.CurrentToken != null && !aParser.Acceptable(tokens, ASTEndParenthesesNode.KeyWord) && !aParser.Acceptable(tokens, ASTCommaNode.KeyWord)) { IASTNode node = nodeFactory.CreateNode(tokens.CurrentToken.Text, tokens.CurrentToken.AddSpace); node.Parse(nodeFactory, aParser, tokens); SubNodes.Add(node); } return(this); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // MOD(3, 5) => (3) % (5) Translator = translator; NodeFactory = nodeFactory; WrapParameterInParentheses(newNodes, subNodes[1]); newNodes.Add(nodeFactory.CreateNode("%")); WrapParameterInParentheses(newNodes, subNodes[3]); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // Translated to to_date('19000101 00:00:00', 'yyyymmdd hh24:mi:ss') Translator = translator; NodeFactory = nodeFactory; List <IASTNode> functionParameters = new List <IASTNode> { nodeFactory.CreateNode("'19000101 00:00:00'", false), nodeFactory.CreateNode("'yyyymmdd hh24:mi:ss'", false) }; AddFunction(newNodes, "to_date", functionParameters); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // MONTHADD(3, today) => add_months(today, 3) Translator = translator; NodeFactory = nodeFactory; List <IASTNode> functionParameters = new List <IASTNode> { CreateFunctionParameterNodeWithSubNodes(subNodes[3]), CreateFunctionParameterNodeWithSubNodes(subNodes[1]) }; AddFunction(newNodes, "add_months", functionParameters); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // IFNULL(somecol, 0) => nvl(somecol, 0) Translator = translator; NodeFactory = nodeFactory; List <IASTNode> functionParameters = new List <IASTNode> { CreateFunctionParameterNodeWithSubNodes(subNodes[1]), CreateFunctionParameterNodeWithSubNodes(subNodes[3]) }; AddFunction(newNodes, "nvl", functionParameters); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // MOD(3, 5) translated to: mod(floor(3), floor(5)) Translator = translator; NodeFactory = nodeFactory; IASTNode newParam1 = NodeFactory.CreateFunctionParameterNode(); AddFunction(newParam1.SubNodes, "floor", CreateFunctionParameterNodeWithSubNodes(subNodes[1])); IASTNode newParam2 = NodeFactory.CreateFunctionParameterNode(); AddFunction(newParam2.SubNodes, "floor", CreateFunctionParameterNodeWithSubNodes(subNodes[3])); AddFunction(newNodes, "mod", newParam1, newParam2); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // Translated to convert(datetime, '19000101 00:00:00:000', 9) Translator = translator; NodeFactory = nodeFactory; List <IASTNode> functionParameters = new List <IASTNode> { nodeFactory.CreateNode("datetime", false), nodeFactory.CreateNode("'19000101 00:00:00:000'", false), nodeFactory.CreateNode("9", false) }; AddFunction(newNodes, "convert", functionParameters); }
public override IASTNode Parse(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { tokens.GetNextToken(); while (tokens.CurrentToken != null && !aParser.Acceptable(tokens, ASTEndParenthesesNode.KeyWord)) { IASTNode newNode = aParser.NodeFactory.CreateNode(tokens.CurrentToken.Text, tokens.CurrentToken.AddSpace); newNode.Parse(aParser.NodeFactory, aParser, tokens); SubNodes.Add(newNode); } if (!aParser.Acceptable(tokens, ASTEndParenthesesNode.KeyWord)) { throw new AParserException("Didn't find closing parentheses"); } SubNodes.Add(aParser.Accept(tokens, ASTEndParenthesesNode.KeyWord)); return(this); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // The guid2str function is pretty ugly in Oracle. A call like guid2str(guid_col) becomes: // lower(substr(guid_col,1,8) || '-' || substr(guid_col,9,4) || '-' || substr(guid_col,13,4) || '-' || substr(guid_col,17,4) || '-' || substr(guid_col,21,12)) Translator = translator; NodeFactory = nodeFactory; IASTNode newNode = NodeFactory.CreateNode("lower", false); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTStartParenthesesNode.KeyWord, false)); newNode.SubNodes.Add(NodeFactory.CreateFunctionParameterNode()); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTEndParenthesesNode.KeyWord)); CreateNodesForGuidParts(newNode.SubNodes[1].SubNodes, subNodes[1]); newNodes.Add(newNode); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // TO_FLOAT('123') => convert(dec(28,8) , '123') Translator = translator; NodeFactory = nodeFactory; IASTNode newNode = NodeFactory.CreateNode("convert", false); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTStartParenthesesNode.KeyWord, false)); newNode.SubNodes.Add(NodeFactory.CreateFunctionParameterNode()); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTCommaNode.KeyWord)); newNode.SubNodes.Add(CreateFunctionParameterNodeWithSubNodes(subNodes[1])); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTEndParenthesesNode.KeyWord)); AddFunction(newNode.SubNodes[1].SubNodes, "dec", CreateFunctionParameterNode("28"), CreateFunctionParameterNode("8")); newNodes.Add(newNode); }
protected void ParseParameters(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { SubNodes.Add(aParser.Accept(tokens, ASTStartParenthesesNode.KeyWord)); while (tokens.CurrentToken != null && !aParser.Acceptable(tokens, ASTEndParenthesesNode.KeyWord)) { IASTNode node = nodeFactory.CreateFunctionParameterNode(tokens.CurrentToken.AddSpace); node.Parse(nodeFactory, aParser, tokens); SubNodes.Add(node); if (aParser.Acceptable(tokens, ASTCommaNode.KeyWord)) { SubNodes.Add(aParser.Accept(tokens, ASTCommaNode.KeyWord)); } } SubNodes.Add(aParser.Accept(tokens, ASTEndParenthesesNode.KeyWord)); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // TO_FLOAT('123') => cast(decode('123', ' ', 0.00, '123') as number(30,8) ) Translator = translator; NodeFactory = nodeFactory; IASTNode newNode = NodeFactory.CreateNode("cast", false); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTStartParenthesesNode.KeyWord, false)); newNode.SubNodes.Add(NodeFactory.CreateFunctionParameterNode()); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTEndParenthesesNode.KeyWord)); IASTNode parameter = CreateFunctionParameterNodeWithSubNodes(subNodes[1]); AddDecodeFunction(newNode.SubNodes[1].SubNodes, parameter); newNodes.Add(newNode); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // DAYADD(3, day_col) => dateadd(dd, 3, day_col) Translator = translator; NodeFactory = nodeFactory; IASTNode unitParameter = NodeFactory.CreateFunctionParameterNode(); unitParameter.SubNodes.Add(NodeFactory.CreateNode("dd", false)); List <IASTNode> functionParameters = new List <IASTNode> { unitParameter, CreateFunctionParameterNodeWithSubNodes(subNodes[1]), CreateFunctionParameterNodeWithSubNodes(subNodes[3]) }; AddFunction(newNodes, "dateadd", functionParameters); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // MONTHADD(3, today) => dateadd(mm, 3, today) Translator = translator; NodeFactory = nodeFactory; IASTNode mmParameter = NodeFactory.CreateFunctionParameterNode(); mmParameter.SubNodes.Add(NodeFactory.CreateNode("mm", false)); List <IASTNode> functionParameters = new List <IASTNode> { mmParameter, CreateFunctionParameterNodeWithSubNodes(subNodes[1]), CreateFunctionParameterNodeWithSubNodes(subNodes[3]) }; AddFunction(newNodes, "dateadd", functionParameters); }
public SqlServerTranslator(IASTNodeFactory nodeFactory) { NodeFactory = nodeFactory; NodeTranslators = new Dictionary <string, IASTNodeTranslator> { { ASTDayAddNode.KeyWord, new SqlServerDayAddTranslator() }, { ASTGetDateNode.KeyWord, new SqlServerGetDateTranslator() }, { ASTGuid2StrNode.KeyWord, new SqlServerGuid2StrTranslator() }, { ASTIfNullNode.KeyWord, new SqlServerIfNullTranslator() }, { ASTMaxDateNode.KeyWord, new SqlServerMaxDateTranslator() }, { ASTMinDateNode.KeyWord, new SqlServerMinDateTranslator() }, { ASTModNode.KeyWord, new SqlServerModTranslator() }, { ASTMonthAddNode.KeyWord, new SqlServerMonthAddTranslator() }, { ASTToCharNode.KeyWord, new SqlServerToCharTranslator() }, { ASTToCounterNode.KeyWord, new SqlServerToCounterTranslator() }, { ASTToFloatNode.KeyWord, new SqlServerToFloatTranslator() }, { ASTToIntNode.KeyWord, new SqlServerToIntTranslator() } }; }
public virtual IASTNode Parse(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { tokens.GetNextToken(); return(this); }
public AParser(IASTNodeFactory nodeFactory) { NodeFactory = nodeFactory; }
public override IASTNode Parse(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { aParser.Accept(tokens, Text); ParseParameters(nodeFactory, aParser, tokens); return(this); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { IASTNode newNode = nodeFactory.CreateNode(ASTStartParenthesesNode.KeyWord, false); newNode.SubNodes.Add(nodeFactory.CreateFunctionParameterNode()); newNode.SubNodes.Add(nodeFactory.CreateNode("+")); newNode.SubNodes.Add(nodeFactory.CreateFunctionParameterNode()); newNode.SubNodes.Add(nodeFactory.CreateNode(ASTEndParenthesesNode.KeyWord)); newNodes.Add(newNode); translator.TranslateSubNodes(newNode.SubNodes[0].SubNodes, subNodes[1]); translator.TranslateSubNodes(newNode.SubNodes[2].SubNodes, subNodes[3]); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { newNodes.Add(nodeFactory.CreateNode("sysdate")); }
public abstract void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory);
public static IAParser CreateInstance(IASTNodeFactory nodeFactory) { return(new AParser(nodeFactory)); }