GetStringValueUppercase() 공개 메소드

for MySqlToken.Identifier , MySqlToken.SysVar
public GetStringValueUppercase ( ) : string
리턴 string
예제 #1
0
        /// <exception cref="System.SqlSyntaxErrorException" />
        public static ISqlStatement Parse(string sql, MySqlLexer lexer, string charset)
        {
            try
            {
                ISqlStatement stmt = null;
                var isEof = true;
                var exprParser = new MySqlExprParser(lexer, charset);
                switch (lexer.Token())
                {
                    case MySqlToken.KwDesc:
                    case MySqlToken.KwDescribe:
                    {
                        stmt = new MySqlDalParser(lexer, exprParser).Desc();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwSelect:
                    case MySqlToken.PuncLeftParen:
                    {
                        stmt = new MySqlDmlSelectParser(lexer, exprParser).SelectUnion();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwDelete:
                    {
                        stmt = new MySqlDmlDeleteParser(lexer, exprParser).Delete();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwInsert:
                    {
                        stmt = new MySqlDmlInsertParser(lexer, exprParser).Insert();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwReplace:
                    {
                        stmt = new MySqlDmlReplaceParser(lexer, exprParser).Replace();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwUpdate:
                    {
                        stmt = new MySqlDmlUpdateParser(lexer, exprParser).Update();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwCall:
                    {
                        stmt = new MySqlDmlCallParser(lexer, exprParser).Call();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwSet:
                    {
                        stmt = new MySqlDalParser(lexer, exprParser).Set();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwShow:
                    {
                        stmt = new MySqlDalParser(lexer, exprParser).Show();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwAlter:
                    case MySqlToken.KwCreate:
                    case MySqlToken.KwDrop:
                    case MySqlToken.KwRename:
                    {
                        stmt = new MySqlDdlParser(lexer, exprParser).DdlStmt();
                        isEof = IsEOFedDdl(stmt);
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.KwRelease:
                    {
                        stmt = new MySqlMtsParser(lexer).Release();
                        goto stmtSwitch_break;
                    }

                    case MySqlToken.Identifier:
                    {
                        var si = SpecialIdentifier.None;
                        if ((si = SpecialIdentifiers[lexer.GetStringValueUppercase()]) != SpecialIdentifier.None)
                        {
                            switch (si)
                            {
                                case SpecialIdentifier.Truncate:
                                {
                                    stmt = new MySqlDdlParser(lexer, exprParser).Truncate();
                                    goto stmtSwitch_break;
                                }

                                case SpecialIdentifier.Savepoint:
                                {
                                    stmt = new MySqlMtsParser(lexer).Savepoint();
                                    goto stmtSwitch_break;
                                }

                                case SpecialIdentifier.Rollback:
                                {
                                    stmt = new MySqlMtsParser(lexer).Rollback();
                                    goto stmtSwitch_break;
                                }
                            }
                        }
                        goto default;
                    }

                    default:
                    {
                        throw new SqlSyntaxErrorException("sql is not a supported statement");
                    }
                }
                stmtSwitch_break:
                ;
                if (isEof)
                {
                    while (lexer.Token() == MySqlToken.PuncSemicolon)
                    {
                        lexer.NextToken();
                    }
                    if (lexer.Token() != MySqlToken.Eof)
                    {
                        throw new SqlSyntaxErrorException("Sql syntax error!");
                    }
                }
                return stmt;
            }
            catch (Exception e)
            {
                throw new SqlSyntaxErrorException(BuildErrorMsg(e, lexer, sql), e);
            }
        }
예제 #2
0
 public virtual void TestSystemVar()
 {
     var sut = new MySqlLexer("@@abc  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("abc", sut.GetStringValue());
     Assert.AreEqual("ABC", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@`abc`  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`abc`", sut.GetStringValue());
     Assert.AreEqual("`ABC`", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@```abc`  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("```abc`", sut.GetStringValue());
     Assert.AreEqual("```ABC`", sut.GetStringValueUppercase());
     sut = new MySqlLexer("@@``  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("``", sut.GetStringValue());
     Assert.AreEqual("``", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@`a```  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`a```", sut.GetStringValue());
     Assert.AreEqual("`A```", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@````  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("````", sut.GetStringValue());
     Assert.AreEqual("````", sut.GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@`~!````@#$%^&*()``_+=-1{}[]\";:'<>,./?|\\`  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`~!````@#$%^&*()``_+=-1{}[]\";:'<>,./?|\\`", sut
         .GetStringValue());
     Assert.AreEqual("`~!````@#$%^&*()``_+=-1{}[]\";:'<>,./?|\\`", sut
         .GetStringValueUppercase());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@global.var1  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("global", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("var1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@'abc'  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual(string.Empty, sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut = new MySqlLexer("@@\"abc\"  ");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual(string.Empty, sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.LiteralChars, sut.Token());
     Assert.AreEqual("'abc'", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
     sut =
         new MySqlLexer(
             "@@.  /*@@abc*/@@`abc''\"\\@@!%*&+_abcQ`//@@_1.  @@$#\n@@$var.-- @@a\t\n@@system_var:@@a`b`?");
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual(string.Empty, sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("`abc''\"\\@@!%*&+_abcQ`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.OpSlash, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("_1", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("$", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("$var", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncDot, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("system_var", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.PuncColon, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.SysVar, sut.Token());
     Assert.AreEqual("a", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Identifier, sut.Token());
     Assert.AreEqual("`b`", sut.GetStringValue());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.QuestionMark, sut.Token());
     sut.NextToken();
     Assert.AreEqual(MySqlToken.Eof, sut.Token());
 }