SYMBOL INDEX (812 symbols across 57 files) FILE: advisor/explainer.go function checkExplainSelectType (line 42) | func checkExplainSelectType(exp *database.ExplainInfo) { function checkExplainAccessType (line 67) | func checkExplainAccessType(exp *database.ExplainInfo) { function checkExplainRef (line 113) | func checkExplainRef(exp *database.ExplainInfo) { function checkExplainRows (line 130) | func checkExplainRows(exp *database.ExplainInfo) { function checkExplainFiltered (line 150) | func checkExplainFiltered(exp *database.ExplainInfo) { function ExplainAdvisor (line 172) | func ExplainAdvisor(exp *database.ExplainInfo) map[string]Rule { function DigestExplainText (line 214) | func DigestExplainText(text string) { FILE: advisor/explainer_test.go function TestDigestExplainText (line 25) | func TestDigestExplainText(t *testing.T) { FILE: advisor/heuristic.go method RuleOK (line 41) | func (q *Query4Audit) RuleOK() Rule { method RuleImplicitAlias (line 46) | func (q *Query4Audit) RuleImplicitAlias() Rule { method RuleStarAlias (line 65) | func (q *Query4Audit) RuleStarAlias() Rule { method RuleSameAlias (line 77) | func (q *Query4Audit) RuleSameAlias() Rule { method RulePrefixLike (line 105) | func (q *Query4Audit) RulePrefixLike() Rule { method RuleEqualLike (line 128) | func (q *Query4Audit) RuleEqualLike() Rule { method RuleImplicitConversion (line 161) | func (idxAdv *IndexAdvisor) RuleImplicitConversion() Rule { function timeFormatCheck (line 376) | func timeFormatCheck(t string) bool { method RuleNoWhere (line 385) | func (q *Query4Audit) RuleNoWhere() Rule { method RuleOrderByRand (line 418) | func (q *Query4Audit) RuleOrderByRand() Rule { method RuleOffsetLimit (line 440) | func (q *Query4Audit) RuleOffsetLimit() Rule { method RuleGroupByConst (line 464) | func (q *Query4Audit) RuleGroupByConst() Rule { method RuleGroupByConst (line 484) | func (idxAdv *IndexAdvisor) RuleGroupByConst() Rule { method RuleOrderByConst (line 506) | func (q *Query4Audit) RuleOrderByConst() Rule { method RuleOrderByConst (line 527) | func (idxAdv *IndexAdvisor) RuleOrderByConst() Rule { method RuleDiffGroupByOrderBy (line 549) | func (q *Query4Audit) RuleDiffGroupByOrderBy() Rule { method RuleExplicitOrderBy (line 620) | func (q *Query4Audit) RuleExplicitOrderBy() Rule { method RuleOrderByExpr (line 638) | func (q *Query4Audit) RuleOrderByExpr() Rule { method RuleGroupByExpr (line 701) | func (q *Query4Audit) RuleGroupByExpr() Rule { method RuleTblCommentCheck (line 764) | func (q *Query4Audit) RuleTblCommentCheck() Rule { method RuleSelectStar (line 788) | func (q *Query4Audit) RuleSelectStar() Rule { method RuleInsertColDef (line 811) | func (q *Query4Audit) RuleInsertColDef() Rule { method RuleAddDefaultValue (line 824) | func (q *Query4Audit) RuleAddDefaultValue() Rule { method RuleColCommentCheck (line 879) | func (q *Query4Audit) RuleColCommentCheck() Rule { method RuleIPString (line 920) | func (q *Query4Audit) RuleIPString() Rule { method RuleDateNotQuote (line 942) | func (q *Query4Audit) RuleDateNotQuote() Rule { method RuleSQLCalcFoundRows (line 989) | func (q *Query4Audit) RuleSQLCalcFoundRows() Rule { method RuleCommaAnsiJoin (line 1002) | func (q *Query4Audit) RuleCommaAnsiJoin() Rule { method RuleDupJoin (line 1029) | func (q *Query4Audit) RuleDupJoin() Rule { method RuleImpossibleOuterJoin (line 1060) | func (idxAdv *IndexAdvisor) RuleImpossibleOuterJoin() Rule { method RuleNoDeterministicGroupby (line 1110) | func (q *Query4Audit) RuleNoDeterministicGroupby() Rule { method RuleNoDeterministicLimit (line 1152) | func (q *Query4Audit) RuleNoDeterministicLimit() Rule { method RuleUpdateDeleteWithLimit (line 1169) | func (q *Query4Audit) RuleUpdateDeleteWithLimit() Rule { method RuleUpdateDeleteWithOrderby (line 1181) | func (q *Query4Audit) RuleUpdateDeleteWithOrderby() Rule { method RuleUpdateSetAnd (line 1193) | func (q *Query4Audit) RuleUpdateSetAnd() Rule { method RuleImpossibleWhere (line 1211) | func (q *Query4Audit) RuleImpossibleWhere() Rule { method RuleMeaninglessWhere (line 1276) | func (q *Query4Audit) RuleMeaninglessWhere() Rule { method RuleLoadFile (line 1386) | func (q *Query4Audit) RuleLoadFile() Rule { method RuleMultiCompare (line 1413) | func (q *Query4Audit) RuleMultiCompare() Rule { method RuleCreateOnUpdate (line 1434) | func (q *Query4Audit) RuleCreateOnUpdate() Rule { method RuleUpdateOnUpdate (line 1477) | func (idxAdv *IndexAdvisor) RuleUpdateOnUpdate() Rule { method RuleStandardINEQ (line 1511) | func (q *Query4Audit) RuleStandardINEQ() Rule { method RuleUseKeyWord (line 1524) | func (q *Query4Audit) RuleUseKeyWord() Rule { method RulePluralWord (line 1566) | func (q *Query4Audit) RulePluralWord() Rule { method RuleMultiBytesWord (line 1607) | func (q *Query4Audit) RuleMultiBytesWord() Rule { method RuleInvisibleUnicode (line 1623) | func (q *Query4Audit) RuleInvisibleUnicode() Rule { method RuleInsertSelect (line 1646) | func (q *Query4Audit) RuleInsertSelect() Rule { method RuleInsertOnDup (line 1659) | func (q *Query4Audit) RuleInsertOnDup() Rule { method RuleInSubquery (line 1672) | func (q *Query4Audit) RuleInSubquery() Rule { method RuleSubqueryDepth (line 1687) | func (q *Query4Audit) RuleSubqueryDepth() Rule { method RuleSubQueryLimit (line 1697) | func (q *Query4Audit) RuleSubQueryLimit() Rule { method RuleSubQueryFunctions (line 1722) | func (q *Query4Audit) RuleSubQueryFunctions() Rule { method RuleUNIONLimit (line 1748) | func (q *Query4Audit) RuleUNIONLimit() Rule { method RuleMultiValueAttribute (line 1779) | func (q *Query4Audit) RuleMultiValueAttribute() Rule { method RuleAddDelimiter (line 1792) | func (q *Query4Audit) RuleAddDelimiter() Rule { method RuleRecursiveDependency (line 1805) | func (q *Query4Audit) RuleRecursiveDependency() Rule { method RuleImpreciseDataType (line 1841) | func (q *Query4Audit) RuleImpreciseDataType() Rule { method RuleValuesInDefinition (line 1903) | func (q *Query4Audit) RuleValuesInDefinition() Rule { method RuleIndexAttributeOrder (line 1941) | func (q *Query4Audit) RuleIndexAttributeOrder() Rule { method RuleNullUsage (line 1974) | func (q *Query4Audit) RuleNullUsage() Rule { method RuleStringConcatenation (line 1987) | func (q *Query4Audit) RuleStringConcatenation() Rule { method RuleSysdate (line 2044) | func (q *Query4Audit) RuleSysdate() Rule { method RuleCountConst (line 2061) | func (q *Query4Audit) RuleCountConst() Rule { method RuleSumNPE (line 2075) | func (q *Query4Audit) RuleSumNPE() Rule { method RuleForbiddenTrigger (line 2093) | func (q *Query4Audit) RuleForbiddenTrigger() Rule { method RuleForbiddenProcedure (line 2118) | func (q *Query4Audit) RuleForbiddenProcedure() Rule { method RuleForbiddenFunction (line 2143) | func (q *Query4Audit) RuleForbiddenFunction() Rule { method RulePatternMatchingUsage (line 2168) | func (q *Query4Audit) RulePatternMatchingUsage() Rule { method RuleSpaghettiQueryAlert (line 2181) | func (q *Query4Audit) RuleSpaghettiQueryAlert() Rule { method RuleReduceNumberOfJoin (line 2190) | func (q *Query4Audit) RuleReduceNumberOfJoin() Rule { method RuleDistinctUsage (line 2226) | func (q *Query4Audit) RuleDistinctUsage() Rule { method RuleCountDistinctMultiCol (line 2240) | func (q *Query4Audit) RuleCountDistinctMultiCol() Rule { method RuleDistinctStar (line 2258) | func (q *Query4Audit) RuleDistinctStar() Rule { method RuleHavingClause (line 2278) | func (q *Query4Audit) RuleHavingClause() Rule { method RuleUpdatePrimaryKey (line 2295) | func (idxAdv *IndexAdvisor) RuleUpdatePrimaryKey() Rule { method RuleNestedSubQueries (line 2332) | func (q *Query4Audit) RuleNestedSubQueries() Rule { method RuleMultiDeleteUpdate (line 2347) | func (q *Query4Audit) RuleMultiDeleteUpdate() Rule { method RuleMultiDBJoin (line 2365) | func (q *Query4Audit) RuleMultiDBJoin() Rule { method RuleORUsage (line 2388) | func (q *Query4Audit) RuleORUsage() Rule { method RuleSpaceWithQuote (line 2422) | func (q *Query4Audit) RuleSpaceWithQuote() Rule { method RuleHint (line 2444) | func (q *Query4Audit) RuleHint() Rule { method RuleNot (line 2461) | func (q *Query4Audit) RuleNot() Rule { method RuleInsertValues (line 2478) | func (q *Query4Audit) RuleInsertValues() Rule { method RuleFullWidthQuote (line 2493) | func (q *Query4Audit) RuleFullWidthQuote() Rule { method RuleUNIONUsage (line 2511) | func (q *Query4Audit) RuleUNIONUsage() Rule { method RuleDistinctJoinUsage (line 2523) | func (q *Query4Audit) RuleDistinctJoinUsage() Rule { method RuleReadablePasswords (line 2539) | func (q *Query4Audit) RuleReadablePasswords() Rule { method RuleDataDrop (line 2587) | func (q *Query4Audit) RuleDataDrop() Rule { method RuleInjection (line 2605) | func (q *Query4Audit) RuleInjection() Rule { method RuleCompareWithFunction (line 2623) | func (q *Query4Audit) RuleCompareWithFunction() Rule { method RuleCountStar (line 2661) | func (q *Query4Audit) RuleCountStar() Rule { method RuleTruncateTable (line 2675) | func (q *Query4Audit) RuleTruncateTable() Rule { method RuleIn (line 2687) | func (q *Query4Audit) RuleIn() Rule { method RuleIsNullIsNotNull (line 2741) | func (q *Query4Audit) RuleIsNullIsNotNull() Rule { method RuleVarcharVSChar (line 2754) | func (q *Query4Audit) RuleVarcharVSChar() Rule { method RuleCreateDualTable (line 2795) | func (q *Query4Audit) RuleCreateDualTable() Rule { method RuleAlterCharset (line 2808) | func (q *Query4Audit) RuleAlterCharset() Rule { method RuleAlterDropColumn (line 2844) | func (q *Query4Audit) RuleAlterDropColumn() Rule { method RuleAlterDropKey (line 2871) | func (q *Query4Audit) RuleAlterDropKey() Rule { method RuleBLOBNotNull (line 2893) | func (q *Query4Audit) RuleBLOBNotNull() Rule { method RuleTooManyKeys (line 2951) | func (q *Query4Audit) RuleTooManyKeys() Rule { method RuleTooManyKeyParts (line 2968) | func (q *Query4Audit) RuleTooManyKeyParts() Rule { method RulePKNotInt (line 3010) | func (q *Query4Audit) RulePKNotInt() Rule { method RuleOrderByMultiDirection (line 3056) | func (q *Query4Audit) RuleOrderByMultiDirection() Rule { method RuleUniqueKeyDup (line 3079) | func (q *Query4Audit) RuleUniqueKeyDup() Rule { method RuleFulltextIndex (line 3122) | func (q *Query4Audit) RuleFulltextIndex() Rule { method RuleTimestampDefault (line 3154) | func (q *Query4Audit) RuleTimestampDefault() Rule { method RuleAutoIncrementInitNotZero (line 3231) | func (q *Query4Audit) RuleAutoIncrementInitNotZero() Rule { method RuleColumnWithCharset (line 3251) | func (q *Query4Audit) RuleColumnWithCharset() Rule { method RuleTableCharsetCheck (line 3320) | func (q *Query4Audit) RuleTableCharsetCheck() Rule { method RuleForbiddenView (line 3384) | func (q *Query4Audit) RuleForbiddenView() Rule { method RuleForbiddenTempTable (line 3410) | func (q *Query4Audit) RuleForbiddenTempTable() Rule { method RuleTableCollateCheck (line 3435) | func (q *Query4Audit) RuleTableCollateCheck() Rule { method RuleBlobDefaultValue (line 3499) | func (q *Query4Audit) RuleBlobDefaultValue() Rule { method RuleIntPrecision (line 3548) | func (q *Query4Audit) RuleIntPrecision() Rule { method RuleVarcharLength (line 3605) | func (q *Query4Audit) RuleVarcharLength() Rule { method RuleColumnNotAllowType (line 3650) | func (q *Query4Audit) RuleColumnNotAllowType() Rule { method RuleTimePrecision (line 3682) | func (q *Query4Audit) RuleTimePrecision() Rule { method RuleNoOSCKey (line 3727) | func (q *Query4Audit) RuleNoOSCKey() Rule { method RuleTooManyFields (line 3745) | func (q *Query4Audit) RuleTooManyFields() Rule { method RuleMaxTextColsCount (line 3762) | func (q *Query4Audit) RuleMaxTextColsCount() Rule { method RuleMaxTextColsCount (line 3790) | func (idxAdv *IndexAdvisor) RuleMaxTextColsCount() Rule { method RuleAllowEngine (line 3830) | func (q *Query4Audit) RuleAllowEngine() Rule { method RulePartitionNotAllowed (line 3888) | func (q *Query4Audit) RulePartitionNotAllowed() Rule { method RuleAutoIncUnsigned (line 3913) | func (q *Query4Audit) RuleAutoIncUnsigned() Rule { method RuleSpaceAfterDot (line 3968) | func (q *Query4Audit) RuleSpaceAfterDot() Rule { method RuleIdxPrefix (line 3991) | func (q *Query4Audit) RuleIdxPrefix() Rule { method RuleStandardName (line 4030) | func (q *Query4Audit) RuleStandardName() Rule { function MergeConflictHeuristicRules (line 4061) | func MergeConflictHeuristicRules(rules map[string]Rule) map[string]Rule { function RuleMySQLError (line 4097) | func RuleMySQLError(item string, err error) Rule { FILE: advisor/heuristic_test.go function TestRuleImplicitAlias (line 32) | func TestRuleImplicitAlias(t *testing.T) { function TestRuleStarAlias (line 61) | func TestRuleStarAlias(t *testing.T) { function TestRuleSameAlias (line 91) | func TestRuleSameAlias(t *testing.T) { function TestRulePrefixLike (line 112) | func TestRulePrefixLike(t *testing.T) { function TestRuleEqualLike (line 133) | func TestRuleEqualLike(t *testing.T) { function TestTimeFormatError (line 176) | func TestTimeFormatError(t *testing.T) { function TestRuleNoWhere (line 202) | func TestRuleNoWhere(t *testing.T) { function TestRuleOrderByRand (line 240) | func TestRuleOrderByRand(t *testing.T) { function TestRuleOffsetLimit (line 260) | func TestRuleOffsetLimit(t *testing.T) { function TestRuleGroupByConst (line 281) | func TestRuleGroupByConst(t *testing.T) { function TestRuleOrderByConst (line 302) | func TestRuleOrderByConst(t *testing.T) { function TestRuleDiffGroupByOrderBy (line 323) | func TestRuleDiffGroupByOrderBy(t *testing.T) { function TestRuleExplicitOrderBy (line 344) | func TestRuleExplicitOrderBy(t *testing.T) { function TestRuleOrderByExpr (line 364) | func TestRuleOrderByExpr(t *testing.T) { function TestRuleGroupByExpr (line 407) | func TestRuleGroupByExpr(t *testing.T) { function TestRuleTblCommentCheck (line 436) | func TestRuleTblCommentCheck(t *testing.T) { function TestRuleSelectStar (line 461) | func TestRuleSelectStar(t *testing.T) { function TestRuleInsertColDef (line 485) | func TestRuleInsertColDef(t *testing.T) { function TestRuleAddDefaultValue (line 523) | func TestRuleAddDefaultValue(t *testing.T) { function TestRuleColCommentCheck (line 566) | func TestRuleColCommentCheck(t *testing.T) { function TestRuleIPString (line 608) | func TestRuleIPString(t *testing.T) { function TestRuleDateNotQuote (line 648) | func TestRuleDateNotQuote(t *testing.T) { function TestRuleSQLCalcFoundRows (line 692) | func TestRuleSQLCalcFoundRows(t *testing.T) { function TestRuleCommaAnsiJoin (line 712) | func TestRuleCommaAnsiJoin(t *testing.T) { function TestRuleDupJoin (line 732) | func TestRuleDupJoin(t *testing.T) { function TestRuleNoDeterministicGroupby (line 752) | func TestRuleNoDeterministicGroupby(t *testing.T) { function TestRuleNoDeterministicLimit (line 799) | func TestRuleNoDeterministicLimit(t *testing.T) { function TestRuleUpdateDeleteWithLimit (line 819) | func TestRuleUpdateDeleteWithLimit(t *testing.T) { function TestRuleUpdateDeleteWithOrderby (line 856) | func TestRuleUpdateDeleteWithOrderby(t *testing.T) { function TestRuleUpdateSetAnd (line 893) | func TestRuleUpdateSetAnd(t *testing.T) { function TestRuleImpossibleWhere (line 933) | func TestRuleImpossibleWhere(t *testing.T) { function TestRuleMeaninglessWhere (line 973) | func TestRuleMeaninglessWhere(t *testing.T) { function TestRuleLoadFile (line 1024) | func TestRuleLoadFile(t *testing.T) { function TestRuleMultiCompare (line 1056) | func TestRuleMultiCompare(t *testing.T) { function TestRuleCreateOnUpdate (line 1103) | func TestRuleCreateOnUpdate(t *testing.T) { function TestRuleUpdateOnUpdate (line 1151) | func TestRuleUpdateOnUpdate(t *testing.T) { function TestRuleStandardINEQ (line 1208) | func TestRuleStandardINEQ(t *testing.T) { function TestRuleUseKeyWord (line 1229) | func TestRuleUseKeyWord(t *testing.T) { function TestRulePluralWord (line 1268) | func TestRulePluralWord(t *testing.T) { function TestRuleMultiBytesWord (line 1307) | func TestRuleMultiBytesWord(t *testing.T) { function TestRuleInvisibleUnicode (line 1345) | func TestRuleInvisibleUnicode(t *testing.T) { function TestRuleInsertSelect (line 1382) | func TestRuleInsertSelect(t *testing.T) { function TestRuleInsertOnDup (line 1402) | func TestRuleInsertOnDup(t *testing.T) { function TestRuleInSubquery (line 1422) | func TestRuleInSubquery(t *testing.T) { function TestRuleMultiValueAttribute (line 1443) | func TestRuleMultiValueAttribute(t *testing.T) { function TestRuleAddDelimiter (line 1463) | func TestRuleAddDelimiter(t *testing.T) { function TestRuleRecursiveDependency (line 1496) | func TestRuleRecursiveDependency(t *testing.T) { function TestRuleImpreciseDataType (line 1539) | func TestRuleImpreciseDataType(t *testing.T) { function TestRuleValuesInDefinition (line 1584) | func TestRuleValuesInDefinition(t *testing.T) { function TestRuleIndexAttributeOrder (line 1606) | func TestRuleIndexAttributeOrder(t *testing.T) { function TestRuleNullUsage (line 1628) | func TestRuleNullUsage(t *testing.T) { function TestRuleStringConcatenation (line 1648) | func TestRuleStringConcatenation(t *testing.T) { function TestRuleSysdate (line 1694) | func TestRuleSysdate(t *testing.T) { function TestRuleCountConst (line 1715) | func TestRuleCountConst(t *testing.T) { function TestRuleSumNPE (line 1755) | func TestRuleSumNPE(t *testing.T) { function TestRulePatternMatchingUsage (line 1793) | func TestRulePatternMatchingUsage(t *testing.T) { function TestRuleSpaghettiQueryAlert (line 1813) | func TestRuleSpaghettiQueryAlert(t *testing.T) { function TestRuleReduceNumberOfJoin (line 1834) | func TestRuleReduceNumberOfJoin(t *testing.T) { function TestRuleDistinctUsage (line 1854) | func TestRuleDistinctUsage(t *testing.T) { function TestRuleCountDistinctMultiCol (line 1874) | func TestRuleCountDistinctMultiCol(t *testing.T) { function TestRuleDistinctStar (line 1913) | func TestRuleDistinctStar(t *testing.T) { function TestRuleHavingClause (line 1953) | func TestRuleHavingClause(t *testing.T) { function TestRuleForbiddenTrigger (line 1973) | func TestRuleForbiddenTrigger(t *testing.T) { function TestRuleForbiddenProcedure (line 1990) | func TestRuleForbiddenProcedure(t *testing.T) { function TestRuleForbiddenFunction (line 2007) | func TestRuleForbiddenFunction(t *testing.T) { function TestRuleForbiddenView (line 2024) | func TestRuleForbiddenView(t *testing.T) { function TestRuleForbiddenTempTable (line 2042) | func TestRuleForbiddenTempTable(t *testing.T) { function TestRuleNestedSubQueries (line 2059) | func TestRuleNestedSubQueries(t *testing.T) { function TestRuleMultiDeleteUpdate (line 2079) | func TestRuleMultiDeleteUpdate(t *testing.T) { function TestRuleMultiDBJoin (line 2100) | func TestRuleMultiDBJoin(t *testing.T) { function TestRuleORUsage (line 2122) | func TestRuleORUsage(t *testing.T) { function TestRuleSpaceWithQuote (line 2159) | func TestRuleSpaceWithQuote(t *testing.T) { function TestRuleHint (line 2200) | func TestRuleHint(t *testing.T) { function TestRuleNot (line 2241) | func TestRuleNot(t *testing.T) { function TestRuleInsertValues (line 2279) | func TestRuleInsertValues(t *testing.T) { function TestRuleFullWidthQuote (line 2319) | func TestRuleFullWidthQuote(t *testing.T) { function TestRuleUNIONUsage (line 2357) | func TestRuleUNIONUsage(t *testing.T) { function TestRuleDistinctJoinUsage (line 2377) | func TestRuleDistinctJoinUsage(t *testing.T) { function TestRuleSubQueryLimit (line 2397) | func TestRuleSubQueryLimit(t *testing.T) { function TestRuleSubQueryFunctions (line 2434) | func TestRuleSubQueryFunctions(t *testing.T) { function TestRuleUNIONLimit (line 2471) | func TestRuleUNIONLimit(t *testing.T) { function TestRuleReadablePasswords (line 2510) | func TestRuleReadablePasswords(t *testing.T) { function TestRuleDataDrop (line 2531) | func TestRuleDataDrop(t *testing.T) { function TestRuleInjection (line 2554) | func TestRuleInjection(t *testing.T) { function TestCompareWithFunction (line 2594) | func TestCompareWithFunction(t *testing.T) { function TestRuleCountStar (line 2644) | func TestRuleCountStar(t *testing.T) { function TestRuleTruncateTable (line 2664) | func TestRuleTruncateTable(t *testing.T) { function TestRuleIn (line 2685) | func TestRuleIn(t *testing.T) { function TestRuleIsNullIsNotNull (line 2708) | func TestRuleIsNullIsNotNull(t *testing.T) { function TestRuleVarcharVSChar (line 2729) | func TestRuleVarcharVSChar(t *testing.T) { function TestRuleCreateDualTable (line 2751) | func TestRuleCreateDualTable(t *testing.T) { function TestRuleAlterCharset (line 2771) | func TestRuleAlterCharset(t *testing.T) { function TestRuleAlterDropColumn (line 2818) | func TestRuleAlterDropColumn(t *testing.T) { function TestRuleAlterDropKey (line 2855) | func TestRuleAlterDropKey(t *testing.T) { function TestRuleCantBeNull (line 2893) | func TestRuleCantBeNull(t *testing.T) { function TestRuleTooManyKeyParts (line 2933) | func TestRuleTooManyKeyParts(t *testing.T) { function TestRuleTooManyKeys (line 2955) | func TestRuleTooManyKeys(t *testing.T) { function TestRulePKNotInt (line 2977) | func TestRulePKNotInt(t *testing.T) { function TestRuleOrderByMultiDirection (line 3020) | func TestRuleOrderByMultiDirection(t *testing.T) { function TestRuleUniqueKeyDup (line 3062) | func TestRuleUniqueKeyDup(t *testing.T) { function TestRuleFulltextIndex (line 3102) | func TestRuleFulltextIndex(t *testing.T) { function TestRuleTimestampDefault (line 3143) | func TestRuleTimestampDefault(t *testing.T) { function TestRuleAutoIncrementInitNotZero (line 3187) | func TestRuleAutoIncrementInitNotZero(t *testing.T) { function TestRuleColumnWithCharset (line 3227) | func TestRuleColumnWithCharset(t *testing.T) { function TestRuleTableCharsetCheck (line 3268) | func TestRuleTableCharsetCheck(t *testing.T) { function TestRuleTableCollateCheck (line 3308) | func TestRuleTableCollateCheck(t *testing.T) { function TestRuleBlobDefaultValue (line 3346) | func TestRuleBlobDefaultValue(t *testing.T) { function TestRuleIntPrecision (line 3399) | func TestRuleIntPrecision(t *testing.T) { function TestRuleVarcharLength (line 3445) | func TestRuleVarcharLength(t *testing.T) { function TestRuleColumnNotAllowType (line 3487) | func TestRuleColumnNotAllowType(t *testing.T) { function TestRuleTimePrecision (line 3529) | func TestRuleTimePrecision(t *testing.T) { function TestRuleNoOSCKey (line 3570) | func TestRuleNoOSCKey(t *testing.T) { function TestRuleTooManyFields (line 3609) | func TestRuleTooManyFields(t *testing.T) { function TestRuleMaxTextColsCount (line 3631) | func TestRuleMaxTextColsCount(t *testing.T) { function TestRuleMaxTextColsCountWithEnv (line 3653) | func TestRuleMaxTextColsCountWithEnv(t *testing.T) { function TestRuleAllowEngine (line 3725) | func TestRuleAllowEngine(t *testing.T) { function TestRulePartitionNotAllowed (line 3763) | func TestRulePartitionNotAllowed(t *testing.T) { function TestRuleAutoIncUnsigned (line 3790) | func TestRuleAutoIncUnsigned(t *testing.T) { function TestRuleIdxPrefix (line 3811) | func TestRuleIdxPrefix(t *testing.T) { function TestRuleStandardName (line 3851) | func TestRuleStandardName(t *testing.T) { function TestRuleSpaceAfterDot (line 3893) | func TestRuleSpaceAfterDot(t *testing.T) { function TestRuleMySQLError (line 3932) | func TestRuleMySQLError(t *testing.T) { function TestMergeConflictHeuristicRules (line 3941) | func TestMergeConflictHeuristicRules(t *testing.T) { FILE: advisor/index.go constant IndexNameMaxLength (line 35) | IndexNameMaxLength = 64 type IndexAdvisor (line 39) | type IndexAdvisor struct method IndexAdvise (line 182) | func (idxAdv *IndexAdvisor) IndexAdvise() IndexAdvises { method idxColsTypeCheck (line 362) | func (idxAdv *IndexAdvisor) idxColsTypeCheck(idxList []IndexInfo) []In... method mergeIndexes (line 479) | func (idxAdv *IndexAdvisor) mergeIndexes(idxList []IndexInfo) []IndexI... method buildJoinIndex (line 625) | func (idxAdv *IndexAdvisor) buildJoinIndex(meta common.Meta) []IndexIn... method buildIndex (line 646) | func (idxAdv *IndexAdvisor) buildIndex(idxList map[string]map[string][... method buildIndexWithNoEnv (line 693) | func (idxAdv *IndexAdvisor) buildIndexWithNoEnv(indexList map[string]m... method mergeIndex (line 725) | func (idxAdv *IndexAdvisor) mergeIndex(idxList map[string]map[string][... method calcCardinality (line 909) | func (idxAdv *IndexAdvisor) calcCardinality(cols []*common.Column) []*... method HeuristicCheck (line 1038) | func (idxAdv *IndexAdvisor) HeuristicCheck(q Query4Audit) map[string]R... type IndexInfo (line 53) | type IndexInfo struct type IndexAdvises (line 62) | type IndexAdvises method Format (line 964) | func (idxAdvs IndexAdvises) Format() map[string]Rule { function mergeAdvices (line 65) | func mergeAdvices(dst []IndexInfo, src ...IndexInfo) IndexAdvises { function NewAdvisor (line 89) | func NewAdvisor(env *env.VirtualEnv, rEnv database.Connector, q Query4Au... function getRandomIndexSuffix (line 593) | func getRandomIndexSuffix() string { function rmSelfDupIndex (line 598) | func rmSelfDupIndex(indexes []IndexInfo) []IndexInfo { function CompleteColumnsInfo (line 768) | func CompleteColumnsInfo(stmt sqlparser.Statement, cols []*common.Column... function DuplicateKeyChecker (line 1064) | func DuplicateKeyChecker(conn *database.Connector, databases ...string) ... FILE: advisor/index_test.go function TestMain (line 40) | func TestMain(m *testing.M) { function TestRuleImplicitConversion (line 70) | func TestRuleImplicitConversion(t *testing.T) { function TestRuleImpossibleOuterJoin (line 151) | func TestRuleImpossibleOuterJoin(t *testing.T) { function TestIndexAdvisorRuleGroupByConst (line 185) | func TestIndexAdvisorRuleGroupByConst(t *testing.T) { function TestIndexAdvisorRuleOrderByConst (line 247) | func TestIndexAdvisorRuleOrderByConst(t *testing.T) { function TestRuleUpdatePrimaryKey (line 309) | func TestRuleUpdatePrimaryKey(t *testing.T) { function TestIndexAdvise (line 369) | func TestIndexAdvise(t *testing.T) { function TestIndexAdviseNoEnv (line 400) | func TestIndexAdviseNoEnv(t *testing.T) { function TestDuplicateKeyChecker (line 431) | func TestDuplicateKeyChecker(t *testing.T) { function TestMergeAdvices (line 440) | func TestMergeAdvices(t *testing.T) { function TestIdxColsTypeCheck (line 464) | func TestIdxColsTypeCheck(t *testing.T) { function TestGetRandomIndexSuffix (line 510) | func TestGetRandomIndexSuffix(t *testing.T) { FILE: advisor/rules.go type Query4Audit (line 37) | type Query4Audit struct function NewQuery4Audit (line 44) | func NewQuery4Audit(sql string, options ...string) (*Query4Audit, error) { type Rule (line 71) | type Rule struct function init (line 113) | func init() { function InitHeuristicRules (line 118) | func InitHeuristicRules() { function IsIgnoreRule (line 1214) | func IsIgnoreRule(item string) bool { function InBlackList (line 1229) | func InBlackList(sql string) bool { function FormatSuggest (line 1250) | func FormatSuggest(sql string, currentDB string, format string, suggests... type JSONSuggest (line 1491) | type JSONSuggest struct function formatJSON (line 1502) | func formatJSON(sql string, db string, suggest map[string]Rule) string { function ListHeuristicRules (line 1583) | func ListHeuristicRules(rules ...map[string]Rule) { function ListTestSQLs (line 1606) | func ListTestSQLs() { FILE: advisor/rules_test.go function TestListTestSQLs (line 26) | func TestListTestSQLs(t *testing.T) { function TestListHeuristicRules (line 40) | func TestListHeuristicRules(t *testing.T) { function TestInBlackList (line 49) | func TestInBlackList(t *testing.T) { function TestIsIgnoreRule (line 64) | func TestIsIgnoreRule(t *testing.T) { function TestNewQuery4Audit (line 73) | func TestNewQuery4Audit(t *testing.T) { FILE: ast/meta.go function GetTableFromExprs (line 28) | func GetTableFromExprs(exprs sqlparser.TableExprs, metas ...common.Meta)... function GetMeta (line 70) | func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta { function appendTable (line 128) | func appendTable(tb sqlparser.TableName, as string, meta map[string]*com... function mergeAlias (line 150) | func mergeAlias(db, tb, as string, meta map[string]*common.DB) { function FindColumn (line 200) | func FindColumn(node sqlparser.SQLNode) []*common.Column { function inEqIndexAble (line 225) | func inEqIndexAble(node sqlparser.SQLNode) bool { function FindWhereEQ (line 263) | func FindWhereEQ(node sqlparser.SQLNode) []*common.Column { function FindWhereINEQ (line 269) | func FindWhereINEQ(node sqlparser.SQLNode) []*common.Column { function FindEQColsInWhere (line 276) | func FindEQColsInWhere(node sqlparser.SQLNode) []*common.Column { function FindINEQColsInWhere (line 334) | func FindINEQColsInWhere(node sqlparser.SQLNode) []*common.Column { function FindGroupByCols (line 377) | func FindGroupByCols(node sqlparser.SQLNode) []*common.Column { function FindOrderByCols (line 411) | func FindOrderByCols(node sqlparser.SQLNode) []*common.Column { function FindJoinTable (line 448) | func FindJoinTable(node sqlparser.SQLNode, meta common.Meta) common.Meta { function findJoinTable (line 477) | func findJoinTable(expr sqlparser.TableExpr, meta common.Meta) { function FindJoinCols (line 529) | func FindJoinCols(node sqlparser.SQLNode) [][]*common.Column { function FindEQColsInJoinCond (line 595) | func FindEQColsInJoinCond(node sqlparser.SQLNode) []*common.Column { function FindINEQColsInJoinCond (line 610) | func FindINEQColsInJoinCond(node sqlparser.SQLNode) []*common.Column { function FindSubquery (line 626) | func FindSubquery(depth int, node sqlparser.SQLNode, queries ...string) ... function FindAllCondition (line 666) | func FindAllCondition(node sqlparser.SQLNode) []interface{} { type Expression (line 681) | type Expression constant WhereExpression (line 685) | WhereExpression Expression = "where" constant JoinExpression (line 687) | JoinExpression Expression = "join" constant GroupByExpression (line 689) | GroupByExpression Expression = "group by" constant OrderByExpression (line 691) | OrderByExpression Expression = "order by" function FindAllCols (line 695) | func FindAllCols(node sqlparser.SQLNode, targets ...Expression) []*commo... function GetSubqueryDepth (line 751) | func GetSubqueryDepth(node sqlparser.SQLNode) int { function getColumnName (line 765) | func getColumnName(node sqlparser.SQLNode) (*sqlparser.ColName, string) { FILE: ast/meta_test.go function TestMain (line 34) | func TestMain(m *testing.M) { function TestGetTableFromExprs (line 53) | func TestGetTableFromExprs(t *testing.T) { function TestGetParseTableWithStmt (line 71) | func TestGetParseTableWithStmt(t *testing.T) { function TestFindCondition (line 86) | func TestFindCondition(t *testing.T) { function TestFindGroupBy (line 110) | func TestFindGroupBy(t *testing.T) { function TestFindOrderBy (line 129) | func TestFindOrderBy(t *testing.T) { function TestFindSubquery (line 149) | func TestFindSubquery(t *testing.T) { function TestFindJoinTable (line 172) | func TestFindJoinTable(t *testing.T) { function TestFindJoinCols (line 197) | func TestFindJoinCols(t *testing.T) { function TestFindJoinColBeWhereEQ (line 223) | func TestFindJoinColBeWhereEQ(t *testing.T) { function TestFindJoinColBeWhereINEQ (line 247) | func TestFindJoinColBeWhereINEQ(t *testing.T) { function TestFindAllCondition (line 271) | func TestFindAllCondition(t *testing.T) { function TestFindColumn (line 301) | func TestFindColumn(t *testing.T) { function TestFindAllCols (line 322) | func TestFindAllCols(t *testing.T) { function TestGetSubqueryDepth (line 354) | func TestGetSubqueryDepth(t *testing.T) { function TestAppendTable (line 383) | func TestAppendTable(t *testing.T) { FILE: ast/node_array.go type NodeItem (line 30) | type NodeItem struct type NodeList (line 39) | type NodeList struct method Add (line 58) | func (l *NodeList) Add(node sqlparser.SQLNode) *NodeItem { method Remove (line 86) | func (l *NodeList) Remove(node *NodeItem) error { method First (line 116) | func (l *NodeList) First() *NodeItem { method Last (line 121) | func (l *NodeList) Last() *NodeItem { function NewNodeList (line 46) | func NewNodeList(statement sqlparser.Statement) *NodeList { FILE: ast/pretty.go function Pretty (line 30) | func Pretty(sql string, method string) (output string) { function format (line 53) | func format(query string) string { FILE: ast/pretty_test.go function TestPretty (line 127) | func TestPretty(t *testing.T) { function TestIsKeyword (line 145) | func TestIsKeyword(t *testing.T) { function TestRemoveComments (line 165) | func TestRemoveComments(t *testing.T) { FILE: ast/rewrite.go type Rule (line 35) | type Rule struct function init (line 46) | func init() { function ListRewriteRules (line 232) | func ListRewriteRules(rules []Rule) { type Rewrite (line 257) | type Rewrite struct method Rewrite (line 279) | func (rw *Rewrite) Rewrite() *Rewrite { method RewriteDelimiter (line 306) | func (rw *Rewrite) RewriteDelimiter() *Rewrite { method RewriteStandard (line 316) | func (rw *Rewrite) RewriteStandard() *Rewrite { method RewriteAlwaysTrue (line 324) | func (rw *Rewrite) RewriteAlwaysTrue() (reWriter *Rewrite) { method RewriteCountStar (line 588) | func (rw *Rewrite) RewriteCountStar() *Rewrite { method RewriteInnoDB (line 610) | func (rw *Rewrite) RewriteInnoDB() *Rewrite { method RewriteAutoIncrement (line 631) | func (rw *Rewrite) RewriteAutoIncrement() *Rewrite { method RewriteIntWidth (line 648) | func (rw *Rewrite) RewriteIntWidth() *Rewrite { method RewriteStar2Columns (line 675) | func (rw *Rewrite) RewriteStar2Columns() *Rewrite { method RewriteInsertColumns (line 759) | func (rw *Rewrite) RewriteInsertColumns() *Rewrite { method RewriteHaving (line 820) | func (rw *Rewrite) RewriteHaving() *Rewrite { method RewriteAddOrderByNull (line 852) | func (rw *Rewrite) RewriteAddOrderByNull() *Rewrite { method RewriteOr2Union (line 874) | func (rw *Rewrite) RewriteOr2Union() *Rewrite { method RewriteUnionAll (line 879) | func (rw *Rewrite) RewriteUnionAll() *Rewrite { method RewriteOr2In (line 893) | func (rw *Rewrite) RewriteOr2In() *Rewrite { method RewriteInNull (line 1145) | func (rw *Rewrite) RewriteInNull() *Rewrite { method RewriteRmParenthesis (line 1150) | func (rw *Rewrite) RewriteRmParenthesis() *Rewrite { method rmParenthesis (line 1157) | func (rw *Rewrite) rmParenthesis() { method RewriteRemoveDMLOrderBy (line 1235) | func (rw *Rewrite) RewriteRemoveDMLOrderBy() *Rewrite { method RewriteGroupByConst (line 1274) | func (rw *Rewrite) RewriteGroupByConst() *Rewrite { method RewriteSubQuery2Join (line 1301) | func (rw *Rewrite) RewriteSubQuery2Join() *Rewrite { method sub2Join (line 1367) | func (rw *Rewrite) sub2Join(parent, sub string) (string, error) { method RewriteJoin2SubQuery (line 1565) | func (rw *Rewrite) RewriteJoin2SubQuery() *Rewrite { method RewriteDistinctStar (line 1570) | func (rw *Rewrite) RewriteDistinctStar() *Rewrite { method RewriteTruncate (line 1594) | func (rw *Rewrite) RewriteTruncate() *Rewrite { method RewriteDML2Select (line 1610) | func (rw *Rewrite) RewriteDML2Select() *Rewrite { method RewriteReg2Select (line 1629) | func (rw *Rewrite) RewriteReg2Select() *Rewrite { function NewRewrite (line 265) | func NewRewrite(sql string) *Rewrite { function isAlwaysTrue (line 340) | func isAlwaysTrue(expr *sqlparser.ComparisonExpr) bool { function omitAlwaysTrue (line 396) | func omitAlwaysTrue(node *NodeItem) { method or2in (line 911) | func (node *NodeItem) or2in() { function mergeExprs (line 988) | func mergeExprs(left, right sqlparser.Expr) *sqlparser.ComparisonExpr { function removeDup (line 1096) | func removeDup(vt ...sqlparser.Expr) sqlparser.ValTuple { function columnFromWhere (line 1534) | func columnFromWhere(col *sqlparser.ColName, meta common.Meta, columns c... function delete2Select (line 1648) | func delete2Select(stmt *sqlparser.Delete) string { function regDelete2Select (line 1661) | func regDelete2Select(sql string) string { function update2Select (line 1672) | func update2Select(stmt *sqlparser.Update) string { function regUpdate2Select (line 1686) | func regUpdate2Select(sql string) string { function insert2Select (line 1697) | func insert2Select(stmt *sqlparser.Insert) string { function AlterAffectTable (line 1708) | func AlterAffectTable(stmt sqlparser.Statement) string { function MergeAlterTables (line 1727) | func MergeAlterTables(sqls ...string) map[string]string { function RewriteRuleMatch (line 1803) | func RewriteRuleMatch(name string) bool { FILE: ast/rewrite_test.go function TestRewrite (line 27) | func TestRewrite(t *testing.T) { function TestRewriteStar2Columns (line 106) | func TestRewriteStar2Columns(t *testing.T) { function TestRewriteInsertColumns (line 170) | func TestRewriteInsertColumns(t *testing.T) { function TestRewriteHaving (line 214) | func TestRewriteHaving(t *testing.T) { function TestRewriteAddOrderByNull (line 239) | func TestRewriteAddOrderByNull(t *testing.T) { function TestRewriteRemoveDMLOrderBy (line 256) | func TestRewriteRemoveDMLOrderBy(t *testing.T) { function TestRewriteGroupByConst (line 277) | func TestRewriteGroupByConst(t *testing.T) { function TestRewriteStandard (line 308) | func TestRewriteStandard(t *testing.T) { function TestRewriteCountStar (line 325) | func TestRewriteCountStar(t *testing.T) { function TestRewriteInnoDB (line 346) | func TestRewriteInnoDB(t *testing.T) { function TestRewriteAutoIncrement (line 367) | func TestRewriteAutoIncrement(t *testing.T) { function TestRewriteIntWidth (line 388) | func TestRewriteIntWidth(t *testing.T) { function TestRewriteAlwaysTrue (line 417) | func TestRewriteAlwaysTrue(t *testing.T) { function TestRewriteSubQuery2Join (line 501) | func TestRewriteSubQuery2Join(t *testing.T) { function TestRewriteDML2Select (line 533) | func TestRewriteDML2Select(t *testing.T) { function TestRewriteReg2Select (line 590) | func TestRewriteReg2Select(t *testing.T) { function TestRewriteDistinctStar (line 615) | func TestRewriteDistinctStar(t *testing.T) { function TestMergeAlterTables (line 653) | func TestMergeAlterTables(t *testing.T) { function TestRewriteUnionAll (line 709) | func TestRewriteUnionAll(t *testing.T) { function TestRewriteTruncate (line 725) | func TestRewriteTruncate(t *testing.T) { function TestRewriteOr2In (line 742) | func TestRewriteOr2In(t *testing.T) { function TestRmParenthesis (line 785) | func TestRmParenthesis(t *testing.T) { function TestListRewriteRules (line 814) | func TestListRewriteRules(t *testing.T) { FILE: ast/tidb.go function TiParse (line 37) | func TiParse(sql, charset, collation string) ([]ast.StmtNode, error) { function removeIncompatibleWords (line 57) | func removeIncompatibleWords(sql string) string { function PrintPrettyStmtNode (line 88) | func PrintPrettyStmtNode(sql, charset, collation string) { function StmtNode2JSON (line 99) | func StmtNode2JSON(sql, charset, collation string) string { function SchemaMetaInfo (line 116) | func SchemaMetaInfo(sql string, defaultDatabase string) []string { FILE: ast/tidb_test.go function TestPrintPrettyStmtNode (line 26) | func TestPrintPrettyStmtNode(t *testing.T) { function TestStmtNode2JSON (line 43) | func TestStmtNode2JSON(t *testing.T) { function TestSchemaMetaInfo (line 60) | func TestSchemaMetaInfo(t *testing.T) { function TestRemoveIncompatibleWords (line 90) | func TestRemoveIncompatibleWords(t *testing.T) { FILE: ast/token.go constant TokenTypeWhitespace (line 30) | TokenTypeWhitespace = 0 constant TokenTypeWord (line 31) | TokenTypeWord = 1 constant TokenTypeQuote (line 32) | TokenTypeQuote = 2 constant TokenTypeBacktickQuote (line 33) | TokenTypeBacktickQuote = 3 constant TokenTypeReserved (line 34) | TokenTypeReserved = 4 constant TokenTypeReservedToplevel (line 35) | TokenTypeReservedToplevel = 5 constant TokenTypeReservedNewline (line 36) | TokenTypeReservedNewline = 6 constant TokenTypeBoundary (line 37) | TokenTypeBoundary = 7 constant TokenTypeComment (line 38) | TokenTypeComment = 8 constant TokenTypeBlockComment (line 39) | TokenTypeBlockComment = 9 constant TokenTypeNumber (line 40) | TokenTypeNumber = 10 constant TokenTypeError (line 41) | TokenTypeError = 11 constant TokenTypeVariable (line 42) | TokenTypeVariable = 12 function init (line 128) | func init() { type Token (line 576) | type Token struct function Tokenizer (line 583) | func Tokenizer(sql string) []Token { function IsMysqlKeyword (line 616) | func IsMysqlKeyword(name string) bool { function getNextToken (line 622) | func getNextToken(buf string, previous Token) Token { function getQuotedString (line 766) | func getQuotedString(buf string) string { function Tokenize (line 788) | func Tokenize(sql string) []Token { function Compress (line 845) | func Compress(sql string) string { function SplitStatement (line 854) | func SplitStatement(buf []byte, delimiter []byte) (string, string, []byt... function LeftNewLines (line 970) | func LeftNewLines(buf []byte) int { function NewLines (line 984) | func NewLines(buf []byte) int { function QueryType (line 995) | func QueryType(sql string) string { FILE: ast/token_test.go function TestTokenize (line 28) | func TestTokenize(t *testing.T) { function TestTokenizer (line 42) | func TestTokenizer(t *testing.T) { function TestGetQuotedString (line 69) | func TestGetQuotedString(t *testing.T) { function TestCompress (line 97) | func TestCompress(t *testing.T) { function TestFormat (line 111) | func TestFormat(t *testing.T) { function TestSplitStatement (line 125) | func TestSplitStatement(t *testing.T) { function TestLeftNewLines (line 213) | func TestLeftNewLines(t *testing.T) { function TestNewLines (line 234) | func TestNewLines(t *testing.T) { function TestQueryType (line 255) | func TestQueryType(t *testing.T) { FILE: ast/vitess.go function PrintPrettyVitessStmtNode (line 29) | func PrintPrettyVitessStmtNode(sql string) { function VitessStmtNode2JSON (line 40) | func VitessStmtNode2JSON(sql string) string { FILE: ast/vitess_test.go function TestPrintPrettyVitessStmtNode (line 26) | func TestPrintPrettyVitessStmtNode(t *testing.T) { function TestVitessStmtNode2JSON (line 43) | func TestVitessStmtNode2JSON(t *testing.T) { FILE: cmd/soar/soar.go function main (line 36) | func main() { FILE: cmd/soar/soar_test.go function TestMain (line 32) | func TestMain(m *testing.M) { function Test_Main (line 52) | func Test_Main(_ *testing.T) { function Test_Main_More (line 63) | func Test_Main_More(_ *testing.T) { function Test_Main_initQuery (line 81) | func Test_Main_initQuery(t *testing.T) { function Test_Main_reportTool (line 103) | func Test_Main_reportTool(t *testing.T) { function Test_Main_helpTools (line 115) | func Test_Main_helpTools(t *testing.T) { function Test_Main_verboseInfo (line 155) | func Test_Main_verboseInfo(t *testing.T) { FILE: cmd/soar/tool.go function initConfig (line 34) | func initConfig() { function checkConfig (line 72) | func checkConfig() int { function helpTools (line 123) | func helpTools() (isContinue bool, exitCode int) { function reportTool (line 163) | func reportTool(sql string, bom []byte) (isContinue bool, exitCode int) { function initQuery (line 196) | func initQuery(query string) string { function shutdown (line 234) | func shutdown(vEnv *env.VirtualEnv, rEnv *database.Connector) { function verboseInfo (line 245) | func verboseInfo() { FILE: common/cases.go function init (line 22) | func init() { FILE: common/chardet.go function Chardet (line 25) | func Chardet(buf []byte) string { function CheckCharsetByBOM (line 60) | func CheckCharsetByBOM(buf []byte) string { function RemoveBOM (line 78) | func RemoveBOM(buf []byte) (string, []byte) { FILE: common/chardet_test.go function TestChardet (line 25) | func TestChardet(t *testing.T) { function TestRemoveBOM (line 45) | func TestRemoveBOM(t *testing.T) { function TestCheckCharsetByBOM (line 58) | func TestCheckCharsetByBOM(t *testing.T) { FILE: common/config.go type Configuration (line 52) | type Configuration struct method readConfigFile (line 555) | func (conf *Configuration) readConfigFile(path string) error { type Dsn (line 229) | type Dsn struct method newMySQLConfig (line 296) | func (env *Dsn) newMySQLConfig() (*mysql.Config, error) { function newDSN (line 254) | func newDSN(cfg *mysql.Config) *Dsn { function parseDSN (line 336) | func parseDSN(odbc string, d *Dsn) *Dsn { function ParseDSN (line 446) | func ParseDSN(odbc string, d *Dsn) *Dsn { function FormatDSN (line 456) | func FormatDSN(env *Dsn) string { function SoarVersion (line 468) | func SoarVersion() { function usage (line 476) | func usage() { function PrintConfiguration (line 544) | func PrintConfiguration() { function readCmdFlags (line 578) | func readCmdFlags() error { function ParseConfig (line 781) | func ParseConfig(configFile string) error { type ReportType (line 840) | type ReportType struct function ListReportTypes (line 960) | func ListReportTypes() { function ArgConfig (line 978) | func ArgConfig() string { FILE: common/config_test.go function TestMain (line 31) | func TestMain(m *testing.M) { function TestParseConfig (line 50) | func TestParseConfig(t *testing.T) { function TestReadConfigFile (line 59) | func TestReadConfigFile(t *testing.T) { function TestParseDSN (line 68) | func TestParseDSN(t *testing.T) { function TestListReportTypes (line 119) | func TestListReportTypes(t *testing.T) { function TestArgConfig (line 128) | func TestArgConfig(t *testing.T) { function TestPrintConfiguration (line 156) | func TestPrintConfiguration(t *testing.T) { FILE: common/example_test.go function ExampleFormatDSN (line 21) | func ExampleFormatDSN() { function ExampleIsColsPart (line 38) | func ExampleIsColsPart() { function ExampleSortedKey (line 58) | func ExampleSortedKey() { FILE: common/logger.go function init (line 35) | func init() { function LoggerInit (line 41) | func LoggerInit() { function Caller (line 61) | func Caller() string { function GetFunctionName (line 82) | func GetFunctionName() string { function fileName (line 94) | func fileName(original string) string { function LogIfError (line 103) | func LogIfError(err error, format string, v ...interface{}) { function LogIfWarn (line 117) | func LogIfWarn(err error, format string, v ...interface{}) { FILE: common/logger_test.go function TestLogger (line 24) | func TestLogger(t *testing.T) { function TestCaller (line 31) | func TestCaller(t *testing.T) { function TestGetFunctionName (line 38) | func TestGetFunctionName(t *testing.T) { function TestIfError (line 45) | func TestIfError(t *testing.T) { function TestIfWarn (line 51) | func TestIfWarn(t *testing.T) { FILE: common/markdown.go function MarkdownEscape (line 40) | func MarkdownEscape(str string) string { function loadExternalResource (line 48) | func loadExternalResource(resource string) string { function MarkdownHTMLHeader (line 84) | func MarkdownHTMLHeader() string { function Markdown2HTML (line 116) | func Markdown2HTML(buf string) string { function Score (line 134) | func Score(score int) string { FILE: common/markdown_test.go function TestMarkdownEscape (line 28) | func TestMarkdownEscape(_ *testing.T) { function TestMarkdown2Html (line 42) | func TestMarkdown2Html(t *testing.T) { function TestScore (line 69) | func TestScore(t *testing.T) { function TestLoadExternalResource (line 86) | func TestLoadExternalResource(t *testing.T) { function TestMarkdownHTMLHeader (line 99) | func TestMarkdownHTMLHeader(t *testing.T) { FILE: common/meta.go type Meta (line 25) | type Meta method Tables (line 118) | func (b Meta) Tables(db string) []string { method SetDefault (line 130) | func (b Meta) SetDefault(defaultDB string) Meta { type DB (line 28) | type DB struct function NewDB (line 34) | func NewDB(db string) *DB { type Table (line 42) | type Table struct function NewTable (line 49) | func NewTable(tb string) *Table { type KeyType (line 58) | type KeyType type Column (line 61) | type Column struct method Equal (line 82) | func (col *Column) Equal(column *Column) bool { method GetDataBytes (line 257) | func (col *Column) GetDataBytes(dbVersion int) int { type TableColumns (line 79) | type TableColumns function IsColsPart (line 89) | func IsColsPart(a, b []*Column) bool { function JoinColumnsName (line 107) | func JoinColumnsName(cols []*Column, sep string) string { function MergeColumn (line 165) | func MergeColumn(dst []*Column, src ...*Column) []*Column { function ColumnSort (line 189) | func ColumnSort(colList []*Column) []*Column { function GetDataTypeBase (line 207) | func GetDataTypeBase(dataType string) string { function GetDataTypeLength (line 223) | func GetDataTypeLength(dataType string) []int { function numericStorageReq (line 290) | func numericStorageReq(dataType string) int { function timeStorageReq (line 356) | func timeStorageReq(dataType string, version int) int { function StringStorageReq (line 466) | func StringStorageReq(dataType string, charset string) int { FILE: common/meta_test.go function TestGetDataTypeLength (line 24) | func TestGetDataTypeLength(t *testing.T) { function TestGetDataTypeBase (line 45) | func TestGetDataTypeBase(t *testing.T) { function TestGetDataBytes (line 61) | func TestGetDataBytes(t *testing.T) { function TestStringStorageReq (line 147) | func TestStringStorageReq(t *testing.T) { FILE: common/signal.go function HandleSignal (line 26) | func HandleSignal(f func()) { FILE: common/signal_test.go function TestHandleSignal (line 24) | func TestHandleSignal(t *testing.T) { FILE: common/tricks.go function GoldenDiff (line 34) | func GoldenDiff(f func(), name string, update *bool) error { function captureOutput (line 65) | func captureOutput(f func()) string { function SortedKey (line 95) | func SortedKey(m interface{}) []string { function jsonFind (line 111) | func jsonFind(json string, name string, find *[]string) (next []string) { function JSONFind (line 130) | func JSONFind(json string, name string) []string { function RemoveDuplicatesItem (line 146) | func RemoveDuplicatesItem(duplicate []string) []string { FILE: common/tricks_test.go function TestCaptureOutput (line 26) | func TestCaptureOutput(t *testing.T) { function TestJSONFind (line 55) | func TestJSONFind(t *testing.T) { function TestRemoveDuplicatesItem (line 404) | func TestRemoveDuplicatesItem(t *testing.T) { FILE: database/explain.go constant TraditionalFormatExplain (line 40) | TraditionalFormatExplain = iota constant JSONFormatExplain (line 41) | JSONFormatExplain constant TraditionalExplainType (line 52) | TraditionalExplainType = iota constant ExtendedExplainType (line 53) | ExtendedExplainType constant PartitionsExplainType (line 54) | PartitionsExplainType type ExplainInfo (line 67) | type ExplainInfo struct type ExplainRow (line 77) | type ExplainRow struct type ExplainWarning (line 94) | type ExplainWarning struct type ExplainJSONCostInfo (line 105) | type ExplainJSONCostInfo struct type ExplainJSONMaterializedFromSubquery (line 115) | type ExplainJSONMaterializedFromSubquery struct type ExplainJSONTable (line 126) | type ExplainJSONTable struct type ExplainJSONNestedLoop (line 147) | type ExplainJSONNestedLoop struct type ExplainJSONBufferResult (line 152) | type ExplainJSONBufferResult struct type ExplainJSONSubqueries (line 159) | type ExplainJSONSubqueries struct type ExplainJSONGroupingOperation (line 166) | type ExplainJSONGroupingOperation struct type ExplainJSONDuplicatesRemoval (line 176) | type ExplainJSONDuplicatesRemoval struct type ExplainJSONOrderingOperation (line 185) | type ExplainJSONOrderingOperation struct type ExplainJSONQueryBlock (line 195) | type ExplainJSONQueryBlock struct type ExplainJSONUnionResult (line 212) | type ExplainJSONUnionResult struct type ExplainJSON (line 220) | type ExplainJSON struct function findTablesInJSON (line 392) | func findTablesInJSON(explainJSON string, depth int) { function FormatJSONIntoTraditional (line 428) | func FormatJSONIntoTraditional(explainJSON string) []ExplainRow { function ConvertExplainJSON2Row (line 465) | func ConvertExplainJSON2Row(explainJSON *ExplainJSON) []ExplainRow { method supportExplainWrite (line 475) | func (db *Connector) supportExplainWrite() (bool, error) { method explainAbleSQL (line 511) | func (db *Connector) explainAbleSQL(sql string) (string, error) { method explainQuery (line 567) | func (db *Connector) explainQuery(sql string, explainType int, formatTyp... function MySQLExplainWarnings (line 607) | func MySQLExplainWarnings(exp *ExplainInfo) string { function MySQLExplainQueryCost (line 617) | func MySQLExplainQueryCost(exp *ExplainInfo) string { function ExplainInfoTranslator (line 638) | func ExplainInfoTranslator(exp *ExplainInfo) string { function ParseExplainText (line 742) | func ParseExplainText(content string) (exp *ExplainInfo, err error) { function parseTraditionalExplainText (line 770) | func parseTraditionalExplainText(content string) (explainRows []ExplainR... function parseVerticalExplainText (line 866) | func parseVerticalExplainText(content string) (explainRows []ExplainRow,... function parseJSONExplainText (line 945) | func parseJSONExplainText(content string) (*ExplainJSON, error) { function ParseExplainResult (line 952) | func ParseExplainResult(res QueryResult, formatType int) (exp *ExplainIn... method Explain (line 1068) | func (db *Connector) Explain(sql string, explainType int, formatType int... function PrintMarkdownExplainTable (line 1100) | func PrintMarkdownExplainTable(exp *ExplainInfo) string { FILE: database/explain_test.go function TestExplain (line 2336) | func TestExplain(t *testing.T) { function TestParseExplainText (line 2359) | func TestParseExplainText(t *testing.T) { function TestFindTablesInJson (line 2375) | func TestFindTablesInJson(t *testing.T) { function TestFormatJsonIntoTraditional (line 2386) | func TestFormatJsonIntoTraditional(t *testing.T) { function TestPrintMarkdownExplainTable (line 2396) | func TestPrintMarkdownExplainTable(t *testing.T) { function TestExplainInfoTranslator (line 2412) | func TestExplainInfoTranslator(t *testing.T) { function TestMySQLExplainWarnings (line 2427) | func TestMySQLExplainWarnings(t *testing.T) { function TestMySQLExplainQueryCost (line 2442) | func TestMySQLExplainQueryCost(t *testing.T) { function TestSupportExplainWrite (line 2458) | func TestSupportExplainWrite(t *testing.T) { function TestExplainAbleSQL (line 2467) | func TestExplainAbleSQL(t *testing.T) { FILE: database/mysql.go type Connector (line 38) | type Connector struct method Query (line 73) | func (db *Connector) Query(sql string, params ...interface{}) (QueryRe... method Version (line 127) | func (db *Connector) Version() (int, error) { method SingleIntValue (line 156) | func (db *Connector) SingleIntValue(option string) (int, error) { method ColumnCardinality (line 175) | func (db *Connector) ColumnCardinality(tb, col string) float64 { method IsView (line 242) | func (db *Connector) IsView(tbName string) bool { method dangerousQuery (line 328) | func (db *Connector) dangerousQuery(query string) bool { type QueryResult (line 48) | type QueryResult struct function NewConnector (line 56) | func NewConnector(dsn *common.Dsn) (*Connector, error) { function RemoveSQLComments (line 307) | func RemoveSQLComments(sql string) string { constant TimeFormat (line 360) | TimeFormat = "2006-01-02 15:04:05.000000000" function TimeString (line 363) | func TimeString(t time.Time) string { function NullString (line 374) | func NullString(buf []byte) string { function NullFloat (line 382) | func NullFloat(buf []byte) float64 { function NullInt (line 391) | func NullInt(buf []byte) int64 { function quoteEscape (line 400) | func quoteEscape(source string) string { function stringEscape (line 419) | func stringEscape(source string) string { function Escape (line 466) | func Escape(source string, NoBackslashEscapes bool) string { FILE: database/mysql_test.go function TestMain (line 35) | func TestMain(m *testing.M) { function TestQuery (line 64) | func TestQuery(t *testing.T) { function TestColumnCardinality (line 85) | func TestColumnCardinality(t *testing.T) { function TestDangerousSQL (line 97) | func TestDangerousSQL(t *testing.T) { function TestWarningsAndQueryCost (line 116) | func TestWarningsAndQueryCost(t *testing.T) { function TestVersion (line 139) | func TestVersion(t *testing.T) { function TestRemoveSQLComments (line 149) | func TestRemoveSQLComments(t *testing.T) { function TestSingleIntValue (line 187) | func TestSingleIntValue(t *testing.T) { function TestIsView (line 199) | func TestIsView(t *testing.T) { function TestNullString (line 214) | func TestNullString(t *testing.T) { function TestEscape (line 228) | func TestEscape(t *testing.T) { FILE: database/privilege.go method CurrentUser (line 28) | func (db *Connector) CurrentUser() (string, string, error) { method HasSelectPrivilege (line 57) | func (db *Connector) HasSelectPrivilege() bool { method HasAllPrivilege (line 86) | func (db *Connector) HasAllPrivilege() bool { FILE: database/privilege_test.go function TestCurrentUser (line 25) | func TestCurrentUser(t *testing.T) { function TestHasSelectPrivilege (line 37) | func TestHasSelectPrivilege(t *testing.T) { function TestHasAllPrivilege (line 45) | func TestHasAllPrivilege(t *testing.T) { FILE: database/profiling.go type Profiling (line 30) | type Profiling struct type ProfilingRow (line 35) | type ProfilingRow struct method Profiling (line 42) | func (db *Connector) Profiling(sql string, params ...interface{}) ([]Pro... function FormatProfiling (line 118) | func FormatProfiling(rows []ProfilingRow) string { FILE: database/profiling_test.go function TestProfiling (line 27) | func TestProfiling(t *testing.T) { function TestFormatProfiling (line 41) | func TestFormatProfiling(t *testing.T) { FILE: database/sampling.go method SamplingData (line 50) | func (db *Connector) SamplingData(onlineConn *Connector, tables ...strin... method startSampling (line 102) | func (db *Connector) startSampling(onlineConn *sql.DB, database, table s... method doSampling (line 181) | func (db *Connector) doSampling(table, colDef, values string) error { FILE: database/show.go type TableStatInfo (line 32) | type TableStatInfo struct type tableStatusRow (line 39) | type tableStatusRow struct type deleteComaType (line 74) | type deleteComaType constant _ (line 77) | _ deleteComaType = iota constant CS (line 78) | CS constant PART (line 79) | PART function newTableStat (line 83) | func newTableStat(tableName string) *TableStatInfo { method ShowTables (line 91) | func (db *Connector) ShowTables() ([]string, error) { method ShowTableStatus (line 120) | func (db *Connector) ShowTableStatus(tableName string) (*TableStatInfo, ... type TableIndexInfo (line 181) | type TableIndexInfo struct method FindIndex (line 282) | func (tbIndex *TableIndexInfo) FindIndex(arg IndexSelectKey, value str... type TableIndexRow (line 187) | type TableIndexRow struct function NewTableIndexInfo (line 206) | func NewTableIndexInfo(tableName string) *TableIndexInfo { method ShowIndex (line 214) | func (db *Connector) ShowIndex(tableName string) (*TableIndexInfo, error) { type IndexSelectKey (line 271) | type IndexSelectKey constant IndexKeyName (line 275) | IndexKeyName = IndexSelectKey("KeyName") constant IndexColumnName (line 276) | IndexColumnName = IndexSelectKey("ColumnName") constant IndexIndexType (line 277) | IndexIndexType = IndexSelectKey("IndexType") constant IndexNonUnique (line 278) | IndexNonUnique = IndexSelectKey("NonUnique") type TableDesc (line 331) | type TableDesc struct method Columns (line 405) | func (td TableDesc) Columns() []string { type TableDescValue (line 337) | type TableDescValue struct function NewTableDesc (line 350) | func NewTableDesc(tableName string) *TableDesc { method ShowColumns (line 358) | func (db *Connector) ShowColumns(tableName string) (*TableDesc, error) { method showCreate (line 414) | func (db *Connector) showCreate(createType, name string) (string, error) { method ShowCreateDatabase (line 463) | func (db *Connector) ShowCreateDatabase(dbName string) (string, error) { method ShowCreateTable (line 474) | func (db *Connector) ShowCreateTable(tableName string) (string, error) { method FindColumn (line 525) | func (db *Connector) FindColumn(name, dbName string, tables ...string) (... method IsForeignKey (line 598) | func (db *Connector) IsForeignKey(dbName, tbName, column string) bool { type Reference (line 619) | type Reference type ReferenceValue (line 622) | type ReferenceValue struct method ShowReference (line 631) | func (db *Connector) ShowReference(dbName string, tbName ...string) ([]R... FILE: database/show_test.go function TestShowTableStatus (line 28) | func TestShowTableStatus(t *testing.T) { function TestShowTables (line 54) | func TestShowTables(t *testing.T) { function TestShowCreateDatabase (line 75) | func TestShowCreateDatabase(t *testing.T) { function TestShowCreateTable (line 86) | func TestShowCreateTable(t *testing.T) { function TestShowIndex (line 112) | func TestShowIndex(t *testing.T) { function TestShowColumns (line 132) | func TestShowColumns(t *testing.T) { function TestFindColumn (line 152) | func TestFindColumn(t *testing.T) { function TestIsFKey (line 167) | func TestIsFKey(t *testing.T) { function TestShowReference (line 175) | func TestShowReference(t *testing.T) { FILE: database/trace.go type Trace (line 31) | type Trace struct type TraceRow (line 36) | type TraceRow struct method Trace (line 44) | func (db *Connector) Trace(sql string, params ...interface{}) ([]TraceRo... function FormatTrace (line 126) | func FormatTrace(rows []TraceRow) string { FILE: database/trace_test.go function TestTrace (line 27) | func TestTrace(t *testing.T) { function TestFormatTrace (line 46) | func TestFormatTrace(t *testing.T) { FILE: doc/example/digest_pt.py function printStatInfo (line 13) | def printStatInfo(buf): function printSqlAdvisor (line 23) | def printSqlAdvisor(buf): function getUseDB (line 47) | def getUseDB(line): function parsePtQueryDisget (line 51) | def parsePtQueryDisget(f): function main (line 79) | def main(): FILE: doc/js/pretty.js function E (line 5) | function E(n) { function n (line 19) | function n(e) { function n (line 61) | function n(e, E) { function n (line 71) | function n(e) { function e (line 90) | function e(E, t) { function n (line 138) | function n(e) { function e (line 153) | function e(E) { function t (line 328) | function t(e) { function n (line 351) | function n(e) { function n (line 358) | function n(e) { function n (line 364) | function n(e) { function t (line 377) | function t(e) { function n (line 392) | function n(e) { function t (line 403) | function t(e) { function n (line 408) | function n(e) { function n (line 419) | function n(e) { function e (line 434) | function e(E) { function n (line 456) | function n(e) { function e (line 468) | function e() { function n (line 496) | function n(e) { function e (line 505) | function e(E) { function n (line 518) | function n(e) { function e (line 535) | function e(E) { function n (line 557) | function n(e) { function e (line 574) | function e(E) { function n (line 594) | function n(e) { function e (line 611) | function e(E) { function n (line 633) | function n(e) { function e (line 650) | function e(E) { function t (line 698) | function t(e) { function t (line 703) | function t(e, E, t, n) { function t (line 710) | function t(e) { function n (line 717) | function n(e, E, t) { function t (line 725) | function t(e) { function n (line 730) | function n(e) { function t (line 748) | function t(e, E) { function t (line 758) | function t(e, E, t) { function n (line 767) | function n(e, E, t) { function n (line 774) | function n(e, E) { function t (line 832) | function t(e, E) { function t (line 837) | function t(e) { function t (line 848) | function t(e, E) { function n (line 855) | function n(e, E, t) { function n (line 866) | function n(e) { function t (line 876) | function t(e) { function t (line 888) | function t(e, E) { function t (line 895) | function t(e, E, t) { function n (line 902) | function n(e) { function t (line 910) | function t(e) { function t (line 933) | function t(e, E) { function n (line 938) | function n(e) { function n (line 946) | function n(e) { function n (line 960) | function n(e) { function n (line 979) | function n(e) { function t (line 1001) | function t(e) { function t (line 1007) | function t(e) { function n (line 1013) | function n(e, E, t) { function t (line 1022) | function t() { function n (line 1027) | function n(e) { function n (line 1040) | function n(e) { function n (line 1048) | function n(e) { function n (line 1070) | function n(e, E, t) { function escape2Html (line 1091) | function escape2Html(str) { function load (line 1104) | function load() { FILE: env/env.go type VirtualEnv (line 34) | type VirtualEnv struct method RealDB (line 115) | func (vEnv *VirtualEnv) RealDB(hash string) string { method DBHash (line 127) | func (vEnv *VirtualEnv) DBHash(db string) string { method CleanUp (line 135) | func (vEnv *VirtualEnv) CleanUp() bool { method CleanupTestDatabase (line 156) | func (vEnv *VirtualEnv) CleanupTestDatabase() { method BuildVirtualEnv (line 235) | func (vEnv *VirtualEnv) BuildVirtualEnv(rEnv *database.Connector, SQLs... method createDatabase (line 389) | func (vEnv *VirtualEnv) createDatabase(rEnv *database.Connector) error { method createTable (line 450) | func (vEnv *VirtualEnv) createTable(rEnv *database.Connector, tbName s... method GenTableColumns (line 510) | func (vEnv *VirtualEnv) GenTableColumns(meta common.Meta) common.Table... function NewVirtualEnv (line 47) | func NewVirtualEnv(vEnv *database.Connector) *VirtualEnv { function BuildEnv (line 59) | func BuildEnv() (*VirtualEnv, *database.Connector) { function ChangeDB (line 201) | func ChangeDB(env *database.Connector, sql string) { function CurrentDB (line 215) | func CurrentDB(sql, db string) string { FILE: env/env_test.go function TestMain (line 38) | func TestMain(m *testing.M) { function TestNewVirtualEnv (line 67) | func TestNewVirtualEnv(t *testing.T) { function TestCleanupTestDatabase (line 140) | func TestCleanupTestDatabase(t *testing.T) { function TestGenTableColumns (line 170) | func TestGenTableColumns(t *testing.T) { function TestCreateTable (line 238) | func TestCreateTable(t *testing.T) { function TestCreateDatabase (line 281) | func TestCreateDatabase(t *testing.T) {