MXS-1337 Moved functions to QcSqliteInfo
This commit is contained in:
@ -187,19 +187,6 @@ static void update_field_infos(QcSqliteInfo* info,
|
|||||||
uint32_t usage,
|
uint32_t usage,
|
||||||
qc_token_position_t pos,
|
qc_token_position_t pos,
|
||||||
const ExprList* pExclude);
|
const ExprList* pExclude);
|
||||||
static void update_field_infos_from_exprlist(QcSqliteInfo* info,
|
|
||||||
QcAliases* pAliases,
|
|
||||||
const ExprList* pEList,
|
|
||||||
uint32_t usage,
|
|
||||||
const ExprList* pExclude);
|
|
||||||
static void update_field_infos_from_idlist(QcSqliteInfo* info,
|
|
||||||
QcAliases* pAliases,
|
|
||||||
const IdList* pIds,
|
|
||||||
uint32_t usage,
|
|
||||||
const ExprList* pExclude);
|
|
||||||
static void update_field_infos_from_with(QcSqliteInfo* info,
|
|
||||||
QcAliases* pAliases,
|
|
||||||
const With* pWith);
|
|
||||||
static void update_function_info(QcSqliteInfo* info,
|
static void update_function_info(QcSqliteInfo* info,
|
||||||
const char* name,
|
const char* name,
|
||||||
uint32_t usage);
|
uint32_t usage);
|
||||||
@ -778,6 +765,32 @@ public:
|
|||||||
return truth;
|
return truth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_field_infos_from_exprlist(QcAliases* pAliases,
|
||||||
|
const ExprList* pEList,
|
||||||
|
uint32_t usage,
|
||||||
|
const ExprList* pExclude)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < pEList->nExpr; ++i)
|
||||||
|
{
|
||||||
|
ExprList::ExprList_item* pItem = &pEList->a[i];
|
||||||
|
|
||||||
|
update_field_infos(this, pAliases, 0, pItem->pExpr, usage, QC_TOKEN_MIDDLE, pExclude);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void update_field_infos_from_idlist(QcAliases* pAliases,
|
||||||
|
const IdList* pIds,
|
||||||
|
uint32_t usage,
|
||||||
|
const ExprList* pExclude)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < pIds->nId; ++i)
|
||||||
|
{
|
||||||
|
IdList::IdList_item* pItem = &pIds->a[i];
|
||||||
|
|
||||||
|
update_field_info(pAliases, NULL, NULL, pItem->zName, usage, pExclude);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void update_field_infos_from_select(QcAliases& aliases,
|
void update_field_infos_from_select(QcAliases& aliases,
|
||||||
const Select* pSelect,
|
const Select* pSelect,
|
||||||
uint32_t usage,
|
uint32_t usage,
|
||||||
@ -819,7 +832,7 @@ public:
|
|||||||
|
|
||||||
if (pSelect->pEList)
|
if (pSelect->pEList)
|
||||||
{
|
{
|
||||||
update_field_infos_from_exprlist(this, &aliases, pSelect->pEList, usage, NULL);
|
update_field_infos_from_exprlist(&aliases, pSelect->pEList, usage, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pSelect->pWhere)
|
if (pSelect->pWhere)
|
||||||
@ -831,7 +844,7 @@ public:
|
|||||||
|
|
||||||
if (pSelect->pGroupBy)
|
if (pSelect->pGroupBy)
|
||||||
{
|
{
|
||||||
update_field_infos_from_exprlist(this, &aliases,
|
update_field_infos_from_exprlist(&aliases,
|
||||||
pSelect->pGroupBy, QC_USED_IN_GROUP_BY, pSelect->pEList);
|
pSelect->pGroupBy, QC_USED_IN_GROUP_BY, pSelect->pEList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -847,7 +860,7 @@ public:
|
|||||||
|
|
||||||
if (pSelect->pWith)
|
if (pSelect->pWith)
|
||||||
{
|
{
|
||||||
update_field_infos_from_with(this, &aliases, pSelect->pWith);
|
update_field_infos_from_with(&aliases, pSelect->pWith);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((pSelect->op == TK_UNION) || (pSelect->op == TK_ALL)) && pSelect->pPrior)
|
if (((pSelect->op == TK_UNION) || (pSelect->op == TK_ALL)) && pSelect->pPrior)
|
||||||
@ -866,6 +879,36 @@ public:
|
|||||||
update_field_infos_from_select(aliases, pSelect, usage, pExclude);
|
update_field_infos_from_select(aliases, pSelect, usage, pExclude);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_field_infos_from_with(QcAliases* pAliases, const With* pWith)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < pWith->nCte; ++i)
|
||||||
|
{
|
||||||
|
const With::Cte* pCte = &pWith->a[i];
|
||||||
|
|
||||||
|
if (pCte->pSelect)
|
||||||
|
{
|
||||||
|
update_field_infos_from_subselect(pAliases, pCte->pSelect, QC_USED_IN_SUBSELECT, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void update_names_from_srclist(QcAliases* pAliases,
|
||||||
|
const SrcList* pSrc)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < pSrc->nSrc; ++i)
|
||||||
|
{
|
||||||
|
if (pSrc->a[i].zName)
|
||||||
|
{
|
||||||
|
update_names(pSrc->a[i].zDatabase, pSrc->a[i].zName, pSrc->a[i].zAlias, pAliases);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pSrc->a[i].pSelect && pSrc->a[i].pSelect->pSrc)
|
||||||
|
{
|
||||||
|
update_names_from_srclist(pAliases, pSrc->a[i].pSelect->pSrc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// sqlite3 callbacks
|
// sqlite3 callbacks
|
||||||
//
|
//
|
||||||
@ -883,7 +926,7 @@ public:
|
|||||||
{
|
{
|
||||||
ss_dassert(this_thread.initialized);
|
ss_dassert(this_thread.initialized);
|
||||||
|
|
||||||
update_names_from_srclist(this, NULL, pSrcList);
|
update_names_from_srclist(NULL, pSrcList);
|
||||||
|
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pSrcList);
|
exposed_sqlite3SrcListDelete(pParse->db, pSrcList);
|
||||||
}
|
}
|
||||||
@ -895,7 +938,7 @@ public:
|
|||||||
m_status = QC_QUERY_PARSED;
|
m_status = QC_QUERY_PARSED;
|
||||||
m_type_mask = (QUERY_TYPE_WRITE | QUERY_TYPE_COMMIT);
|
m_type_mask = (QUERY_TYPE_WRITE | QUERY_TYPE_COMMIT);
|
||||||
|
|
||||||
update_names_from_srclist(this, NULL, pSrcList);
|
update_names_from_srclist(NULL, pSrcList);
|
||||||
|
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pSrcList);
|
exposed_sqlite3SrcListDelete(pParse->db, pSrcList);
|
||||||
}
|
}
|
||||||
@ -972,7 +1015,7 @@ public:
|
|||||||
|
|
||||||
if (pTblName)
|
if (pTblName)
|
||||||
{
|
{
|
||||||
update_names_from_srclist(this, NULL, pTblName);
|
update_names_from_srclist(NULL, pTblName);
|
||||||
}
|
}
|
||||||
else if (pParse->pNewTable)
|
else if (pParse->pNewTable)
|
||||||
{
|
{
|
||||||
@ -1088,7 +1131,7 @@ public:
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
update_names_from_srclist(this, &aliases, pTabList);
|
update_names_from_srclist(&aliases, pTabList);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pWhere)
|
if (pWhere)
|
||||||
@ -1110,7 +1153,7 @@ public:
|
|||||||
m_type_mask = (QUERY_TYPE_WRITE | QUERY_TYPE_COMMIT);
|
m_type_mask = (QUERY_TYPE_WRITE | QUERY_TYPE_COMMIT);
|
||||||
m_operation = QUERY_OP_DROP;
|
m_operation = QUERY_OP_DROP;
|
||||||
|
|
||||||
update_names_from_srclist(this, NULL, pTable);
|
update_names_from_srclist(NULL, pTable);
|
||||||
|
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pName);
|
exposed_sqlite3SrcListDelete(pParse->db, pName);
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pTable);
|
exposed_sqlite3SrcListDelete(pParse->db, pTable);
|
||||||
@ -1131,7 +1174,7 @@ public:
|
|||||||
{
|
{
|
||||||
m_is_drop_table = true;
|
m_is_drop_table = true;
|
||||||
}
|
}
|
||||||
update_names_from_srclist(this, NULL, pName);
|
update_names_from_srclist(NULL, pName);
|
||||||
|
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pName);
|
exposed_sqlite3SrcListDelete(pParse->db, pName);
|
||||||
}
|
}
|
||||||
@ -1152,7 +1195,7 @@ public:
|
|||||||
}
|
}
|
||||||
else if (pOldTable)
|
else if (pOldTable)
|
||||||
{
|
{
|
||||||
update_names_from_srclist(this, NULL, pOldTable);
|
update_names_from_srclist(NULL, pOldTable);
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pOldTable);
|
exposed_sqlite3SrcListDelete(pParse->db, pOldTable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1177,11 +1220,11 @@ public:
|
|||||||
|
|
||||||
QcAliases aliases;
|
QcAliases aliases;
|
||||||
|
|
||||||
update_names_from_srclist(this, &aliases, pTabList);
|
update_names_from_srclist(&aliases, pTabList);
|
||||||
|
|
||||||
if (pColumns)
|
if (pColumns)
|
||||||
{
|
{
|
||||||
update_field_infos_from_idlist(this, &aliases, pColumns, 0, NULL);
|
update_field_infos_from_idlist(&aliases, pColumns, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pSelect)
|
if (pSelect)
|
||||||
@ -1202,7 +1245,7 @@ public:
|
|||||||
|
|
||||||
if (pSet)
|
if (pSet)
|
||||||
{
|
{
|
||||||
update_field_infos_from_exprlist(this, &aliases, pSet, 0, NULL);
|
update_field_infos_from_exprlist(&aliases, pSet, 0, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1307,7 +1350,7 @@ public:
|
|||||||
|
|
||||||
m_type_mask = QUERY_TYPE_WRITE;
|
m_type_mask = QUERY_TYPE_WRITE;
|
||||||
m_operation = QUERY_OP_UPDATE;
|
m_operation = QUERY_OP_UPDATE;
|
||||||
update_names_from_srclist(this, &aliases, pTabList);
|
update_names_from_srclist(&aliases, pTabList);
|
||||||
m_has_clause = (pWhere ? true : false);
|
m_has_clause = (pWhere ? true : false);
|
||||||
|
|
||||||
if (pChanges)
|
if (pChanges)
|
||||||
@ -1377,15 +1420,15 @@ public:
|
|||||||
switch (command)
|
switch (command)
|
||||||
{
|
{
|
||||||
case MXS_ALTER_DISABLE_KEYS:
|
case MXS_ALTER_DISABLE_KEYS:
|
||||||
update_names_from_srclist(this, NULL, pSrc);
|
update_names_from_srclist(NULL, pSrc);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MXS_ALTER_ENABLE_KEYS:
|
case MXS_ALTER_ENABLE_KEYS:
|
||||||
update_names_from_srclist(this, NULL, pSrc);
|
update_names_from_srclist(NULL, pSrc);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MXS_ALTER_RENAME:
|
case MXS_ALTER_RENAME:
|
||||||
update_names_from_srclist(this, NULL, pSrc);
|
update_names_from_srclist(NULL, pSrc);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -1404,7 +1447,7 @@ public:
|
|||||||
|
|
||||||
if (pExprList)
|
if (pExprList)
|
||||||
{
|
{
|
||||||
update_field_infos_from_exprlist(this, NULL, pExprList, 0, NULL);
|
update_field_infos_from_exprlist(NULL, pExprList, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pName);
|
exposed_sqlite3SrcListDelete(pParse->db, pName);
|
||||||
@ -1418,7 +1461,7 @@ public:
|
|||||||
m_status = QC_QUERY_PARSED;
|
m_status = QC_QUERY_PARSED;
|
||||||
m_type_mask = (QUERY_TYPE_WRITE | QUERY_TYPE_COMMIT);
|
m_type_mask = (QUERY_TYPE_WRITE | QUERY_TYPE_COMMIT);
|
||||||
|
|
||||||
update_names_from_srclist(this, NULL, pTables);
|
update_names_from_srclist(NULL, pTables);
|
||||||
|
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pTables);
|
exposed_sqlite3SrcListDelete(pParse->db, pTables);
|
||||||
}
|
}
|
||||||
@ -1674,7 +1717,7 @@ public:
|
|||||||
|
|
||||||
if (pFullName)
|
if (pFullName)
|
||||||
{
|
{
|
||||||
update_names_from_srclist(this, NULL, pFullName);
|
update_names_from_srclist(NULL, pFullName);
|
||||||
|
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pFullName);
|
exposed_sqlite3SrcListDelete(pParse->db, pFullName);
|
||||||
}
|
}
|
||||||
@ -1689,7 +1732,7 @@ public:
|
|||||||
|
|
||||||
if (pTables)
|
if (pTables)
|
||||||
{
|
{
|
||||||
update_names_from_srclist(this, NULL, pTables);
|
update_names_from_srclist(NULL, pTables);
|
||||||
|
|
||||||
exposed_sqlite3SrcListDelete(pParse->db, pTables);
|
exposed_sqlite3SrcListDelete(pParse->db, pTables);
|
||||||
}
|
}
|
||||||
@ -3206,21 +3249,6 @@ static void update_field_infos_from_expr(QcSqliteInfo* info,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_field_infos_from_with(QcSqliteInfo* pInfo,
|
|
||||||
QcAliases* pAliases,
|
|
||||||
const With* pWith)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < pWith->nCte; ++i)
|
|
||||||
{
|
|
||||||
const With::Cte* pCte = &pWith->a[i];
|
|
||||||
|
|
||||||
if (pCte->pSelect)
|
|
||||||
{
|
|
||||||
pInfo->update_field_infos_from_subselect(pAliases, pCte->pSelect, QC_USED_IN_SUBSELECT, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char* get_token_symbol(int token)
|
static const char* get_token_symbol(int token)
|
||||||
{
|
{
|
||||||
switch (token)
|
switch (token)
|
||||||
@ -3502,7 +3530,7 @@ static void update_field_infos(QcSqliteInfo* info,
|
|||||||
case TK_FUNCTION:
|
case TK_FUNCTION:
|
||||||
if (!ignore_exprlist)
|
if (!ignore_exprlist)
|
||||||
{
|
{
|
||||||
update_field_infos_from_exprlist(info, pAliases, pExpr->x.pList, usage, pExclude);
|
info->update_field_infos_from_exprlist(pAliases, pExpr->x.pList, usage, pExclude);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -3519,7 +3547,7 @@ static void update_field_infos(QcSqliteInfo* info,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
update_field_infos_from_exprlist(info, pAliases, pExpr->x.pList, usage, pExclude);
|
info->update_field_infos_from_exprlist(pAliases, pExpr->x.pList, usage, pExclude);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3528,52 +3556,6 @@ static void update_field_infos(QcSqliteInfo* info,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_field_infos_from_exprlist(QcSqliteInfo* info,
|
|
||||||
QcAliases* pAliases,
|
|
||||||
const ExprList* pEList,
|
|
||||||
uint32_t usage,
|
|
||||||
const ExprList* pExclude)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < pEList->nExpr; ++i)
|
|
||||||
{
|
|
||||||
ExprList::ExprList_item* pItem = &pEList->a[i];
|
|
||||||
|
|
||||||
update_field_infos(info, pAliases, 0, pItem->pExpr, usage, QC_TOKEN_MIDDLE, pExclude);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void update_field_infos_from_idlist(QcSqliteInfo* info,
|
|
||||||
QcAliases* pAliases,
|
|
||||||
const IdList* pIds,
|
|
||||||
uint32_t usage,
|
|
||||||
const ExprList* pExclude)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < pIds->nId; ++i)
|
|
||||||
{
|
|
||||||
IdList::IdList_item* pItem = &pIds->a[i];
|
|
||||||
|
|
||||||
info->update_field_info(pAliases, NULL, NULL, pItem->zName, usage, pExclude);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void update_names_from_srclist(QcSqliteInfo* pInfo,
|
|
||||||
QcAliases* pAliases,
|
|
||||||
const SrcList* pSrc)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < pSrc->nSrc; ++i)
|
|
||||||
{
|
|
||||||
if (pSrc->a[i].zName)
|
|
||||||
{
|
|
||||||
pInfo->update_names(pSrc->a[i].zDatabase, pSrc->a[i].zName, pSrc->a[i].zAlias, pAliases);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pSrc->a[i].pSelect && pSrc->a[i].pSelect->pSrc)
|
|
||||||
{
|
|
||||||
update_names_from_srclist(pInfo, pAliases, pSrc->a[i].pSelect->pSrc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* SQLITE
|
* SQLITE
|
||||||
|
Reference in New Issue
Block a user