I have a view that contains a URL argument for the term id to search on. In addition, I have an exposed term_id filter that has limited selectable options. If I do not select any of the terms in the list nor limit the list of selected options, I do not get an sql error. In addition, if I provide a term id in the URL that is not in the list of limited exposed terms, the query works fine. Suppose I have term ids in my list of 100-200, and my URL args are {type}/{term_id}/{year}. "page/100/2008" produces the error, but "page/500/2008" would not.

The issues seems to be that if there is a term_data_{term_id} table aliased in the query before the individual argument selection from the URL, the query builder goes bonkers and puts in a "AND (1.tid = {term_id}", and not using the aliased table correctly.

Removing the URL parameter resolves the conflict, as does not selecting a subset of the items for the filter (and of course this forces me to turn off the "limit list to selected items" option) or simply removing it entirely from the view's filters.

Broken SQL, URL args "all/1812/2008":

Query

SELECT DISTINCT(node.nid) AS nid,
node.created AS node_created,
node.type AS node_type,
node.title AS node_title
FROM node node
LEFT JOIN term_node term_node_1812 ON node.vid = term_node_1812.vid AND term_node_1812.tid = 1812
LEFT JOIN term_node term_node_3458 ON node.vid = term_node_3458.vid AND term_node_3458.tid = 3458
LEFT JOIN term_node term_node_3493 ON node.vid = term_node_3493.vid AND term_node_3493.tid = 3493
LEFT JOIN term_node term_node_3463 ON node.vid = term_node_3463.vid AND term_node_3463.tid = 3463
LEFT JOIN term_node term_node_3465 ON node.vid = term_node_3465.vid AND term_node_3465.tid = 3465
LEFT JOIN term_node term_node_3466 ON node.vid = term_node_3466.vid AND term_node_3466.tid = 3466
LEFT JOIN term_node term_node_3464 ON node.vid = term_node_3464.vid AND term_node_3464.tid = 3464
LEFT JOIN term_node term_node_3505 ON node.vid = term_node_3505.vid AND term_node_3505.tid = 3505
LEFT JOIN term_node term_node_1813 ON node.vid = term_node_1813.vid AND term_node_1813.tid = 1813
LEFT JOIN term_node term_node_3488 ON node.vid = term_node_3488.vid AND term_node_3488.tid = 3488
LEFT JOIN term_node term_node_3467 ON node.vid = term_node_3467.vid AND term_node_3467.tid = 3467
LEFT JOIN term_node term_node_3489 ON node.vid = term_node_3489.vid AND term_node_3489.tid = 3489
LEFT JOIN term_node term_node_3483 ON node.vid = term_node_3483.vid AND term_node_3483.tid = 3483
LEFT JOIN term_node term_node_3484 ON node.vid = term_node_3484.vid AND term_node_3484.tid = 3484
LEFT JOIN term_node term_node_3485 ON node.vid = term_node_3485.vid AND term_node_3485.tid = 3485
LEFT JOIN term_node term_node_3486 ON node.vid = term_node_3486.vid AND term_node_3486.tid = 3486
LEFT JOIN term_node term_node_3487 ON node.vid = term_node_3487.vid AND term_node_3487.tid = 3487
LEFT JOIN term_node term_node_1814 ON node.vid = term_node_1814.vid AND term_node_1814.tid = 1814
LEFT JOIN term_node term_node_3468 ON node.vid = term_node_3468.vid AND term_node_3468.tid = 3468
LEFT JOIN term_node term_node_3469 ON node.vid = term_node_3469.vid AND term_node_3469.tid = 3469
LEFT JOIN term_node term_node_3470 ON node.vid = term_node_3470.vid AND term_node_3470.tid = 3470
LEFT JOIN term_node term_node_3471 ON node.vid = term_node_3471.vid AND term_node_3471.tid = 3471
LEFT JOIN term_node term_node_1815 ON node.vid = term_node_1815.vid AND term_node_1815.tid = 1815
LEFT JOIN term_node term_node_3472 ON node.vid = term_node_3472.vid AND term_node_3472.tid = 3472
LEFT JOIN term_node term_node_3473 ON node.vid = term_node_3473.vid AND term_node_3473.tid = 3473
LEFT JOIN term_node term_node_3474 ON node.vid = term_node_3474.vid AND term_node_3474.tid = 3474
LEFT JOIN term_node term_node_3475 ON node.vid = term_node_3475.vid AND term_node_3475.tid = 3475
LEFT JOIN term_node term_node_1816 ON node.vid = term_node_1816.vid AND term_node_1816.tid = 1816
LEFT JOIN term_node term_node_3476 ON node.vid = term_node_3476.vid AND term_node_3476.tid = 3476
LEFT JOIN term_node term_node_3496 ON node.vid = term_node_3496.vid AND term_node_3496.tid = 3496
LEFT JOIN term_node term_node_3477 ON node.vid = term_node_3477.vid AND term_node_3477.tid = 3477
LEFT JOIN term_node term_node_3479 ON node.vid = term_node_3479.vid AND term_node_3479.tid = 3479
WHERE (node.status <> 0) AND (term_node_1812.tid = 1812 OR term_node_3458.tid = 3458 OR term_node_3493.tid = 3493 OR term_node_3463.tid = 3463 OR term_node_3465.tid = 3465 OR term_node_3466.tid = 3466 OR term_node_3464.tid = 3464 OR term_node_3505.tid = 3505 OR term_node_1813.tid = 1813 OR term_node_3488.tid = 3488 OR term_node_3467.tid = 3467 OR term_node_3489.tid = 3489 OR term_node_3483.tid = 3483 OR term_node_3484.tid = 3484 OR term_node_3485.tid = 3485 OR term_node_3486.tid = 3486 OR term_node_3487.tid = 3487 OR term_node_1814.tid = 1814 OR term_node_3468.tid = 3468 OR term_node_3469.tid = 3469 OR term_node_3470.tid = 3470 OR term_node_3471.tid = 3471 OR term_node_1815.tid = 1815 OR term_node_3472.tid = 3472 OR term_node_3473.tid = 3473 OR term_node_3474.tid = 3474 OR term_node_3475.tid = 3475 OR term_node_1816.tid = 1816 OR term_node_3476.tid = 3476 OR term_node_3496.tid = 3496 OR term_node_3477.tid = 3477 OR term_node_3479.tid = 3479) AND (node.type in ('ceo_survey', 'congressional_communication', 'congressional_testimony', 'issue_ad', 'news', 'position_statement', 'press_release', 'publication', 'speech', 'telephony_session')) AND (1.tid = 1812) AND (EXTRACT(YEAR FROM((FROM_UNIXTIME(node.created) + INTERVAL -14400 SECOND))) = '2008')
ORDER BY node_created DESC

Non-Broken SQL, args "all/10/2008":

SELECT DISTINCT(node.nid) AS nid,
node.created AS node_created,
node.type AS node_type,
node.title AS node_title
FROM node node
LEFT JOIN term_node term_node_1812 ON node.vid = term_node_1812.vid AND term_node_1812.tid = 1812
LEFT JOIN term_node term_node_3458 ON node.vid = term_node_3458.vid AND term_node_3458.tid = 3458
LEFT JOIN term_node term_node_3493 ON node.vid = term_node_3493.vid AND term_node_3493.tid = 3493
LEFT JOIN term_node term_node_3463 ON node.vid = term_node_3463.vid AND term_node_3463.tid = 3463
LEFT JOIN term_node term_node_3465 ON node.vid = term_node_3465.vid AND term_node_3465.tid = 3465
LEFT JOIN term_node term_node_3466 ON node.vid = term_node_3466.vid AND term_node_3466.tid = 3466
LEFT JOIN term_node term_node_3464 ON node.vid = term_node_3464.vid AND term_node_3464.tid = 3464
LEFT JOIN term_node term_node_3505 ON node.vid = term_node_3505.vid AND term_node_3505.tid = 3505
LEFT JOIN term_node term_node_1813 ON node.vid = term_node_1813.vid AND term_node_1813.tid = 1813
LEFT JOIN term_node term_node_3488 ON node.vid = term_node_3488.vid AND term_node_3488.tid = 3488
LEFT JOIN term_node term_node_3467 ON node.vid = term_node_3467.vid AND term_node_3467.tid = 3467
LEFT JOIN term_node term_node_3489 ON node.vid = term_node_3489.vid AND term_node_3489.tid = 3489
LEFT JOIN term_node term_node_3483 ON node.vid = term_node_3483.vid AND term_node_3483.tid = 3483
LEFT JOIN term_node term_node_3484 ON node.vid = term_node_3484.vid AND term_node_3484.tid = 3484
LEFT JOIN term_node term_node_3485 ON node.vid = term_node_3485.vid AND term_node_3485.tid = 3485
LEFT JOIN term_node term_node_3486 ON node.vid = term_node_3486.vid AND term_node_3486.tid = 3486
LEFT JOIN term_node term_node_3487 ON node.vid = term_node_3487.vid AND term_node_3487.tid = 3487
LEFT JOIN term_node term_node_1814 ON node.vid = term_node_1814.vid AND term_node_1814.tid = 1814
LEFT JOIN term_node term_node_3468 ON node.vid = term_node_3468.vid AND term_node_3468.tid = 3468
LEFT JOIN term_node term_node_3469 ON node.vid = term_node_3469.vid AND term_node_3469.tid = 3469
LEFT JOIN term_node term_node_3470 ON node.vid = term_node_3470.vid AND term_node_3470.tid = 3470
LEFT JOIN term_node term_node_3471 ON node.vid = term_node_3471.vid AND term_node_3471.tid = 3471
LEFT JOIN term_node term_node_1815 ON node.vid = term_node_1815.vid AND term_node_1815.tid = 1815
LEFT JOIN term_node term_node_3472 ON node.vid = term_node_3472.vid AND term_node_3472.tid = 3472
LEFT JOIN term_node term_node_3473 ON node.vid = term_node_3473.vid AND term_node_3473.tid = 3473
LEFT JOIN term_node term_node_3474 ON node.vid = term_node_3474.vid AND term_node_3474.tid = 3474
LEFT JOIN term_node term_node_3475 ON node.vid = term_node_3475.vid AND term_node_3475.tid = 3475
LEFT JOIN term_node term_node_1816 ON node.vid = term_node_1816.vid AND term_node_1816.tid = 1816
LEFT JOIN term_node term_node_3476 ON node.vid = term_node_3476.vid AND term_node_3476.tid = 3476
LEFT JOIN term_node term_node_3496 ON node.vid = term_node_3496.vid AND term_node_3496.tid = 3496
LEFT JOIN term_node term_node_3477 ON node.vid = term_node_3477.vid AND term_node_3477.tid = 3477
LEFT JOIN term_node term_node_3479 ON node.vid = term_node_3479.vid AND term_node_3479.tid = 3479
LEFT JOIN term_node term_node_1 ON node.vid = term_node_1.vid AND term_node_1.tid = 1
WHERE (node.status <> 0) AND (term_node_1812.tid = 1812 OR term_node_3458.tid = 3458 OR term_node_3493.tid = 3493 OR term_node_3463.tid = 3463 OR term_node_3465.tid = 3465 OR term_node_3466.tid = 3466 OR term_node_3464.tid = 3464 OR term_node_3505.tid = 3505 OR term_node_1813.tid = 1813 OR term_node_3488.tid = 3488 OR term_node_3467.tid = 3467 OR term_node_3489.tid = 3489 OR term_node_3483.tid = 3483 OR term_node_3484.tid = 3484 OR term_node_3485.tid = 3485 OR term_node_3486.tid = 3486 OR term_node_3487.tid = 3487 OR term_node_1814.tid = 1814 OR term_node_3468.tid = 3468 OR term_node_3469.tid = 3469 OR term_node_3470.tid = 3470 OR term_node_3471.tid = 3471 OR term_node_1815.tid = 1815 OR term_node_3472.tid = 3472 OR term_node_3473.tid = 3473 OR term_node_3474.tid = 3474 OR term_node_3475.tid = 3475 OR term_node_1816.tid = 1816 OR term_node_3476.tid = 3476 OR term_node_3496.tid = 3496 OR term_node_3477.tid = 3477 OR term_node_3479.tid = 3479) AND (node.type in ('ceo_survey', 'congressional_communication', 'congressional_testimony', 'issue_ad', 'news', 'position_statement', 'press_release', 'publication', 'speech', 'telephony_session')) AND (term_node_10.tid = 1) AND (EXTRACT(YEAR FROM((FROM_UNIXTIME(node.created) + INTERVAL -14400 SECOND))) = '2008')
ORDER BY node_created DESC

View Export:


$view = new view;
$view->name = 'resource_center';
$view->description = 'Resource Center';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Resource Center', 'default');
$handler->override_option('fields', array(
  'created' => array(
    'label' => 'Date',
    'date_format' => 'custom',
    'custom_date_format' => 'n.d.y',
    'exclude' => 0,
    'id' => 'created',
    'table' => 'node',
    'field' => 'created',
    'relationship' => 'none',
  ),
  'type' => array(
    'label' => 'Type',
    'link_to_node' => 0,
    'exclude' => 1,
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'none',
  ),
  'title' => array(
    'label' => 'Title',
    'link_to_node' => 1,
    'exclude' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'none',
    'override' => array(
      'button' => 'Override',
    ),
  ),
));
$handler->override_option('sorts', array(
  'created' => array(
    'order' => 'DESC',
    'granularity' => 'second',
    'id' => 'created',
    'table' => 'node',
    'field' => 'created',
    'relationship' => 'none',
  ),
));
$handler->override_option('arguments', array(
  'type' => array(
    'default_action' => 'default',
    'style_plugin' => 'default_summary',
    'style_options' => array(),
    'wildcard' => 'all',
    'wildcard_substitution' => 'All Publications',
    'title' => 'Resource Center - %1',
    'default_argument_type' => 'php',
    'default_argument' => '',
    'validate_type' => 'none',
    'validate_fail' => 'not found',
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'none',
    'default_options_div_prefix' => '',
    'default_argument_user' => 0,
    'default_argument_fixed' => '',
    'default_argument_php' => '$url_array = explode(\'/\', $_GET[\'q\']);
        $base_index = array_search(\'resource_center\', $url_array);
        if ($url_array[base_index + 1] && $url_array[base_index + 1] != \'\') {
          return $url_array[$base_index + 1];
        } else {
          return \'all\';
        }',
    'validate_argument_vocabulary' => array(
      '1833' => 0,
      '1817' => 0,
    ),
    'validate_argument_type' => 'tid',
    'validate_argument_node_type' => array(
      'congressional_communication' => 'congressional_communication',
      'congressional_testimony' => 'congressional_testimony',
      'issue_ad' => 'issue_ad',
      'news' => 'news',
      'position_statement' => 'position_statement',
      'press_release' => 'press_release',
      'publication' => 'publication',
      'speech' => 'speech',
      'book' => 0,
      'category' => 0,
      'ceo_survey' => 0,
      'container' => 0,
      'other' => 0,
      'page' => 0,
      'sub_issue' => 0,
      'telephony_session' => 0,
      'user_profile' => 0,
      'video' => 0,
    ),
    'validate_argument_node_access' => 0,
    'validate_argument_nid_type' => 'nid',
    'validate_argument_php' => '',
  ),
  'tid' => array(
    'default_action' => 'default',
    'style_plugin' => 'default_summary',
    'style_options' => array(),
    'wildcard' => 'all',
    'wildcard_substitution' => 'All Initiatives',
    'title' => 'Resource Center - %1 - %2',
    'default_argument_type' => 'php',
    'default_argument' => '',
    'validate_type' => 'none',
    'validate_fail' => 'empty',
    'break_phrase' => 0,
    'add_table' => 0,
    'require_value' => 0,
    'reduce_duplicates' => 1,
    'set_breadcrumb' => 0,
    'id' => 'tid',
    'table' => 'term_node',
    'field' => 'tid',
    'relationship' => 'none',
    'default_options_div_prefix' => '',
    'default_argument_user' => 0,
    'default_argument_fixed' => '',
    'default_argument_php' => '$url_array = explode(\'/\', $_GET[\'q\']);
        $base_index = array_search(\'resource_center\', $url_array);
        if ($url_array[base_index + 2] && $url_array[base_index + 2] != \'\') {
          return $url_array[$base_index + 2];
        } else {
          return \'all\';
        }
        ',
    'validate_argument_vocabulary' => array(
      '1817' => 1817,
      '1833' => 0,
    ),
    'validate_argument_type' => 'tid',
    'validate_argument_node_type' => array(
      'book' => 0,
      'category' => 0,
      'ceo_survey' => 0,
      'congressional_communication' => 0,
      'congressional_testimony' => 0,
      'container' => 0,
      'issue_ad' => 0,
      'news' => 0,
      'other' => 0,
      'page' => 0,
      'position_statement' => 0,
      'press_release' => 0,
      'publication' => 0,
      'speech' => 0,
      'sub_issue' => 0,
      'telephony_session' => 0,
      'user_profile' => 0,
      'video' => 0,
    ),
    'validate_argument_node_access' => 0,
    'validate_argument_nid_type' => 'nid',
    'validate_argument_php' => '',
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'created_year' => array(
    'id' => 'created_year',
    'table' => 'node',
    'field' => 'created_year',
    'validate_type' => 'none',
    'validate_fail' => 'ignore',
    'default_argument_type' => 'php',
    'relationship' => 'none',
    'title' => 'Resource Center - %1 - %2 - %3',
    'default_action' => 'default',
    'wildcard' => 'all',
    'wildcard_substitution' => 'All Years',
    'default_options_div_prefix' => '',
    'default_argument_fixed' => '',
    'default_argument_php' => '$url_array = explode(\'/\', $_GET[\'q\']);
        $base_index = array_search(\'resource_center\', $url_array);
        if ($url_array[base_index + 3] && $url_array[base_index + 3] != \'\') {
          return $url_array[$base_index + 2];
        } else {
          return \'2008\';
        }',
    'validate_argument_vocabulary' => array(
      '1833' => 0,
      '1817' => 0,
    ),
    'validate_argument_type' => 'tid',
    'validate_argument_node_type' => array(
      'book' => 0,
      'category' => 0,
      'ceo_survey' => 0,
      'congressional_communication' => 0,
      'congressional_testimony' => 0,
      'container' => 0,
      'issue_ad' => 0,
      'news' => 0,
      'other' => 0,
      'page' => 0,
      'position_statement' => 0,
      'press_release' => 0,
      'publication' => 0,
      'speech' => 0,
      'sub_issue' => 0,
      'telephony_session' => 0,
      'user_profile' => 0,
      'video' => 0,
    ),
    'validate_argument_node_access' => 0,
    'validate_argument_nid_type' => 'nid',
    'validate_argument_php' => '',
  ),
));
$handler->override_option('filters', array(
  'status' => array(
    'operator' => '=',
    'value' => 1,
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'status',
    'table' => 'node',
    'field' => 'status',
    'relationship' => 'none',
  ),
  'tid' => array(
    'operator' => 'or',
    'value' => array(
      '1812' => '1812',
      '3458' => '3458',
      '3493' => '3493',
      '3463' => '3463',
      '3465' => '3465',
      '3466' => '3466',
      '3464' => '3464',
      '3505' => '3505',
      '1813' => '1813',
      '3488' => '3488',
      '3467' => '3467',
      '3489' => '3489',
      '3483' => '3483',
      '3484' => '3484',
      '3485' => '3485',
      '3486' => '3486',
      '3487' => '3487',
      '1814' => '1814',
      '3468' => '3468',
      '3469' => '3469',
      '3470' => '3470',
      '3471' => '3471',
      '1815' => '1815',
      '3472' => '3472',
      '3473' => '3473',
      '3474' => '3474',
      '3475' => '3475',
      '1816' => '1816',
      '3476' => '3476',
      '3496' => '3496',
      '3477' => '3477',
      '3479' => '3479',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'tid_op',
      'identifier' => 'tid',
      'label' => 'Initiative',
      'optional' => 1,
      'single' => 1,
      'remember' => 0,
      'reduce' => 1,
    ),
    'type' => 'select',
    'vid' => '1817',
    'id' => 'tid',
    'table' => 'term_node',
    'field' => 'tid',
    'hierarchy' => 1,
    'relationship' => 'none',
    'reduce_duplicates' => 1,
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'type' => array(
    'operator' => 'in',
    'value' => array(
      'ceo_survey' => 'ceo_survey',
      'congressional_communication' => 'congressional_communication',
      'congressional_testimony' => 'congressional_testimony',
      'issue_ad' => 'issue_ad',
      'news' => 'news',
      'position_statement' => 'position_statement',
      'press_release' => 'press_release',
      'publication' => 'publication',
      'speech' => 'speech',
      'telephony_session' => 'telephony_session',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'type_op',
      'identifier' => 'type',
      'label' => 'Resource Type',
      'optional' => 1,
      'single' => 1,
      'remember' => 0,
      'reduce' => 1,
    ),
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'none',
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'created' => array(
    'operator' => '<=',
    'value' => array(
      'type' => 'date',
      'value' => '',
      'min' => '-30 day',
      'max' => '0 day',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'created_op',
      'identifier' => 'created_before',
      'label' => 'Posted Before:',
      'optional' => 1,
      'remember' => 0,
    ),
    'id' => 'created',
    'table' => 'node',
    'field' => 'created',
    'relationship' => 'none',
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'created_1' => array(
    'operator' => '>=',
    'value' => array(
      'type' => 'date',
      'value' => '',
      'min' => '',
      'max' => '',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'created_1_op',
      'identifier' => 'created_after',
      'label' => 'Posted After:',
      'optional' => 1,
      'remember' => 0,
    ),
    'id' => 'created_1',
    'table' => 'node',
    'field' => 'created',
    'relationship' => 'none',
    'override' => array(
      'button' => 'Override',
    ),
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
));
$handler->override_option('title', 'Resource Center');
$handler->override_option('header_format', '1');
$handler->override_option('header_empty', 1);
$handler->override_option('empty', 'No resources found.');
$handler->override_option('empty_format', '1');
$handler->override_option('use_ajax', TRUE);
$handler->override_option('items_per_page', 20);
$handler->override_option('use_pager', '1');
$handler->override_option('distinct', 1);
$handler->override_option('style_plugin', 'table');
$handler->override_option('style_options', array(
  'grouping' => '',
  'override' => 1,
  'sticky' => 0,
  'order' => 'asc',
  'columns' => array(
    'created' => 'created',
    'type' => 'type',
    'title' => 'title',
  ),
  'info' => array(
    'created' => array(
      'sortable' => 1,
      'separator' => '',
    ),
    'type' => array(
      'sortable' => 0,
      'separator' => '',
    ),
    'title' => array(
      'sortable' => 1,
      'separator' => '',
    ),
  ),
  'default' => '-1',
));
$handler = $view->new_display('page', 'Page', 'page_2');
$handler->override_option('path', 'resource_center/%');
$handler->override_option('menu', array(
  'type' => 'none',
  'title' => '',
  'weight' => 0,
));
$handler->override_option('tab_options', array(
  'type' => 'none',
  'title' => '',
  'weight' => 0,
));

Comments

merlinofchaos’s picture

Status: Active » Fixed

Found the cause and fixed in -dev. Thanks.

Anonymous’s picture

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for two weeks with no activity.