[MDEV-12139] mysqltest: errors in source in a loop Created: 2017-02-27  Updated: 2023-04-27

Status: Open
Project: MariaDB Server
Component/s: Scripts & Clients, Tests
Affects Version/s: 5.5, 10.0, 10.1, 10.2
Fix Version/s: 10.4

Type: Bug Priority: Minor
Reporter: Sergei Golubchik Assignee: Unassigned
Resolution: Unresolved Votes: 1
Labels: None

Attachments: HTML File fix    
Issue Links:
Relates
relates to MDEV-12138 mysqltest: source inside a loop Open
relates to MDEV-12130 Improve mysqltest language (Full-time... Open

 Description   

mysqltest only executes the source command on the first iteration of a loop, after that the sourced file is already in the q_lines cache, so there is no need to read it again. Alas, when ignoring source command, we cannot know what file caused the error.

a.test

let $a=0;
while($a) {
  source $MYSQL_TMP_DIR/b.inc;
  inc $a;
}

b.inc

if ($a) {
  sleep 1 2;
}



 Comments   
Comment by Sergei Golubchik [ 2017-02-27 ]

I've attached the fix, but it don't work because of MDEV-12138. May be the whole caching logic needs to be rewritten, and then this fix will be very different of completely unnecessary.

Comment by Amol Holani [ 2017-03-24 ]

Hi Sergei,
You have removed the if statement in your patch and performing else part every time, I think the checking for existence of file won't be issue.

/*If this file has already been sourced, don't source it again.
-    It's already available in the q_lines cache.
-  */
-  if (parser.current_line < (parser.read_lines - 1))
-    ; /* Do nothing */
-  else
-  {
-    DBUG_PRINT("info", ("sourcing file: %s", ds_filename.str));
-    open_file(ds_filename.str);
-  }

Also regarding the MDEV-12138, I found this :- A sourced file can use source to read other files,but the maximum nesting level is 16.

Sorry for late response, I had mid term exams last week!!

Generated at Thu Feb 08 07:55:25 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.