View Issue Details

This bug affects 1 person(s).
 2
IDProjectCategoryView StatusLast Update
05940Bug reportsOtherpublic2012-04-05 19:15
Reporteruser18870Assigned Toc_schmitz  
PrioritynormalSeveritypartial_block 
Status closedResolutionfixed 
Product Version2.00a3 
Fixed in Version2.00b1 
Summary05940: Database error when using Participant panel and PostgreSQL
Description

When selecting Display participants in the Participant panel, a database error occurs:

CDbCommand failed to execute the SQL statement: SQLSTATE[42703]: Undefined column: 7 ERROR: column "TRUE" does not exist
LINE 4: WHERE lime_participant_attribute_names.visible = "TRUE" AND ...
^. The SQL statement executed was: SELECT "lime_participant_attribute_names"., "lime_participant_attribute_names_lang".
FROM "lime_participant_attribute_names"
JOIN "lime_participant_attribute_names_lang" ON lime_participant_attribute_names_lang.attribute_id = lime_participant_attribute_names.attribute_id
WHERE lime_participant_attribute_names.visible = "TRUE" AND lime_participant_attribute_names_lang.lang = "en"
ORDER BY "lime_participant_attribute_names"."attribute_id"

I believe this is due to improper quotes – the double quotes around "TRUE" should be single quotes. This might be a bug in the underlying framework. (?)

Steps To Reproduce

Install LimeSurvey from scratch (with clean database).
Log in to LimeSurvey admin interface.
Select Participant panel.
Select Display participants.
(Error occurs)

Additional Information

Complete error text including stack trace:

CDbException

CDbCommand failed to execute the SQL statement: SQLSTATE[42703]: Undefined column: 7 ERROR: column "TRUE" does not exist
LINE 4: WHERE lime_participant_attribute_names.visible = "TRUE" AND ...
^. The SQL statement executed was: SELECT "lime_participant_attribute_names"., "lime_participant_attribute_names_lang".
FROM "lime_participant_attribute_names"
JOIN "lime_participant_attribute_names_lang" ON lime_participant_attribute_names_lang.attribute_id = lime_participant_attribute_names.attribute_id
WHERE lime_participant_attribute_names.visible = "TRUE" AND lime_participant_attribute_names_lang.lang = "en"
ORDER BY "lime_participant_attribute_names"."attribute_id"

/home/fabbe/public_html/limesurvey/framework/db/CDbCommand.php(516)

504 return $result;
505 }
506 catch(Exception $e)
507 {
508 if($this->_connection->enableProfiling)
509 Yii::endProfile('system.db.CDbCommand.query('.$this->getText().$par.')','system.db.CDbCommand.query');
510 $errorInfo = $e instanceof PDOException ? $e->errorInfo : null;
511 $message = $e->getMessage();
512 Yii::log(Yii::t('yii','CDbCommand::{method}() failed: {error}. The SQL statement executed was: {sql}.',
513 array('{method}'=>$method, '{error}'=>$message, '{sql}'=>$this->getText().$par)),CLogger::LEVEL_ERROR,'system.db.CDbCommand');
514 if(YII_DEBUG)
515 $message .= '. The SQL statement executed was: '.$this->getText().$par;
516 throw new CDbException(Yii::t('yii','CDbCommand failed to execute the SQL statement: {error}',
517 array('{error}'=>$message)),(int)$e->getCode(),$errorInfo);
518 }
519 }
520
521 /*
522
Builds a SQL SELECT statement from the given query specification.
523 @param array $query the query specification in name-value pairs. The following
524
query options are supported: {@link select}, {@link distinct}, {@link from},
525 {@link where}, {@link join}, {@link group}, {@link having}, {@link order},
526
{@link limit}, {@link offset} and {@link union}.
527 @return string the SQL statement
528
@since 1.1.6

Stack Trace
#0

/home/fabbe/public_html/limesurvey/framework/db/CDbCommand.php(374): CDbCommand->queryInternal("fetchAll", array(2), array())

369 An empty array is returned if the query results in nothing.
370
@throws CException execution failed
371 */
372 public function queryAll($fetchAssociative=true,$params=array())
373 {
374 return $this->queryInternal('fetchAll',$fetchAssociative ? $this->_fetchMode : PDO::FETCH_NUM, $params);
375 }
376
377 /*
378
Executes the SQL statement and returns the first row of the result.
379 * This is a convenient method of {@link query} when only the first row of data is needed.

#1

/home/fabbe/public_html/limesurvey/application/models/ParticipantAttributeNames.php(108): CDbCommand->queryAll()

103 ));
104 }
105
106 function getVisibleAttributes()
107 {
108 return Yii::app()->db->createCommand()->select('{{participant_attribute_names}}.,{{participant_attribute_names}}_lang.')->from('{{participant_attribute_names}}')->order('{{participant_attribute_names}}.attribute_id', 'desc')->join('{{participant_attribute_names}}_lang', '{{participant_attribute_names}}_lang.attribute_id = {{participant_attribute_names}}.attribute_id')->where('{{participant_attribute_names}}.visible = "TRUE" AND {{participant_attribute_names}}_lang.lang = "'.Yii::app()->session['adminlang'].'"')->queryAll();
109 }
110
111 function getAllAttributes()
112 {
113 return Yii::app()->db->createCommand()->select('{{participant_attribute_names}}.,{{participant_attribute_names}}_lang.')

#2

/home/fabbe/public_html/limesurvey/application/controllers/admin/participantsaction.php(119): ParticipantAttributeNames->getVisibleAttributes()

114 $aSurveyNames = Survey::model()->with('languagesettings', 'owner')->findAll('owner_id=:uid',array('uid'=>Yii::app()->session['loginID']));
115 }
116 // data to be passed to view
117 $aData = array(
118 'names' => User::model()->findAll(),
119 'attributes' => ParticipantAttributeNames::getVisibleAttributes(),
120 'allattributes' => ParticipantAttributeNames::getAllAttributes(),
121 'attributeValues' => ParticipantAttributeNames::getAllAttributesValues(),
122 'surveynames' => $aSurveyNames
123 );
124

#3
unknown(0): participantsaction->displayParticipants()
#4

/home/fabbe/public_html/limesurvey/framework/web/actions/CAction.php(104): ReflectionMethod->invokeArgs(participantsaction, array())

099 else if($param->isDefaultValueAvailable())
100 $ps[]=$param->getDefaultValue();
101 else
102 return false;
103 }
104 $method->invokeArgs($object,$ps);
105 return true;
106 }
107 }

#5

/home/fabbe/public_html/limesurvey/application/core/Survey_Common_Action.php(82): CAction->runWithParamsInternal(participantsaction, ReflectionMethod, array("sa" => "displayParticipants"))

77 $oMethod = new ReflectionMethod($this, $sDefault);
78 }
79
80 // We're all good to go, let's execute it
81 // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params
82 return parent::runWithParamsInternal($this, $oMethod, $params);
83 }
84
85 /*
86
Some functions have different parameters, which are just an alias of the
87 * usual parameters we're getting in the url. This function just populates

#6

/home/fabbe/public_html/limesurvey/framework/web/CController.php(300): Survey_Common_Action->runWithParams(array("sa" => "displayParticipants"))

295 {
296 $priorAction=$this->_action;
297 $this->_action=$action;
298 if($this->beforeAction($action))
299 {
300 if($action->runWithParams($this->getActionParams())===false)
301 $this->invalidActionParams($action);
302 else
303 $this->afterAction($action);
304 }
305 $this->_action=$priorAction;

#7

/home/fabbe/public_html/limesurvey/framework/web/CController.php(278): CController->runAction(participantsaction)

273 @see runAction
274
/
275 public function runActionWithFilters($action,$filters)
276 {
277 if(empty($filters))
278 $this->runAction($action);
279 else
280 {
281 $priorAction=$this->_action;
282 $this->_action=$action;
283 CFilterChain::create($this,$action,$filters)->run();

#8

/home/fabbe/public_html/limesurvey/framework/web/CController.php(257): CController->runActionWithFilters(participantsaction, array())

252 {
253 if(($parent=$this->getModule())===null)
254 $parent=Yii::app();
255 if($parent->beforeControllerAction($this,$action))
256 {
257 $this->runActionWithFilters($action,$this->filters());
258 $parent->afterControllerAction($this,$action);
259 }
260 }
261 else
262 $this->missingAction($actionID);

#9

/home/fabbe/public_html/limesurvey/application/controllers/AdminController.php(149): CController->run("participants")

144 Yii::app()->session['redirectopage'] = Yii::app()->request->requestUri;
145
146 $this->redirect($this->createUrl('/admin/authentication/login'));
147 }
148
149 return parent::run($action);
150 }
151
152 /*
153
Routes all the actions to their respective places
154 *

#10

/home/fabbe/public_html/limesurvey/framework/web/CWebApplication.php(277): AdminController->run("participants")

272 {
273 list($controller,$actionID)=$ca;
274 $oldController=$this->_controller;
275 $this->_controller=$controller;
276 $controller->init();
277 $controller->run($actionID);
278 $this->_controller=$oldController;
279 }
280 else
281 throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
282 array('{route}'=>$route===''?$this->defaultController:$route)));

#11

/home/fabbe/public_html/limesurvey/framework/web/CWebApplication.php(136): CWebApplication->runController("admin/participants/sa/displayParticipants")

131 foreach(array_splice($this->catchAllRequest,1) as $name=>$value)
132 $_GET[$name]=$value;
133 }
134 else
135 $route=$this->getUrlManager()->parseUrl($this->getRequest());
136 $this->runController($route);
137 }
138
139 /*
140
Registers the core application components.
141 * This method overrides the parent implementation by registering additional core components.

#12

/home/fabbe/public_html/limesurvey/framework/base/CApplication.php(158): CWebApplication->processRequest()

153 */
154 public function run()
155 {
156 if($this->hasEventHandler('onBeginRequest'))
157 $this->onBeginRequest(new CEvent($this));
158 $this->processRequest();
159 if($this->hasEventHandler('onEndRequest'))
160 $this->onEndRequest(new CEvent($this));
161 }
162
163 /**

#13

/home/fabbe/public_html/limesurvey/index.php(171): CApplication->run()

166
167
/
168 require_once BASEPATH . 'yii' . EXT;
169 require_once APPPATH . 'core/LSYii_Application' . EXT;
170
171 Yii::createApplication('LSYii_Application', APPPATH . 'config/config' . EXT)->run();
172
173 / End of file index.php /
174 / Location: ./index.php /

2012-03-21 20:02:43 Apache/2.2.16 (Debian) Yii Framework/1.1.8

TagsNo tags attached.
Bug heat2
Complete LimeSurvey version number (& build)120315
I will donate to the project if issue is resolvedNo
BrowserFirefox 11
Database type & versionPostgreSQL 8.4.10
Server OS (if known)Debian 6.0.4
Webserver software & version (if known)Apache 2.2.16
PHP Version5.3.3

Users monitoring this issue

There are no users monitoring this issue.

Activities

c_schmitz

c_schmitz

2012-03-22 23:59

administrator   ~18050

Fix committed to Yii branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=8012

c_schmitz

c_schmitz

2012-04-05 19:15

administrator   ~18220

Released 2.00b1

Related Changesets

LimeSurvey: Yii 2d134ff1

2012-03-22 15:59:05

c_schmitz

Details Diff
Fixed issue 05940: Database error when using Participant panel and PostgreSQL Affected Issues
05940
mod - application/models/ParticipantAttributeNames.php Diff File

Issue History

Date Modified Username Field Change
2012-03-21 19:06 user18870 New Issue
2012-03-22 23:54 c_schmitz Assigned To => c_schmitz
2012-03-22 23:54 c_schmitz Status new => assigned
2012-03-22 23:59 c_schmitz Changeset attached => LimeSurvey Yii 2d134ff1
2012-03-22 23:59 c_schmitz Note Added: 18050
2012-03-22 23:59 c_schmitz Resolution open => fixed
2012-03-23 00:00 c_schmitz Status assigned => resolved
2012-03-23 00:00 c_schmitz Fixed in Version => 2.00b1
2012-04-05 19:15 c_schmitz Note Added: 18220
2012-04-05 19:15 c_schmitz Status resolved => closed