Skip to content

Commit

Permalink
[CBRD-20334]: Added authentication disable in do_insert_checks (#122)
Browse files Browse the repository at this point in the history
  • Loading branch information
lucianlazar2211 committed Jun 29, 2016
1 parent d905eb3 commit 207d6fb
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions src/query/execute_statement.c
Expand Up @@ -17090,17 +17090,19 @@ do_insert_checks (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE ** class
int error = NO_ERROR;
int upd_has_uniques = 0;
bool has_default_values_list = false;

int save_au;
*update = NULL;

AU_DISABLE (save_au);
/* Check if server allows an insert. */
error = is_server_insert_allowed (parser, statement);
if (error != NO_ERROR)
{
ASSERT_ERROR ();
return error;
goto exit;
}


/* Check non null attrs. */
if (values->info.node_list.list_type == PT_IS_DEFAULT_VALUE)
{
Expand All @@ -17110,21 +17112,25 @@ do_insert_checks (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE ** class
error =
check_missing_non_null_attrs (parser, statement->info.insert.spec, statement->info.insert.attr_list,
has_default_values_list);



if (error != NO_ERROR)
{
ASSERT_ERROR ();
return error;
goto exit;
}

/* Test if server UPDATE is allowed */

if (statement->info.insert.odku_assignments != NULL)
{
*update = do_create_odku_stmt (parser, statement);

if (*update == NULL)
{
error = ER_FAILED;
return error;
goto exit;
}
if (statement->info.insert.server_allowed == SERVER_INSERT_IS_ALLOWED)
{
Expand All @@ -17136,12 +17142,12 @@ do_insert_checks (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE ** class
if (error != NO_ERROR)
{
ASSERT_ERROR ();
return error;
goto exit;
}
if (!server_allowed)
{
statement->info.insert.server_allowed = SERVER_INSERT_IS_NOT_ALLOWED;
return error;
goto exit;
}
}
}
Expand All @@ -17153,27 +17159,31 @@ do_insert_checks (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE ** class
if (statement->info.insert.do_replace || statement->info.insert.odku_assignments != NULL)
{
int allowed = 0;

error = is_replace_or_odku_allowed ((*class_)->info.name.db_object, &allowed);

if (error != NO_ERROR)
{
ASSERT_ERROR ();
return error;
goto exit;
}

if (!allowed)
{
er_set (ER_ERROR_SEVERITY, ARG_FILE_LINE, ER_REPLACE_ODKU_NOT_ALLOWED, 0);
ASSERT_ERROR_AND_SET (error);
return error;
goto exit;
}
}

/* fetch the class for instance write purpose */
if (!locator_fetch_class ((*class_)->info.name.db_object, DB_FETCH_CLREAD_INSTWRITE))
{
ASSERT_ERROR_AND_SET (error);
return error;
goto exit;
}

exit:
AU_ENABLE (save_au);
return error;
}

0 comments on commit 207d6fb

Please sign in to comment.