this issue seems to have been known for a while (#1272786: Exception: Query tagged for node access but there is no nid...) but i don't see it raised on Views yet; i am just listing it here to keep a record.

yes, i know, a test View would be useful, i will try to create one off a clean drupal install.

from the post listed above i think the basic idea is that:

- user view
- relationship defined
- sql rewrite enabled (disabling this removes error condition)

throws this exception error in the node.module:

Exception: Query tagged for node access but there is no nid. Add foreign keys to node.nid in schema to fix. in _node_query_node_access_alter() (line 3218 of E:\wamp\www\mit\modules\node\node.module).

for any non admin role (possibly more specific than this) trying to access a page that would display this view (even if the view has no results and is not rendered).

Comments

dawehner’s picture

Status: Active » Postponed (maintainer needs more info)

Oh man, how often did you questions the following thing to you?
Can you please export your view? Thanks!

Anyway i think this is a duplicate of #1222324: Fix query access control on relationships (comments)

liquidcms’s picture

hey, dont shoot the messenger.. lol.. i am just logging this issue since 4 or 5 other people have reported in general forums and i thought it should be posted in Views queue since it seemed pretty obvious a views issue. also, never quite get what you are looking for for an export since you can't import this.. but i guess can still see a lot in the txt of the export.

so here is export.. BUT.. this view DOES work ok.. because it has the sql rewrite disabled; but enabling it as it should be and the view will cause exception error if not admin.

$view = new view;
$view->name = 'student_projects';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'users';
$view->human_name = 'Student Blocks';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'projects';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access user profiles';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['disable_sql_rewrite'] = TRUE;
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['hide_empty'] = 1;
$handler->display->display_options['row_options']['default_field_elements'] = 1;
/* Relationship: User: Profile */
$handler->display->display_options['relationships']['profile']['id'] = 'profile';
$handler->display->display_options['relationships']['profile']['table'] = 'users';
$handler->display->display_options['relationships']['profile']['field'] = 'profile';
$handler->display->display_options['relationships']['profile']['required'] = 0;
/* Relationship: Profile: Projects (field_student_projects) */
$handler->display->display_options['relationships']['field_student_projects_nid']['id'] = 'field_student_projects_nid';
$handler->display->display_options['relationships']['field_student_projects_nid']['table'] = 'field_data_field_student_projects';
$handler->display->display_options['relationships']['field_student_projects_nid']['field'] = 'field_student_projects_nid';
$handler->display->display_options['relationships']['field_student_projects_nid']['relationship'] = 'profile';
$handler->display->display_options['relationships']['field_student_projects_nid']['required'] = 0;
$handler->display->display_options['relationships']['field_student_projects_nid']['delta'] = '-1';
/* Field: Profile: Projects */
$handler->display->display_options['fields']['field_student_projects']['id'] = 'field_student_projects';
$handler->display->display_options['fields']['field_student_projects']['table'] = 'field_data_field_student_projects';
$handler->display->display_options['fields']['field_student_projects']['field'] = 'field_student_projects';
$handler->display->display_options['fields']['field_student_projects']['relationship'] = 'profile';
$handler->display->display_options['fields']['field_student_projects']['label'] = '';
$handler->display->display_options['fields']['field_student_projects']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['external'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['field_student_projects']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['field_student_projects']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['trim'] = 0;
$handler->display->display_options['fields']['field_student_projects']['alter']['html'] = 0;
$handler->display->display_options['fields']['field_student_projects']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_student_projects']['element_default_classes'] = 1;
$handler->display->display_options['fields']['field_student_projects']['hide_empty'] = 1;
$handler->display->display_options['fields']['field_student_projects']['empty_zero'] = 1;
$handler->display->display_options['fields']['field_student_projects']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['field_student_projects']['group_rows'] = 0;
$handler->display->display_options['fields']['field_student_projects']['delta_offset'] = '0';
$handler->display->display_options['fields']['field_student_projects']['delta_reversed'] = 0;
$handler->display->display_options['fields']['field_student_projects']['field_api_classes'] = 0;
/* Sort criterion: Profile: Projects (field_student_projects:delta) */
$handler->display->display_options['sorts']['delta']['id'] = 'delta';
$handler->display->display_options['sorts']['delta']['table'] = 'field_data_field_student_projects';
$handler->display->display_options['sorts']['delta']['field'] = 'delta';
$handler->display->display_options['sorts']['delta']['relationship'] = 'profile';
/* Contextual filter: User: Uid */
$handler->display->display_options['arguments']['uid']['id'] = 'uid';
$handler->display->display_options['arguments']['uid']['table'] = 'users';
$handler->display->display_options['arguments']['uid']['field'] = 'uid';
$handler->display->display_options['arguments']['uid']['default_action'] = 'default';
$handler->display->display_options['arguments']['uid']['default_argument_type'] = 'user';
$handler->display->display_options['arguments']['uid']['default_argument_options']['user'] = FALSE;
$handler->display->display_options['arguments']['uid']['default_argument_skip_url'] = 0;
$handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['uid']['specify_validation'] = 1;
$handler->display->display_options['arguments']['uid']['break_phrase'] = 0;
$handler->display->display_options['arguments']['uid']['not'] = 0;
/* Filter criterion: User: Active */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'users';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = '1';
$handler->display->display_options['filters']['status']['group'] = 0;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Profile: Projects (field_student_projects) */
$handler->display->display_options['filters']['field_student_projects_nid']['id'] = 'field_student_projects_nid';
$handler->display->display_options['filters']['field_student_projects_nid']['table'] = 'field_data_field_student_projects';
$handler->display->display_options['filters']['field_student_projects_nid']['field'] = 'field_student_projects_nid';
$handler->display->display_options['filters']['field_student_projects_nid']['relationship'] = 'profile';
$handler->display->display_options['filters']['field_student_projects_nid']['operator'] = 'not empty';

/* Display: projects */
$handler = $view->new_display('block', 'projects', 'block');

/* Display: courses */
$handler = $view->new_display('block', 'courses', 'block_1');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['title'] = 'courses';
$handler->display->display_options['defaults']['relationships'] = FALSE;
/* Relationship: User: Profile */
$handler->display->display_options['relationships']['profile']['id'] = 'profile';
$handler->display->display_options['relationships']['profile']['table'] = 'users';
$handler->display->display_options['relationships']['profile']['field'] = 'profile';
$handler->display->display_options['relationships']['profile']['required'] = 0;
/* Relationship: Profile: Courses (field_student_courses) */
$handler->display->display_options['relationships']['field_student_courses_nid']['id'] = 'field_student_courses_nid';
$handler->display->display_options['relationships']['field_student_courses_nid']['table'] = 'field_data_field_student_courses';
$handler->display->display_options['relationships']['field_student_courses_nid']['field'] = 'field_student_courses_nid';
$handler->display->display_options['relationships']['field_student_courses_nid']['relationship'] = 'profile';
$handler->display->display_options['relationships']['field_student_courses_nid']['label'] = 'Courses';
$handler->display->display_options['relationships']['field_student_courses_nid']['required'] = 0;
$handler->display->display_options['relationships']['field_student_courses_nid']['delta'] = '-1';
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Field: Content: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
$handler->display->display_options['fields']['nid']['relationship'] = 'field_student_courses_nid';
$handler->display->display_options['fields']['nid']['label'] = '';
$handler->display->display_options['fields']['nid']['exclude'] = TRUE;
$handler->display->display_options['fields']['nid']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['nid']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['nid']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['nid']['alter']['external'] = 0;
$handler->display->display_options['fields']['nid']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['nid']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['nid']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['nid']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['nid']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['nid']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['nid']['alter']['trim'] = 0;
$handler->display->display_options['fields']['nid']['alter']['html'] = 0;
$handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['nid']['element_default_classes'] = 1;
$handler->display->display_options['fields']['nid']['hide_empty'] = 0;
$handler->display->display_options['fields']['nid']['empty_zero'] = 0;
$handler->display->display_options['fields']['nid']['hide_alter_empty'] = 0;
$handler->display->display_options['fields']['nid']['link_to_node'] = 0;
/* Field: Content: Linked */
$handler->display->display_options['fields']['field_linked']['id'] = 'field_linked';
$handler->display->display_options['fields']['field_linked']['table'] = 'field_data_field_linked';
$handler->display->display_options['fields']['field_linked']['field'] = 'field_linked';
$handler->display->display_options['fields']['field_linked']['relationship'] = 'field_student_courses_nid';
$handler->display->display_options['fields']['field_linked']['label'] = '';
$handler->display->display_options['fields']['field_linked']['exclude'] = TRUE;
$handler->display->display_options['fields']['field_linked']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['external'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['field_linked']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['field_linked']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['trim'] = 0;
$handler->display->display_options['fields']['field_linked']['alter']['html'] = 0;
$handler->display->display_options['fields']['field_linked']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_linked']['element_default_classes'] = 1;
$handler->display->display_options['fields']['field_linked']['empty'] = 'xx';
$handler->display->display_options['fields']['field_linked']['hide_empty'] = 0;
$handler->display->display_options['fields']['field_linked']['empty_zero'] = 1;
$handler->display->display_options['fields']['field_linked']['hide_alter_empty'] = 0;
$handler->display->display_options['fields']['field_linked']['type'] = 'list_key';
$handler->display->display_options['fields']['field_linked']['field_api_classes'] = 0;
/* Field: Content: Main course */
$handler->display->display_options['fields']['field_coursemain']['id'] = 'field_coursemain';
$handler->display->display_options['fields']['field_coursemain']['table'] = 'field_data_field_coursemain';
$handler->display->display_options['fields']['field_coursemain']['field'] = 'field_coursemain';
$handler->display->display_options['fields']['field_coursemain']['relationship'] = 'field_student_courses_nid';
$handler->display->display_options['fields']['field_coursemain']['label'] = '';
$handler->display->display_options['fields']['field_coursemain']['exclude'] = TRUE;
$handler->display->display_options['fields']['field_coursemain']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['external'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['field_coursemain']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['field_coursemain']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['trim'] = 0;
$handler->display->display_options['fields']['field_coursemain']['alter']['html'] = 0;
$handler->display->display_options['fields']['field_coursemain']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_coursemain']['element_default_classes'] = 1;
$handler->display->display_options['fields']['field_coursemain']['hide_empty'] = 0;
$handler->display->display_options['fields']['field_coursemain']['empty_zero'] = 0;
$handler->display->display_options['fields']['field_coursemain']['hide_alter_empty'] = 0;
$handler->display->display_options['fields']['field_coursemain']['type'] = 'text_plain';
$handler->display->display_options['fields']['field_coursemain']['field_api_classes'] = 0;
/* Field: Global: PHP */
$handler->display->display_options['fields']['php']['id'] = 'php';
$handler->display->display_options['fields']['php']['table'] = 'views';
$handler->display->display_options['fields']['php']['field'] = 'php';
$handler->display->display_options['fields']['php']['label'] = '';
$handler->display->display_options['fields']['php']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['php']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['php']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['php']['alter']['external'] = 0;
$handler->display->display_options['fields']['php']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['php']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['php']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['php']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['php']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['php']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['php']['alter']['trim'] = 0;
$handler->display->display_options['fields']['php']['alter']['html'] = 0;
$handler->display->display_options['fields']['php']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['php']['element_default_classes'] = 1;
$handler->display->display_options['fields']['php']['hide_empty'] = 0;
$handler->display->display_options['fields']['php']['empty_zero'] = 0;
$handler->display->display_options['fields']['php']['hide_alter_empty'] = 0;
$handler->display->display_options['fields']['php']['use_php_setup'] = 0;
$handler->display->display_options['fields']['php']['php_output'] = '<?php
//dpm($data);
$linked = $data->field_field_linked[0][\'raw\'][\'value\'];
$num = $data->field_field_coursemain[0][\'raw\'][\'value\'];
if ($linked) echo l($num, "node/$data->nid");
else echo $num;
?>';
$handler->display->display_options['fields']['php']['use_php_click_sortable'] = '0';
$handler->display->display_options['fields']['php']['php_click_sortable'] = '';
$handler->display->display_options['defaults']['sorts'] = FALSE;
$handler->display->display_options['defaults']['filters'] = FALSE;
/* Filter criterion: User: Active */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'users';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = '1';
$handler->display->display_options['filters']['status']['group'] = 0;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Profile: Courses (field_student_courses) */
$handler->display->display_options['filters']['field_student_courses_nid']['id'] = 'field_student_courses_nid';
$handler->display->display_options['filters']['field_student_courses_nid']['table'] = 'field_data_field_student_courses';
$handler->display->display_options['filters']['field_student_courses_nid']['field'] = 'field_student_courses_nid';
$handler->display->display_options['filters']['field_student_courses_nid']['relationship'] = 'profile';
$handler->display->display_options['filters']['field_student_courses_nid']['operator'] = 'not empty';
esmerel’s picture

Status: Postponed (maintainer needs more info) » Active
dawehner’s picture

I'm sorry here but things get really frustrating from time to time.

I see a problem though i don't see a real solution, adding no access tags would also break things mh. There was another issue which allows to configure this per relationship

dawehner’s picture

The other issue I talked about is #1222324: Fix query access control on relationships (comments)

The problem is that the node table is never joined in, as the fieldapi field just needs the entity id, which exists just on the field table. Maybe something has to force to add the base table id in that case, though i'm not sure how to do this without getting a performance problem, because of the additional join, back.