Merge lp:~ziminq/drizzle/filesystem-storage-engine into lp:~drizzle-trunk/drizzle/development

Proposed by Monty Taylor
Status: Merged
Approved by: Monty Taylor
Approved revision: 1670
Merged at revision: 1677
Proposed branch: lp:~ziminq/drizzle/filesystem-storage-engine
Merge into: lp:~drizzle-trunk/drizzle/development
Diff against target: 5554 lines (+5143/-0)
79 files modified
plugin/filesystem_engine/README (+14/-0)
plugin/filesystem_engine/demo.txt (+1/-0)
plugin/filesystem_engine/filesystem_engine.cc (+962/-0)
plugin/filesystem_engine/filesystem_engine.h (+116/-0)
plugin/filesystem_engine/filesystemlock.cc (+89/-0)
plugin/filesystem_engine/filesystemlock.h (+60/-0)
plugin/filesystem_engine/formatinfo.cc (+187/-0)
plugin/filesystem_engine/formatinfo.h (+51/-0)
plugin/filesystem_engine/plugin.ini (+5/-0)
plugin/filesystem_engine/tests/r/basic_create_table.result (+16/-0)
plugin/filesystem_engine/tests/r/basic_delete.result (+22/-0)
plugin/filesystem_engine/tests/r/basic_insert.result (+21/-0)
plugin/filesystem_engine/tests/r/basic_select.result (+14/-0)
plugin/filesystem_engine/tests/r/basic_update.result (+15/-0)
plugin/filesystem_engine/tests/r/multiple_update.result (+403/-0)
plugin/filesystem_engine/tests/r/rnd_pos.result (+19/-0)
plugin/filesystem_engine/tests/r/select_big_file.result (+1005/-0)
plugin/filesystem_engine/tests/r/select_chop_line.result (+9/-0)
plugin/filesystem_engine/tests/r/select_cpuinfo.result (+35/-0)
plugin/filesystem_engine/tests/r/select_meminfo.result (+42/-0)
plugin/filesystem_engine/tests/r/select_separator_mode_weak.result (+9/-0)
plugin/filesystem_engine/tests/r/select_short_line.result (+9/-0)
plugin/filesystem_engine/tests/r/select_skip_blank_line.result (+11/-0)
plugin/filesystem_engine/tests/r/select_with_escaped_character.result (+8/-0)
plugin/filesystem_engine/tests/r/select_with_omit_field.result (+13/-0)
plugin/filesystem_engine/tests/r/select_with_separators.result (+13/-0)
plugin/filesystem_engine/tests/t/basic_create_table-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/basic_create_table.test (+25/-0)
plugin/filesystem_engine/tests/t/basic_delete-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/basic_delete.data (+1/-0)
plugin/filesystem_engine/tests/t/basic_delete.test (+21/-0)
plugin/filesystem_engine/tests/t/basic_insert-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/basic_insert.data (+1/-0)
plugin/filesystem_engine/tests/t/basic_insert.test (+21/-0)
plugin/filesystem_engine/tests/t/basic_select-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/basic_select.data (+9/-0)
plugin/filesystem_engine/tests/t/basic_select.test (+9/-0)
plugin/filesystem_engine/tests/t/basic_update-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/basic_update.data (+1/-0)
plugin/filesystem_engine/tests/t/basic_update.test (+18/-0)
plugin/filesystem_engine/tests/t/multiple_update-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/multiple_update.data (+4/-0)
plugin/filesystem_engine/tests/t/multiple_update.test (+422/-0)
plugin/filesystem_engine/tests/t/rnd_pos-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/rnd_pos.test (+28/-0)
plugin/filesystem_engine/tests/t/select_big_file-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_big_file.data (+1000/-0)
plugin/filesystem_engine/tests/t/select_big_file.test (+9/-0)
plugin/filesystem_engine/tests/t/select_chop_line-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_chop_line.data (+4/-0)
plugin/filesystem_engine/tests/t/select_chop_line.test (+9/-0)
plugin/filesystem_engine/tests/t/select_cpuinfo-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_cpuinfo.data (+50/-0)
plugin/filesystem_engine/tests/t/select_cpuinfo.test (+11/-0)
plugin/filesystem_engine/tests/t/select_meminfo-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_meminfo.data (+32/-0)
plugin/filesystem_engine/tests/t/select_meminfo.test (+11/-0)
plugin/filesystem_engine/tests/t/select_separator_mode_weak-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_separator_mode_weak.data (+4/-0)
plugin/filesystem_engine/tests/t/select_separator_mode_weak.test (+9/-0)
plugin/filesystem_engine/tests/t/select_short_line-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_short_line.data (+4/-0)
plugin/filesystem_engine/tests/t/select_short_line.test (+9/-0)
plugin/filesystem_engine/tests/t/select_skip_blank_line-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_skip_blank_line.data (+14/-0)
plugin/filesystem_engine/tests/t/select_skip_blank_line.test (+9/-0)
plugin/filesystem_engine/tests/t/select_with_escaped_character-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_with_escaped_character.data (+2/-0)
plugin/filesystem_engine/tests/t/select_with_escaped_character.test (+10/-0)
plugin/filesystem_engine/tests/t/select_with_omit_field-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_with_omit_field.data (+3/-0)
plugin/filesystem_engine/tests/t/select_with_omit_field.test (+14/-0)
plugin/filesystem_engine/tests/t/select_with_separators-master.opt (+1/-0)
plugin/filesystem_engine/tests/t/select_with_separators.data (+3/-0)
plugin/filesystem_engine/tests/t/select_with_separators.test (+12/-0)
plugin/filesystem_engine/transparent_file.cc (+103/-0)
plugin/filesystem_engine/transparent_file.h (+44/-0)
plugin/filesystem_engine/utility.h (+46/-0)
tests/test-run.pl (+5/-0)
To merge this branch: bzr merge lp:~ziminq/drizzle/filesystem-storage-engine
Reviewer Review Type Date Requested Status
Stewart Smith (community) Approve
Patrick Crews would you mind reviewing the engine responses? thanks! Pending
Brian Aker Pending
Review via email: mp+31215@code.launchpad.net

This proposal supersedes a proposal from 2010-07-01.

Description of the change

This is the current development of my GSoC project.
It has been run with param-build.
Please review it.

Thanks.

To post a comment you must log in.
Revision history for this message
Brian Aker (brianaker) wrote : Posted in a previous version of this proposal

Hi!

A few things:

1) "i" is difficult for us with older eyes to distinguish (please use x, or something with more characters).

2) Your style is off in a couple of places ( for (size_t x= 0 ; ....).

3) Why don't you declare no need for store_lock()?

4) It would be nice to see a test showing what happens if you get a file that parses incorrectly.

5) Why xread()?

6) Your copyright is off in a few places (I believe).

Cheers,
   -Brian

review: Needs Fixing
Revision history for this message
ziminq (ziminq) wrote : Posted in a previous version of this proposal

Hi Brian,

Thanks for reviewing.
Replies inlined.

> Hi!
>
> A few things:
>
> 1) "i" is difficult for us with older eyes to distinguish (please use x, or
> something with more characters).

The variable "i" is used only in two places (both in for loop). I thought it would be ok.
Will fix it, change to "x".

>
> 2) Your style is off in a couple of places ( for (size_t x= 0 ; ....).

Thanks for pointing out.

>
> 3) Why don't you declare no need for store_lock()?

This is a bug when I use HTON_SKIP_STORE_LOCK, because I'm not doing the locking on my side.
I'm not sure what's the policy on using the table lock. Should the storage engine writer
write his own locking method?

>
> 4) It would be nice to see a test showing what happens if you get a file that
> parses incorrectly.

OK. Will add later.

>
> 5) Why xread()?

Stewart said it would be better not to use the functions in internal namespace,
so I changed the internal::my_read to the hand-made xread.
Should I go back to my_read? I'm kind of vague in this area as which is the right function to call.

>
> 6) Your copyright is off in a few places (I believe).

I copied the copyright info from CSV or archive plugin. hmm. let me double check this.

>
>
> Cheers,
> -Brian

Revision history for this message
ziminq (ziminq) wrote : Posted in a previous version of this proposal

Please review:

2 points regarding the previous review:

1. store_lock is still used, as this storage engine is not critical about update/insert performance, and using table lock is easier to implement.

2. 'xread' vs 'internal::my_read,which one is preferred?

--Zimin

Revision history for this message
Brian Aker (brianaker) wrote : Posted in a previous version of this proposal

Hi!

On Jul 14, 2010, at 7:12 AM, ziminq wrote:

> 1. store_lock is still used, as this storage engine is not critical about update/insert performance, and using table lock is easier to implement.

It is going away, and if we take an engine that uses it, it just forces us to rewrite that engine ourselves when it is fully gone.

> 2. 'xread' vs 'internal::my_read,which one is preferred?

Use posix based IO.

Cheers,
 -brian

Revision history for this message
Monty Taylor (mordred) wrote : Posted in a previous version of this proposal

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 07/14/2010 03:31 PM, Brian Aker wrote:

>> 2. 'xread' vs 'internal::my_read,which one is preferred?
>
> Use posix based IO.

Yes. This is what I was going to say. We don't want to use my_read
because we don't want special random wrappers around posix in our code
that people can't read.

Just use read() directly.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkw+LLMACgkQ2Jv7/VK1RgFLbQCdE1RU/6Gx/EVDIsv3MciLqJ7g
KUUAn2FtBO1JJEMrP1CuDDRmpmKGNxWj
=/JGZ
-----END PGP SIGNATURE-----

Revision history for this message
ziminq (ziminq) wrote : Posted in a previous version of this proposal

Thanks Brian and Monty, I'll change the code.

Revision history for this message
ziminq (ziminq) wrote : Posted in a previous version of this proposal

Please review:

The above two points are fixed, now the file system storage engine uses FilesystemLock. No table lock is used any more.

--Zimin

Revision history for this message
Stewart Smith (stewart) wrote :

The only thing I'd suggest is renaming "filesystem" to "filesystem_engine" (both directory and plugin name). Just to make it a little less confusing to people.

review: Approve
1665. By ziminq

add pthread_mutex_destroy to share->mutex

1666. By ziminq

wrap transparentfile in scoped_ptr

1667. By ziminq

rename filesystem to filesystem_engine to make it less confusing to users per Stewart's review.

1668. By ziminq

modify macros to be in line with the change of the filesystem directory name

Revision history for this message
ziminq (ziminq) wrote :

renamed.

directory now is pluign/filesystem_engine/
and the files are plugin/filesystem_engine/filesystem_engine.{h,cc}

the plugin name is called FilesystemEngine.

however, the name specified at CREATE TABLE is still 'ENGINE="FILESYSTEM" '.

1669. By ziminq

change engine name in tests

1670. By ziminq

wrap transparentfile in scoped_ptr

Revision history for this message
Stewart Smith (stewart) wrote :

On Fri, 30 Jul 2010 13:08:47 -0000, ziminq <email address hidden> wrote:
> renamed.
>
> directory now is pluign/filesystem_engine/
> and the files are plugin/filesystem_engine/filesystem_engine.{h,cc}
>
> the plugin name is called FilesystemEngine.
>
> however, the name specified at CREATE TABLE is still 'ENGINE="FILESYSTEM" '.

Excellent!

--
Stewart Smith

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'plugin/filesystem_engine'
2=== added file 'plugin/filesystem_engine/README'
3--- plugin/filesystem_engine/README 1970-01-01 00:00:00 +0000
4+++ plugin/filesystem_engine/README 2010-07-30 13:27:46 +0000
5@@ -0,0 +1,14 @@
6+Here's the corresponding example used in mysql-filesystem-engine.
7+drizzle> CREATE TABLE LoadAverage (
8+ load1 DECIMAL(3, 2),
9+ load5 DECIMAL(3, 2),
10+ load15 DECIMAL(3, 2),
11+ active_processes VARCHAR(12),
12+ lastpid INTEGER) ENGINE=FILESYSTEM, FILE="/proc/loadavg";
13+
14+drizzle> select * from LoadAverage;
15++-------+-------+--------+------------------+---------+
16+| load1 | load5 | load15 | active_processes | lastpid |
17++-------+-------+--------+------------------+---------+
18+| 0.00 | 0.00 | 0.00 | 1/97 | 6061 |
19++-------+-------+--------+------------------+---------+
20
21=== added file 'plugin/filesystem_engine/demo.txt'
22--- plugin/filesystem_engine/demo.txt 1970-01-01 00:00:00 +0000
23+++ plugin/filesystem_engine/demo.txt 2010-07-30 13:27:46 +0000
24@@ -0,0 +1,1 @@
25+0.00 0.00 0.00 1/97 6061
26
27=== added file 'plugin/filesystem_engine/filesystem_engine.cc'
28--- plugin/filesystem_engine/filesystem_engine.cc 1970-01-01 00:00:00 +0000
29+++ plugin/filesystem_engine/filesystem_engine.cc 2010-07-30 13:27:46 +0000
30@@ -0,0 +1,962 @@
31+/*
32+ Copyright (C) 2010 Zimin
33+
34+ This program is free software; you can redistribute it and/or
35+ modify it under the terms of the GNU General Public License
36+ as published by the Free Software Foundation; either version 2
37+ of the License, or (at your option) any later version.
38+
39+ This program is distributed in the hope that it will be useful,
40+ but WITHOUT ANY WARRANTY; without even the implied warranty of
41+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
42+ GNU General Public License for more details.
43+
44+ You should have received a copy of the GNU General Public License
45+ along with this program; if not, write to the Free Software
46+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
47+*/
48+
49+#include "config.h"
50+#include <drizzled/field.h>
51+#include <drizzled/field/blob.h>
52+#include <drizzled/field/timestamp.h>
53+#include <drizzled/error.h>
54+#include <drizzled/table.h>
55+#include <drizzled/session.h>
56+#include "drizzled/internal/my_sys.h"
57+#include <google/protobuf/io/zero_copy_stream.h>
58+#include <google/protobuf/io/zero_copy_stream_impl.h>
59+
60+#include "filesystem_engine.h"
61+#include "utility.h"
62+
63+#include <fcntl.h>
64+
65+#include <string>
66+#include <map>
67+#include <fstream>
68+#include <sstream>
69+#include <iostream>
70+#include <boost/algorithm/string.hpp>
71+
72+using namespace std;
73+using namespace drizzled;
74+
75+#define FILESYSTEM_EXT ".FST"
76+
77+/* Stuff for shares */
78+pthread_mutex_t filesystem_mutex;
79+
80+static const char *ha_filesystem_exts[] = {
81+ FILESYSTEM_EXT,
82+ NULL
83+};
84+
85+class FilesystemEngine : public drizzled::plugin::StorageEngine
86+{
87+private:
88+ typedef std::map<string, FilesystemTableShare*> FilesystemMap;
89+ FilesystemMap fs_open_tables;
90+public:
91+ FilesystemEngine(const string& name_arg)
92+ : drizzled::plugin::StorageEngine(name_arg,
93+ HTON_NULL_IN_KEY |
94+ HTON_SKIP_STORE_LOCK |
95+ HTON_CAN_INDEX_BLOBS |
96+ HTON_AUTO_PART_KEY),
97+ fs_open_tables()
98+ {
99+ table_definition_ext= FILESYSTEM_EXT;
100+ pthread_mutex_init(&filesystem_mutex, MY_MUTEX_INIT_FAST);
101+ }
102+ virtual ~FilesystemEngine()
103+ {
104+ pthread_mutex_destroy(&filesystem_mutex);
105+ }
106+
107+ virtual Cursor *create(TableShare &table,
108+ drizzled::memory::Root *mem_root)
109+ {
110+ return new (mem_root) FilesystemCursor(*this, table);
111+ }
112+
113+ const char **bas_ext() const {
114+ return ha_filesystem_exts;
115+ }
116+
117+ bool validateCreateTableOption(const std::string &key, const std::string &state);
118+
119+ int doCreateTable(Session &,
120+ Table &table_arg,
121+ const drizzled::TableIdentifier &identifier,
122+ drizzled::message::Table&);
123+
124+ int doGetTableDefinition(Session& ,
125+ const drizzled::TableIdentifier &,
126+ drizzled::message::Table &);
127+
128+ /* Temp only engine, so do not return values. */
129+ void doGetTableNames(drizzled::CachedDirectory &, const drizzled::SchemaIdentifier &, drizzled::plugin::TableNameList &);
130+
131+ int doDropTable(Session&, const TableIdentifier &);
132+
133+ /* operations on FilesystemTableShare */
134+ FilesystemTableShare *findOpenTable(const string table_name);
135+ void addOpenTable(const string &table_name, FilesystemTableShare *);
136+ void deleteOpenTable(const string &table_name);
137+
138+ uint32_t max_keys() const { return 0; }
139+ uint32_t max_key_parts() const { return 0; }
140+ uint32_t max_key_length() const { return 0; }
141+ bool doDoesTableExist(Session& , const TableIdentifier &);
142+ int doRenameTable(Session&, const TableIdentifier &, const TableIdentifier &);
143+ void doGetTableIdentifiers(drizzled::CachedDirectory &directory,
144+ const drizzled::SchemaIdentifier &schema_identifier,
145+ drizzled::TableIdentifiers &set_of_identifiers);
146+private:
147+ void getTableNamesFromFilesystem(drizzled::CachedDirectory &directory,
148+ const drizzled::SchemaIdentifier &schema_identifier,
149+ drizzled::plugin::TableNameList *set_of_names,
150+ drizzled::TableIdentifiers *set_of_identifiers);
151+};
152+
153+void FilesystemEngine::getTableNamesFromFilesystem(drizzled::CachedDirectory &directory,
154+ const drizzled::SchemaIdentifier &schema_identifier,
155+ drizzled::plugin::TableNameList *set_of_names,
156+ drizzled::TableIdentifiers *set_of_identifiers)
157+{
158+ drizzled::CachedDirectory::Entries entries= directory.getEntries();
159+
160+ for (drizzled::CachedDirectory::Entries::iterator entry_iter= entries.begin();
161+ entry_iter != entries.end();
162+ ++entry_iter)
163+ {
164+ drizzled::CachedDirectory::Entry *entry= *entry_iter;
165+ const string *filename= &entry->filename;
166+
167+ assert(not filename->empty());
168+
169+ string::size_type suffix_pos= filename->rfind('.');
170+
171+ if (suffix_pos != string::npos &&
172+ boost::iequals(filename->substr(suffix_pos), FILESYSTEM_EXT) &&
173+ filename->compare(0, strlen(TMP_FILE_PREFIX), TMP_FILE_PREFIX))
174+ {
175+ char uname[NAME_LEN + 1];
176+ uint32_t file_name_len;
177+
178+ file_name_len= TableIdentifier::filename_to_tablename(filename->c_str(), uname, sizeof(uname));
179+ uname[file_name_len - sizeof(FILESYSTEM_EXT) + 1]= '\0';
180+ if (set_of_names)
181+ set_of_names->insert(uname);
182+ if (set_of_identifiers)
183+ set_of_identifiers->push_back(TableIdentifier(schema_identifier, uname));
184+ }
185+ }
186+}
187+
188+void FilesystemEngine::doGetTableNames(drizzled::CachedDirectory &directory,
189+ const drizzled::SchemaIdentifier &schema_identifier,
190+ drizzled::plugin::TableNameList &set_of_names)
191+{
192+ getTableNamesFromFilesystem(directory, schema_identifier, &set_of_names, NULL);
193+}
194+
195+void FilesystemEngine::doGetTableIdentifiers(drizzled::CachedDirectory &directory,
196+ const drizzled::SchemaIdentifier &schema_identifier,
197+ drizzled::TableIdentifiers &set_of_identifiers)
198+{
199+ getTableNamesFromFilesystem(directory, schema_identifier, NULL, &set_of_identifiers);
200+}
201+
202+int FilesystemEngine::doDropTable(Session &, const TableIdentifier &identifier)
203+{
204+ string new_path(identifier.getPath());
205+ new_path+= FILESYSTEM_EXT;
206+ int err= unlink(new_path.c_str());
207+ if (err)
208+ {
209+ err= errno;
210+ }
211+ return err;
212+}
213+
214+bool FilesystemEngine::doDoesTableExist(Session &, const TableIdentifier &identifier)
215+{
216+ string proto_path(identifier.getPath());
217+ proto_path.append(FILESYSTEM_EXT);
218+
219+ if (access(proto_path.c_str(), F_OK))
220+ {
221+ return false;
222+ }
223+
224+ return true;
225+}
226+
227+FilesystemTableShare *FilesystemEngine::findOpenTable(const string table_name)
228+{
229+ FilesystemMap::iterator find_iter=
230+ fs_open_tables.find(table_name);
231+
232+ if (find_iter != fs_open_tables.end())
233+ return (*find_iter).second;
234+ else
235+ return NULL;
236+}
237+
238+void FilesystemEngine::addOpenTable(const string &table_name, FilesystemTableShare *share)
239+{
240+ fs_open_tables[table_name]= share;
241+}
242+
243+void FilesystemEngine::deleteOpenTable(const string &table_name)
244+{
245+ fs_open_tables.erase(table_name);
246+}
247+
248+static int parseTaggedFile(const FormatInfo &fi, vector< map<string, string> > &v)
249+{
250+ int filedesc= ::open(fi.getFileName().c_str(), O_RDONLY);
251+ if (filedesc < 0)
252+ return errno;
253+
254+ boost::scoped_ptr<TransparentFile> filebuffer(new TransparentFile);
255+ filebuffer->init_buff(filedesc);
256+
257+ bool last_line_empty= false;
258+ map<string, string> kv;
259+ int pos= 0;
260+ string line;
261+ while (1)
262+ {
263+ char ch= filebuffer->get_value(pos);
264+ if (ch == '\0')
265+ {
266+ if (!last_line_empty)
267+ {
268+ v.push_back(kv);
269+ kv.clear();
270+ }
271+ break;
272+ }
273+ ++pos;
274+
275+ if (!fi.isRowSeparator(ch))
276+ {
277+ line.push_back(ch);
278+ continue;
279+ }
280+
281+ // if we have a new empty line,
282+ // it means we got the end of a section, push it to vector
283+ if (line.empty())
284+ {
285+ if (!last_line_empty)
286+ {
287+ v.push_back(kv);
288+ kv.clear();
289+ }
290+ last_line_empty= true;
291+ continue;
292+ }
293+
294+ // parse the line
295+ vector<string> sv, svcopy;
296+ boost::split(sv, line, boost::is_any_of(fi.getColSeparator()));
297+ for (vector<string>::iterator iter= sv.begin();
298+ iter != sv.end();
299+ ++iter)
300+ {
301+ if (!iter->empty())
302+ svcopy.push_back(*iter);
303+ }
304+
305+ // the first splitted string as key,
306+ // and the second splitted string as value.
307+ string key(svcopy[0]);
308+ boost::trim(key);
309+ if (svcopy.size() >= 2)
310+ {
311+ string value(svcopy[1]);
312+ boost::trim(value);
313+ kv[key]= value;
314+ }
315+ else if (svcopy.size() >= 1)
316+ kv[key]= "";
317+
318+ last_line_empty= false;
319+ line.clear();
320+ }
321+ close(filedesc);
322+ return 0;
323+}
324+
325+int FilesystemEngine::doGetTableDefinition(Session &,
326+ const drizzled::TableIdentifier &identifier,
327+ drizzled::message::Table &table_proto)
328+{
329+ string new_path(identifier.getPath());
330+ new_path.append(FILESYSTEM_EXT);
331+
332+ int fd= ::open(new_path.c_str(), O_RDONLY);
333+ if (fd < 0)
334+ return ENOENT;
335+
336+ google::protobuf::io::ZeroCopyInputStream* input=
337+ new google::protobuf::io::FileInputStream(fd);
338+
339+ if (not input)
340+ return HA_ERR_CRASHED_ON_USAGE;
341+
342+ if (not table_proto.ParseFromZeroCopyStream(input))
343+ {
344+ close(fd);
345+ delete input;
346+ if (not table_proto.IsInitialized())
347+ {
348+ my_error(ER_CORRUPT_TABLE_DEFINITION, MYF(0),
349+ table_proto.InitializationErrorString().c_str());
350+ return ER_CORRUPT_TABLE_DEFINITION;
351+ }
352+
353+ return HA_ERR_CRASHED_ON_USAGE;
354+ }
355+ delete input;
356+
357+ // if the file is a tagged file such as /proc/meminfo
358+ // then columns of this table are added dynamically here.
359+ FormatInfo format;
360+ format.parseFromTable(&table_proto);
361+ if (!format.isTagFormat() || !format.isFileGiven())
362+ return EEXIST;
363+
364+ vector< map<string, string> > vm;
365+ if (parseTaggedFile(format, vm) != 0)
366+ return EEXIST;
367+ if (vm.size() == 0)
368+ return EEXIST;
369+
370+ // we don't care what user provides, just clear them all
371+ table_proto.clear_field();
372+ // we take the first section as sample
373+ map<string, string> kv= vm[0];
374+ for (map<string, string>::iterator iter= kv.begin();
375+ iter != kv.end();
376+ ++iter)
377+ {
378+ // add columns to table proto
379+ message::Table::Field *field= table_proto.add_field();
380+ field->set_name(iter->first);
381+ field->set_type(drizzled::message::Table::Field::VARCHAR);
382+ message::Table::Field::StringFieldOptions *stringoption= field->mutable_string_options();
383+ stringoption->set_length(iter->second.length() + 1);
384+ }
385+ return EEXIST;
386+}
387+
388+FilesystemTableShare::FilesystemTableShare(const string table_name_arg)
389+ : use_count(0), table_name(table_name_arg),
390+ update_file_opened(false),
391+ needs_reopen(false)
392+{
393+}
394+
395+FilesystemTableShare::~FilesystemTableShare()
396+{
397+ pthread_mutex_destroy(&mutex);
398+}
399+
400+FilesystemTableShare *FilesystemCursor::get_share(const char *table_name)
401+{
402+ Guard g(filesystem_mutex);
403+
404+ FilesystemEngine *a_engine= static_cast<FilesystemEngine *>(engine);
405+ share= a_engine->findOpenTable(table_name);
406+
407+ /*
408+ If share is not present in the hash, create a new share and
409+ initialize its members.
410+ */
411+ if (share == NULL)
412+ {
413+ share= new (nothrow) FilesystemTableShare(table_name);
414+ if (share == NULL)
415+ {
416+ return NULL;
417+ }
418+
419+ share->format.parseFromTable(table->getShare()->getTableProto());
420+ if (!share->format.isFileGiven())
421+ {
422+ return NULL;
423+ }
424+ /*
425+ * for taggered file such as /proc/meminfo,
426+ * we pre-process it first, and store the parsing result in a map.
427+ */
428+ if (share->format.isTagFormat())
429+ {
430+ if (parseTaggedFile(share->format, share->vm) != 0)
431+ {
432+ return NULL;
433+ }
434+ }
435+ a_engine->addOpenTable(share->table_name, share);
436+
437+ pthread_mutex_init(&share->mutex, MY_MUTEX_INIT_FAST);
438+ }
439+ share->use_count++;
440+
441+ return share;
442+}
443+
444+void FilesystemCursor::free_share()
445+{
446+ Guard g(filesystem_mutex);
447+
448+ if (!--share->use_count){
449+ FilesystemEngine *a_engine= static_cast<FilesystemEngine *>(engine);
450+ a_engine->deleteOpenTable(share->table_name);
451+ pthread_mutex_destroy(&share->mutex);
452+ delete share;
453+ }
454+}
455+
456+void FilesystemCursor::critical_section_enter()
457+{
458+ if (sql_command_type == SQLCOM_ALTER_TABLE ||
459+ sql_command_type == SQLCOM_UPDATE ||
460+ sql_command_type == SQLCOM_DELETE ||
461+ sql_command_type == SQLCOM_INSERT ||
462+ sql_command_type == SQLCOM_INSERT_SELECT ||
463+ sql_command_type == SQLCOM_REPLACE ||
464+ sql_command_type == SQLCOM_REPLACE_SELECT)
465+ share->filesystem_lock.scan_update_begin();
466+ else
467+ share->filesystem_lock.scan_begin();
468+
469+ thread_locked = true;
470+}
471+
472+void FilesystemCursor::critical_section_exit()
473+{
474+ if (sql_command_type == SQLCOM_ALTER_TABLE ||
475+ sql_command_type == SQLCOM_UPDATE ||
476+ sql_command_type == SQLCOM_DELETE ||
477+ sql_command_type == SQLCOM_INSERT ||
478+ sql_command_type == SQLCOM_INSERT_SELECT ||
479+ sql_command_type == SQLCOM_REPLACE ||
480+ sql_command_type == SQLCOM_REPLACE_SELECT)
481+ share->filesystem_lock.scan_update_end();
482+ else
483+ share->filesystem_lock.scan_end();
484+
485+ thread_locked = false;
486+}
487+
488+FilesystemCursor::FilesystemCursor(drizzled::plugin::StorageEngine &engine_arg, TableShare &table_arg)
489+ : Cursor(engine_arg, table_arg),
490+ file_buff(new TransparentFile),
491+ thread_locked(false)
492+{
493+}
494+
495+int FilesystemCursor::doOpen(const drizzled::TableIdentifier &identifier, int, uint32_t)
496+{
497+ if (!(share= get_share(identifier.getPath().c_str())))
498+ return ENOENT;
499+
500+ file_desc= ::open(share->format.getFileName().c_str(), O_RDONLY);
501+ if (file_desc < 0)
502+ {
503+ free_share();
504+ return ER_CANT_OPEN_FILE;
505+ }
506+
507+ ref_length= sizeof(off_t);
508+ return 0;
509+}
510+
511+int FilesystemCursor::close(void)
512+{
513+ int err= ::close(file_desc);
514+ if (err < 0)
515+ err= errno;
516+ free_share();
517+ return err;
518+}
519+
520+int FilesystemCursor::doStartTableScan(bool)
521+{
522+ sql_command_type = session_sql_command(table->getSession());
523+
524+ if (thread_locked)
525+ critical_section_exit();
526+ critical_section_enter();
527+
528+ if (share->format.isTagFormat())
529+ {
530+ tag_depth= 0;
531+ return 0;
532+ }
533+
534+ current_position= 0;
535+ next_position= 0;
536+ slots.clear();
537+ if (share->needs_reopen)
538+ {
539+ file_desc= ::open(share->format.getFileName().c_str(), O_RDONLY);
540+ if (file_desc < 0)
541+ return HA_ERR_CRASHED_ON_USAGE;
542+ share->needs_reopen= false;
543+ }
544+ file_buff->init_buff(file_desc);
545+ return 0;
546+}
547+
548+int FilesystemCursor::find_current_row(unsigned char *buf)
549+{
550+ ptrdiff_t row_offset= buf - table->record[0];
551+
552+ next_position= current_position;
553+
554+ string content;
555+ bool line_done= false;
556+ bool line_blank= true;
557+ Field **field= table->getFields();
558+ for (; !line_done && *field; ++next_position)
559+ {
560+ char ch= file_buff->get_value(next_position);
561+ if (ch == '\0')
562+ return HA_ERR_END_OF_FILE;
563+
564+ if (share->format.isEscapedChar(ch))
565+ {
566+ // read next character
567+ ch= file_buff->get_value(++next_position);
568+ if (ch == '\0')
569+ return HA_ERR_END_OF_FILE;
570+
571+ content.push_back(FormatInfo::getEscapedChar(ch));
572+
573+ continue;
574+ }
575+
576+ // if we find separator
577+ bool is_row= share->format.isRowSeparator(ch);
578+ bool is_col= share->format.isColSeparator(ch);
579+ if (content.empty())
580+ {
581+ if (share->format.isSeparatorModeGeneral() && is_row && line_blank)
582+ continue;
583+ if (share->format.isSeparatorModeWeak() && is_col)
584+ continue;
585+ }
586+
587+ if (is_row || is_col)
588+ {
589+ (*field)->move_field_offset(row_offset);
590+ if (!content.empty())
591+ {
592+ (*field)->set_notnull();
593+ if ((*field)->isReadSet() || (*field)->isWriteSet())
594+ {
595+ (*field)->setWriteSet();
596+ (*field)->store(content.c_str(),
597+ (uint32_t)content.length(),
598+ &my_charset_bin,
599+ CHECK_FIELD_WARN);
600+ }
601+ else
602+ (*field)->set_default();
603+ }
604+ else
605+ (*field)->set_null();
606+ (*field)->move_field_offset(-row_offset);
607+
608+ content.clear();
609+ ++field;
610+
611+ line_blank= false;
612+ if (is_row)
613+ line_done= true;
614+
615+ continue;
616+ }
617+ content.push_back(ch);
618+ }
619+ if (line_done)
620+ {
621+ for (; *field; ++field)
622+ {
623+ (*field)->move_field_offset(row_offset);
624+ (*field)->set_notnull();
625+ (*field)->set_default();
626+ (*field)->move_field_offset(-row_offset);
627+ }
628+ }
629+ else
630+ {
631+ // eat up characters when line_done
632+ while (!line_done)
633+ {
634+ char ch= file_buff->get_value(next_position);
635+ if (share->format.isRowSeparator(ch))
636+ line_done= true;
637+ ++next_position;
638+ }
639+ }
640+ return 0;
641+}
642+
643+int FilesystemCursor::rnd_next(unsigned char *buf)
644+{
645+ ha_statistic_increment(&system_status_var::ha_read_rnd_next_count);
646+ if (share->format.isTagFormat())
647+ {
648+ if (tag_depth >= share->vm.size())
649+ return HA_ERR_END_OF_FILE;
650+
651+ ptrdiff_t row_offset= buf - table->record[0];
652+ for (Field **field= table->getFields(); *field; field++)
653+ {
654+ string key((*field)->field_name);
655+ string content= share->vm[tag_depth][key];
656+
657+ (*field)->move_field_offset(row_offset);
658+ if (!content.empty())
659+ {
660+ (*field)->set_notnull();
661+ if ((*field)->isReadSet() || (*field)->isWriteSet())
662+ {
663+ (*field)->setWriteSet();
664+ (*field)->store(content.c_str(),
665+ (uint32_t)content.length(),
666+ &my_charset_bin,
667+ CHECK_FIELD_WARN);
668+ }
669+ else
670+ {
671+ (*field)->set_default();
672+ }
673+ }
674+ else
675+ {
676+ (*field)->set_null();
677+ }
678+ (*field)->move_field_offset(-row_offset);
679+ }
680+ ++tag_depth;
681+ return 0;
682+ }
683+ // normal file
684+ current_position= next_position;
685+ return find_current_row(buf);
686+}
687+
688+void FilesystemCursor::position(const unsigned char *)
689+{
690+ *reinterpret_cast<off_t *>(ref)= current_position;
691+}
692+
693+int FilesystemCursor::rnd_pos(unsigned char * buf, unsigned char *pos)
694+{
695+ ha_statistic_increment(&system_status_var::ha_read_rnd_count);
696+ current_position= *reinterpret_cast<off_t *>(pos);
697+ return find_current_row(buf);
698+}
699+
700+int FilesystemCursor::info(uint32_t)
701+{
702+ if (stats.records < 2)
703+ stats.records= 2;
704+ return 0;
705+}
706+
707+int FilesystemCursor::openUpdateFile()
708+{
709+ if (!share->update_file_opened)
710+ {
711+ struct stat st;
712+ if (stat(share->format.getFileName().c_str(), &st) < 0)
713+ return -1;
714+ update_file_name= share->format.getFileName();
715+ update_file_name.append(".UPDATE");
716+ unlink(update_file_name.c_str());
717+ update_file_desc= ::open(update_file_name.c_str(),
718+ O_RDWR | O_CREAT | O_TRUNC,
719+ st.st_mode);
720+ if (update_file_desc < 0)
721+ {
722+ return -1;
723+ }
724+ share->update_file_opened= true;
725+ }
726+ return 0;
727+}
728+
729+int FilesystemCursor::doEndTableScan()
730+{
731+ sql_command_type = session_sql_command(table->getSession());
732+
733+ if (share->format.isTagFormat())
734+ {
735+ if (thread_locked)
736+ critical_section_exit();
737+ return 0;
738+ }
739+
740+ if (slots.size() == 0)
741+ {
742+ if (thread_locked)
743+ critical_section_exit();
744+ return 0;
745+ }
746+
747+ int err= -1;
748+ sort(slots.begin(), slots.end());
749+ vector< pair<off_t, off_t> >::iterator slot_iter= slots.begin();
750+ off_t write_start= 0;
751+ off_t write_end= 0;
752+ off_t file_buffer_start= 0;
753+
754+ pthread_mutex_lock(&share->mutex);
755+
756+ file_buff->init_buff(file_desc);
757+ if (openUpdateFile() < 0)
758+ goto error;
759+
760+ while (file_buffer_start != -1)
761+ {
762+ bool in_hole= false;
763+
764+ write_end= file_buff->end();
765+ if (slot_iter != slots.end() &&
766+ write_end >= slot_iter->first)
767+ {
768+ write_end= slot_iter->first;
769+ in_hole= true;
770+ }
771+
772+ off_t write_length= write_end - write_start;
773+ if (write_in_all(update_file_desc,
774+ file_buff->ptr() + (write_start - file_buff->start()),
775+ write_length) != write_length)
776+ goto error;
777+
778+ if (in_hole)
779+ {
780+ while (file_buff->end() <= slot_iter->second && file_buffer_start != -1)
781+ file_buffer_start= file_buff->read_next();
782+ write_start= slot_iter->second;
783+ ++slot_iter;
784+ }
785+ else
786+ write_start= write_end;
787+
788+ if (write_end == file_buff->end())
789+ file_buffer_start= file_buff->read_next();
790+ }
791+ // close update file
792+ if (::fsync(update_file_desc) ||
793+ ::close(update_file_desc))
794+ goto error;
795+ share->update_file_opened= false;
796+
797+ // close current file
798+ if (::close(file_desc))
799+ goto error;
800+ if (::rename(update_file_name.c_str(), share->format.getFileName().c_str()))
801+ goto error;
802+
803+ // reopen the data file
804+ file_desc= ::open(share->format.getFileName().c_str(), O_RDONLY);
805+ share->needs_reopen= true;
806+ if (file_desc < 0)
807+ goto error;
808+ err= 0;
809+error:
810+ err= errno;
811+ pthread_mutex_unlock(&share->mutex);
812+
813+ if (thread_locked)
814+ critical_section_exit();
815+ return err;
816+}
817+
818+void FilesystemCursor::recordToString(string& output)
819+{
820+ bool first= true;
821+ drizzled::String attribute;
822+ for (Field **field= table->getFields(); *field; ++field)
823+ {
824+ if (first == true)
825+ {
826+ first= false;
827+ }
828+ else
829+ {
830+ output.append(share->format.getColSeparatorHead());
831+ }
832+
833+ if (not (*field)->is_null())
834+ {
835+ (*field)->setReadSet();
836+ (*field)->val_str(&attribute, &attribute);
837+
838+ output.append(attribute.ptr(), attribute.length());
839+ }
840+ else
841+ {
842+ output.append("0");
843+ }
844+ }
845+ output.append(share->format.getRowSeparatorHead());
846+}
847+
848+int FilesystemCursor::doInsertRecord(unsigned char * buf)
849+{
850+ (void)buf;
851+
852+ if (share->format.isTagFormat())
853+ return 0;
854+
855+ sql_command_type = session_sql_command(table->getSession());
856+
857+ critical_section_enter();
858+
859+ int err_write= 0;
860+ int err_close= 0;
861+
862+ string output_line;
863+ recordToString(output_line);
864+
865+ int fd= ::open(share->format.getFileName().c_str(), O_WRONLY | O_APPEND);
866+ if (fd < 0)
867+ {
868+ critical_section_exit();
869+ return ENOENT;
870+ }
871+
872+ err_write= write_in_all(fd, output_line.c_str(), output_line.length());
873+ if (err_write < 0)
874+ err_write= errno;
875+ else
876+ err_write= 0;
877+
878+ err_close= ::close(fd);
879+ if (err_close < 0)
880+ err_close= errno;
881+
882+ critical_section_exit();
883+
884+ if (err_write)
885+ return err_write;
886+ if (err_close)
887+ return err_close;
888+ return 0;
889+}
890+
891+int FilesystemCursor::doUpdateRecord(const unsigned char *, unsigned char *)
892+{
893+ if (share->format.isTagFormat())
894+ return 0;
895+ if (openUpdateFile())
896+ return errno;
897+
898+ // get the update information
899+ string str;
900+ recordToString(str);
901+
902+ if (write_in_all(update_file_desc, str.c_str(), str.length()) < 0)
903+ return errno;
904+
905+ addSlot();
906+
907+ return 0;
908+}
909+
910+void FilesystemCursor::addSlot()
911+{
912+ if (slots.size() > 0 && slots.back().second == current_position)
913+ slots.back().second= next_position;
914+ else
915+ slots.push_back(make_pair(current_position, next_position));
916+}
917+
918+int FilesystemCursor::doDeleteRecord(const unsigned char *)
919+{
920+ if (share->format.isTagFormat())
921+ return 0;
922+ addSlot();
923+ return 0;
924+}
925+
926+int FilesystemEngine::doRenameTable(Session&, const TableIdentifier &from, const TableIdentifier &to)
927+{
928+ if (rename_file_ext(from.getPath().c_str(), to.getPath().c_str(), FILESYSTEM_EXT))
929+ return errno;
930+ return 0;
931+}
932+
933+bool FilesystemEngine::validateCreateTableOption(const std::string &key,
934+ const std::string &state)
935+{
936+ return FormatInfo::validateOption(key, state);
937+}
938+
939+int FilesystemEngine::doCreateTable(Session &,
940+ Table&,
941+ const drizzled::TableIdentifier &identifier,
942+ drizzled::message::Table &proto)
943+{
944+ FormatInfo format;
945+ format.parseFromTable(&proto);
946+ if (format.isFileGiven())
947+ {
948+ int err= ::open(format.getFileName().c_str(), O_RDONLY);
949+ if (err < 0)
950+ return errno;
951+ }
952+
953+ string new_path(identifier.getPath());
954+ new_path+= FILESYSTEM_EXT;
955+ fstream output(new_path.c_str(), ios::out | ios::binary);
956+
957+ if (! output)
958+ return 1;
959+
960+ if (! proto.SerializeToOstream(&output))
961+ {
962+ output.close();
963+ unlink(new_path.c_str());
964+ return 1;
965+ }
966+
967+ return 0;
968+}
969+
970+static FilesystemEngine *filesystem_engine= NULL;
971+
972+static int filesystem_init_func(drizzled::module::Context &context)
973+{
974+ filesystem_engine= new FilesystemEngine("FILESYSTEM");
975+ context.add(filesystem_engine);
976+
977+ return 0;
978+}
979+
980+DRIZZLE_DECLARE_PLUGIN
981+{
982+ DRIZZLE_VERSION_ID,
983+ "FILESYSTEM",
984+ "1.0",
985+ "Zimin",
986+ "Filesystem Engine",
987+ PLUGIN_LICENSE_GPL,
988+ filesystem_init_func, /* Plugin Init */
989+ NULL, /* system variables */
990+ NULL /* config options */
991+}
992+DRIZZLE_DECLARE_PLUGIN_END;
993
994=== added file 'plugin/filesystem_engine/filesystem_engine.h'
995--- plugin/filesystem_engine/filesystem_engine.h 1970-01-01 00:00:00 +0000
996+++ plugin/filesystem_engine/filesystem_engine.h 2010-07-30 13:27:46 +0000
997@@ -0,0 +1,116 @@
998+/*
999+ Copyright (C) 2010 Zimin
1000+
1001+ This program is free software; you can redistribute it and/or
1002+ modify it under the terms of the GNU General Public License
1003+ as published by the Free Software Foundation; either version 2
1004+ of the License, or (at your option) any later version.
1005+
1006+ This program is distributed in the hope that it will be useful,
1007+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1008+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1009+ GNU General Public License for more details.
1010+
1011+ You should have received a copy of the GNU General Public License
1012+ along with this program; if not, write to the Free Software
1013+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1014+*/
1015+
1016+#ifndef PLUGIN_FILESYSTEM_ENGINE_FILESYSTEM_ENGINE_H
1017+#define PLUGIN_FILESYSTEM_ENGINE_FILESYSTEM_ENGINE_H
1018+
1019+#include <drizzled/cursor.h>
1020+#include <drizzled/thr_lock.h>
1021+
1022+#include <boost/scoped_ptr.hpp>
1023+
1024+#include <sys/types.h>
1025+#include <sys/stat.h>
1026+#include <fstream>
1027+
1028+#include "transparent_file.h"
1029+#include "formatinfo.h"
1030+#include "filesystemlock.h"
1031+
1032+class FilesystemTableShare
1033+{
1034+ FilesystemTableShare();
1035+ FilesystemTableShare(const FilesystemTableShare &);
1036+ FilesystemTableShare& operator=(const FilesystemTableShare &);
1037+public:
1038+ explicit FilesystemTableShare(const std::string name);
1039+ ~FilesystemTableShare();
1040+
1041+ uint32_t use_count;
1042+ const std::string table_name;
1043+ bool update_file_opened;
1044+ bool needs_reopen;
1045+ pthread_mutex_t mutex;
1046+ FormatInfo format;
1047+ std::vector< std::map<std::string, std::string> > vm;
1048+ FilesystemLock filesystem_lock;
1049+};
1050+
1051+class FilesystemCursor : public drizzled::Cursor
1052+{
1053+ FilesystemTableShare *share; /* Shared lock info */
1054+ boost::scoped_ptr<TransparentFile> file_buff;
1055+ int file_desc;
1056+ std::string update_file_name;
1057+ int update_file_desc;
1058+ size_t tag_depth;
1059+ off_t current_position;
1060+ off_t next_position;
1061+ bool thread_locked;
1062+ uint32_t sql_command_type; /* Type of SQL command to process */
1063+ /* each slot means an interval in a file which will be deleted later */
1064+ std::vector< std::pair<off_t, off_t> > slots;
1065+
1066+public:
1067+ FilesystemCursor(drizzled::plugin::StorageEngine &engine, drizzled::TableShare &table_arg);
1068+ ~FilesystemCursor()
1069+ {
1070+ }
1071+
1072+ /** @brief
1073+ The name that will be used for display purposes.
1074+ */
1075+ const char *table_type(void) const { return "FILESYSTEM"; }
1076+
1077+ /*
1078+ Called in test_quick_select to determine if indexes should be used.
1079+ */
1080+ virtual double scan_time() { return (double) (stats.records+stats.deleted) / 20.0+10; }
1081+
1082+ /* The next method will never be called */
1083+ virtual bool fast_key_read() { return 1;}
1084+ drizzled::ha_rows estimate_rows_upper_bound() { return HA_POS_ERROR; }
1085+
1086+ int doOpen(const drizzled::TableIdentifier &, int, uint32_t);
1087+ int close(void);
1088+ int doStartTableScan(bool scan=1);
1089+ int rnd_next(unsigned char *);
1090+ int rnd_pos(unsigned char * , unsigned char *);
1091+ void position(const unsigned char *);
1092+ int info(uint);
1093+ int doEndTableScan();
1094+ int doInsertRecord(unsigned char * buf);
1095+ int doUpdateRecord(const unsigned char *, unsigned char *);
1096+ int doDeleteRecord(const unsigned char *);
1097+
1098+ virtual void get_auto_increment(uint64_t offset, uint64_t increment,
1099+ uint64_t nb_desired_values,
1100+ uint64_t *first_value,
1101+ uint64_t *nb_reserved_values) { (void)offset; (void)increment; (void)nb_desired_values; (void)first_value; (void)nb_reserved_values; };
1102+ FilesystemTableShare *get_share(const char *table_name);
1103+ void free_share();
1104+ void critical_section_enter();
1105+ void critical_section_exit();
1106+private:
1107+ void recordToString(std::string& output);
1108+ void addSlot();
1109+ int openUpdateFile();
1110+ int find_current_row(unsigned char *buf);
1111+};
1112+
1113+#endif /* PLUGIN_FILESYSTEM_ENGINE_FILESYSTEM_ENGINE_H */
1114
1115=== added file 'plugin/filesystem_engine/filesystemlock.cc'
1116--- plugin/filesystem_engine/filesystemlock.cc 1970-01-01 00:00:00 +0000
1117+++ plugin/filesystem_engine/filesystemlock.cc 2010-07-30 13:27:46 +0000
1118@@ -0,0 +1,89 @@
1119+/*
1120+ Copyright (C) 2010 Zimin
1121+
1122+ This program is free software; you can redistribute it and/or
1123+ modify it under the terms of the GNU General Public License
1124+ as published by the Free Software Foundation; either version 2
1125+ of the License, or (at your option) any later version.
1126+
1127+ This program is distributed in the hope that it will be useful,
1128+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1129+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1130+ GNU General Public License for more details.
1131+
1132+ You should have received a copy of the GNU General Public License
1133+ along with this program; if not, write to the Free Software
1134+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1135+*/
1136+
1137+#include <config.h>
1138+#include <pthread.h>
1139+#include <assert.h>
1140+#include "filesystemlock.h"
1141+
1142+FilesystemLock::FilesystemLock()
1143+ : scanner_count(0),
1144+ updater_count(0)
1145+{
1146+ pthread_cond_init(&condition, NULL);
1147+ pthread_mutex_init(&mutex, NULL);
1148+}
1149+
1150+FilesystemLock::~FilesystemLock()
1151+{
1152+ pthread_cond_destroy(&condition);
1153+ pthread_mutex_destroy(&mutex);
1154+}
1155+
1156+void FilesystemLock::scan_begin()
1157+{
1158+ pthread_mutex_lock(&mutex);
1159+ while (true)
1160+ {
1161+ if (updater_count == 0)
1162+ {
1163+ scanner_count++;
1164+ pthread_mutex_unlock(&mutex);
1165+ return;
1166+ }
1167+ pthread_cond_wait(&condition, &mutex);
1168+ }
1169+ pthread_mutex_unlock(&mutex);
1170+}
1171+
1172+void FilesystemLock::scan_end() {
1173+ pthread_mutex_lock(&mutex);
1174+ scanner_count--;
1175+ assert(scanner_count >= 0);
1176+ if (scanner_count == 0)
1177+ pthread_cond_broadcast(&condition);
1178+ pthread_mutex_unlock(&mutex);
1179+}
1180+
1181+void FilesystemLock::scan_update_begin()
1182+{
1183+ pthread_mutex_lock(&mutex);
1184+ while (true)
1185+ {
1186+ if (scanner_count == 0 && updater_count == 0)
1187+ {
1188+ scanner_count++;
1189+ updater_count++;
1190+ pthread_mutex_unlock(&mutex);
1191+ return;
1192+ }
1193+ pthread_cond_wait(&condition, &mutex);
1194+ }
1195+ pthread_mutex_unlock(&mutex);
1196+}
1197+
1198+void FilesystemLock::scan_update_end()
1199+{
1200+ pthread_mutex_lock(&mutex);
1201+ scanner_count--;
1202+ updater_count--;
1203+ assert(scanner_count >= 0 && updater_count >= 0);
1204+
1205+ pthread_cond_broadcast(&condition);
1206+ pthread_mutex_unlock(&mutex);
1207+}
1208
1209=== added file 'plugin/filesystem_engine/filesystemlock.h'
1210--- plugin/filesystem_engine/filesystemlock.h 1970-01-01 00:00:00 +0000
1211+++ plugin/filesystem_engine/filesystemlock.h 2010-07-30 13:27:46 +0000
1212@@ -0,0 +1,60 @@
1213+/*
1214+ Copyright (C) 2010 Zimin
1215+
1216+ This program is free software; you can redistribute it and/or
1217+ modify it under the terms of the GNU General Public License
1218+ as published by the Free Software Foundation; either version 2
1219+ of the License, or (at your option) any later version.
1220+
1221+ This program is distributed in the hope that it will be useful,
1222+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1223+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1224+ GNU General Public License for more details.
1225+
1226+ You should have received a copy of the GNU General Public License
1227+ along with this program; if not, write to the Free Software
1228+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1229+*/
1230+
1231+#ifndef PLUGIN_FILESYSTEM_ENGINE_FILESYSTEMLOCK_H
1232+#define PLUGIN_FILESYSTEM_ENGINE_FILESYSTEMLOCK_H
1233+
1234+#include <pthread.h>
1235+
1236+class FilesystemLock
1237+{
1238+public:
1239+ FilesystemLock();
1240+ ~FilesystemLock();
1241+
1242+ void scan_begin();
1243+ void scan_end();
1244+ void scan_update_begin();
1245+ void scan_update_end();
1246+private:
1247+ pthread_cond_t condition;
1248+ pthread_mutex_t mutex;
1249+ int scanner_count;
1250+ int updater_count;
1251+};
1252+
1253+class Guard
1254+{
1255+public:
1256+ Guard(pthread_mutex_t& mutex) : mutex_(&mutex)
1257+ {
1258+ pthread_mutex_lock(mutex_);
1259+ }
1260+
1261+ ~Guard()
1262+ {
1263+ if (mutex_)
1264+ {
1265+ pthread_mutex_unlock(mutex_);
1266+ }
1267+ }
1268+private:
1269+ pthread_mutex_t *mutex_;
1270+};
1271+
1272+#endif /* PLUGIN_FILESYSTEM_ENGINE_FILESYSTEMLOCK_H */
1273
1274=== added file 'plugin/filesystem_engine/formatinfo.cc'
1275--- plugin/filesystem_engine/formatinfo.cc 1970-01-01 00:00:00 +0000
1276+++ plugin/filesystem_engine/formatinfo.cc 2010-07-30 13:27:46 +0000
1277@@ -0,0 +1,187 @@
1278+/*
1279+ Copyright (C) 2010 Zimin
1280+
1281+ This program is free software; you can redistribute it and/or
1282+ modify it under the terms of the GNU General Public License
1283+ as published by the Free Software Foundation; either version 2
1284+ of the License, or (at your option) any later version.
1285+
1286+ This program is distributed in the hope that it will be useful,
1287+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1288+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1289+ GNU General Public License for more details.
1290+
1291+ You should have received a copy of the GNU General Public License
1292+ along with this program; if not, write to the Free Software
1293+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1294+*/
1295+
1296+#include "config.h"
1297+#include <drizzled/field.h>
1298+#include <string>
1299+#include <boost/algorithm/string.hpp>
1300+
1301+#include "formatinfo.h"
1302+
1303+#include <iostream>
1304+using namespace std;
1305+
1306+static const char* FORMAT_INFO_FILE_PATH= "FILE";
1307+static const char* FORMAT_INFO_ROW_SEPARATOR= "ROW_SEPARATOR";
1308+static const char* FORMAT_INFO_COL_SEPARATOR= "COL_SEPARATOR";
1309+static const char* FORMAT_INFO_FORMAT= "FORMAT";
1310+static const char* FORMAT_INFO_SEPARATOR_MODE= "SEPARATOR_MODE";
1311+static const char* FORMAT_INFO_SEPARATOR_MODE_STRICT= "STRICT";
1312+static const char* FORMAT_INFO_SEPARATOR_MODE_GENERAL= "GENERAL";
1313+static const char* FORMAT_INFO_SEPARATOR_MODE_WEAK= "WEAK";
1314+static const char* FORMAT_INFO_FORMAT_TAG= "KEY_VALUE";
1315+static const char* FORMAT_INFO_FORMAT_NORMAL= "NORMAL";
1316+static const char* FORMAT_INFO_ESCAPE= "ESCAPED_BY";
1317+enum filesystem_option_separator_mode_type
1318+{
1319+ FORMAT_INFO_SEPARATOR_MODE_STRICT_ENUM= 1,
1320+ FORMAT_INFO_SEPARATOR_MODE_GENERAL_ENUM,
1321+ FORMAT_INFO_SEPARATOR_MODE_WEAK_ENUM
1322+};
1323+
1324+static const char* DEFAULT_ROW_SEPARATOR= "\n";
1325+static const char* DEFAULT_COL_SEPARATOR= " \t";
1326+
1327+FormatInfo::FormatInfo()
1328+ : row_separator(DEFAULT_ROW_SEPARATOR),
1329+ col_separator(DEFAULT_COL_SEPARATOR),
1330+ file_format(FORMAT_INFO_FORMAT_NORMAL),
1331+ separator_mode(FORMAT_INFO_SEPARATOR_MODE_GENERAL_ENUM)
1332+{
1333+}
1334+
1335+void FormatInfo::parseFromTable(drizzled::message::Table *proto)
1336+{
1337+ if (!proto)
1338+ return;
1339+
1340+ for (int x= 0; x < proto->engine().options_size(); x++)
1341+ {
1342+ const drizzled::message::Engine::Option& option= proto->engine().options(x);
1343+
1344+ if (boost::iequals(option.name(), FORMAT_INFO_FILE_PATH))
1345+ real_file_name= option.state();
1346+ else if (boost::iequals(option.name(), FORMAT_INFO_ROW_SEPARATOR))
1347+ row_separator= option.state();
1348+ else if (boost::iequals(option.name(), FORMAT_INFO_COL_SEPARATOR))
1349+ col_separator= option.state();
1350+ else if (boost::iequals(option.name(), FORMAT_INFO_FORMAT))
1351+ file_format= option.state();
1352+ else if (boost::iequals(option.name(), FORMAT_INFO_ESCAPE))
1353+ escape= option.state();
1354+ else if (boost::iequals(option.name(), FORMAT_INFO_SEPARATOR_MODE))
1355+ {
1356+ if (boost::iequals(option.state(), FORMAT_INFO_SEPARATOR_MODE_STRICT))
1357+ separator_mode= FORMAT_INFO_SEPARATOR_MODE_STRICT_ENUM;
1358+ else if (boost::iequals(option.state(), FORMAT_INFO_SEPARATOR_MODE_GENERAL))
1359+ separator_mode= FORMAT_INFO_SEPARATOR_MODE_GENERAL_ENUM;
1360+ else if (boost::iequals(option.state(), FORMAT_INFO_SEPARATOR_MODE_WEAK))
1361+ separator_mode= FORMAT_INFO_SEPARATOR_MODE_WEAK_ENUM;
1362+ }
1363+ }
1364+}
1365+
1366+bool FormatInfo::isFileGiven() const
1367+{
1368+ return !real_file_name.empty();
1369+}
1370+
1371+string FormatInfo::getFileName() const
1372+{
1373+ return real_file_name;
1374+}
1375+
1376+bool FormatInfo::isRowSeparator(char ch) const
1377+{
1378+ return (row_separator.find(ch) != string::npos);
1379+}
1380+
1381+bool FormatInfo::isColSeparator(char ch) const
1382+{
1383+ return (col_separator.find(ch) != string::npos);
1384+}
1385+
1386+string FormatInfo::getRowSeparatorHead() const
1387+{
1388+ return row_separator.substr(0, 1);
1389+}
1390+
1391+string FormatInfo::getColSeparatorHead() const
1392+{
1393+ return col_separator.substr(0, 1);
1394+}
1395+
1396+string FormatInfo::getColSeparator() const
1397+{
1398+ return col_separator;
1399+}
1400+
1401+bool FormatInfo::validateOption(const std::string &key, const std::string &state)
1402+{
1403+ cerr << "validateOption: " << key << " , " << state << endl;
1404+ if (boost::iequals(key, FORMAT_INFO_FILE_PATH) &&
1405+ ! state.empty())
1406+ return true;
1407+ if (boost::iequals(key, FORMAT_INFO_FORMAT) &&
1408+ ! state.empty())
1409+ return true;
1410+ if (boost::iequals(key, FORMAT_INFO_ESCAPE) &&
1411+ ! state.empty())
1412+ return true;
1413+ if ((boost::iequals(key, FORMAT_INFO_ROW_SEPARATOR) ||
1414+ boost::iequals(key, FORMAT_INFO_COL_SEPARATOR)) &&
1415+ ! state.empty())
1416+ return true;
1417+ if (boost::iequals(key, FORMAT_INFO_SEPARATOR_MODE) &&
1418+ (boost::iequals(state, FORMAT_INFO_SEPARATOR_MODE_STRICT) ||
1419+ boost::iequals(state, FORMAT_INFO_SEPARATOR_MODE_GENERAL) ||
1420+ boost::iequals(state, FORMAT_INFO_SEPARATOR_MODE_WEAK)))
1421+ return true;
1422+ return false;
1423+}
1424+
1425+bool FormatInfo::isSeparatorModeGeneral() const
1426+{
1427+ return (separator_mode >= FORMAT_INFO_SEPARATOR_MODE_GENERAL_ENUM);
1428+}
1429+
1430+bool FormatInfo::isSeparatorModeWeak() const
1431+{
1432+ return (separator_mode >= FORMAT_INFO_SEPARATOR_MODE_WEAK_ENUM);
1433+}
1434+
1435+bool FormatInfo::isTagFormat() const
1436+{
1437+ return boost::iequals(file_format, FORMAT_INFO_FORMAT_TAG);
1438+}
1439+
1440+bool FormatInfo::isEscapedChar(char ch) const
1441+{
1442+ return (!escape.empty() && escape.find(ch) != string::npos);
1443+}
1444+
1445+char FormatInfo::getEscapedChar(const char ch)
1446+{
1447+ char escaped= ch;
1448+ switch (ch)
1449+ {
1450+ case 't':
1451+ escaped= '\t';
1452+ break;
1453+ case 'b':
1454+ escaped= '\b';
1455+ break;
1456+ case 'r':
1457+ escaped= '\r';
1458+ break;
1459+ case 'n':
1460+ escaped= '\n';
1461+ break;
1462+ }
1463+ return escaped;
1464+}
1465
1466=== added file 'plugin/filesystem_engine/formatinfo.h'
1467--- plugin/filesystem_engine/formatinfo.h 1970-01-01 00:00:00 +0000
1468+++ plugin/filesystem_engine/formatinfo.h 2010-07-30 13:27:46 +0000
1469@@ -0,0 +1,51 @@
1470+/*
1471+ Copyright (C) 2010 Zimin
1472+
1473+ This program is free software; you can redistribute it and/or
1474+ modify it under the terms of the GNU General Public License
1475+ as published by the Free Software Foundation; either version 2
1476+ of the License, or (at your option) any later version.
1477+
1478+ This program is distributed in the hope that it will be useful,
1479+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1480+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1481+ GNU General Public License for more details.
1482+
1483+ You should have received a copy of the GNU General Public License
1484+ along with this program; if not, write to the Free Software
1485+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1486+*/
1487+
1488+#ifndef PLUGIN_FILESYSTEM_ENGINE_FORMATINFO_H
1489+#define PLUGIN_FILESYSTEM_ENGINE_FORMATINFO_H
1490+
1491+#include <drizzled/message/table.pb.h>
1492+
1493+class FormatInfo
1494+{
1495+public:
1496+ FormatInfo();
1497+ void parseFromTable(drizzled::message::Table *proto);
1498+ bool isFileGiven() const;
1499+ bool isRowSeparator(char ch) const;
1500+ bool isColSeparator(char ch) const;
1501+ bool isEscapedChar(char ch) const;
1502+ std::string getRowSeparatorHead() const;
1503+ std::string getColSeparatorHead() const;
1504+ std::string getColSeparator() const;
1505+ std::string getFileName() const;
1506+ bool isSeparatorModeGeneral() const;
1507+ bool isSeparatorModeWeak() const;
1508+ bool isTagFormat() const;
1509+ static bool validateOption(const std::string &key, const std::string &state);
1510+ static char getEscapedChar(const char ch);
1511+private:
1512+ std::string real_file_name;
1513+ std::string row_separator;
1514+ std::string col_separator;
1515+ std::string file_format;
1516+ std::string escape;
1517+ int separator_mode;
1518+};
1519+
1520+#endif /* PLUGIN_FILESYSTEM_ENGINE_FORMATINFO_H */
1521
1522=== added file 'plugin/filesystem_engine/plugin.ini'
1523--- plugin/filesystem_engine/plugin.ini 1970-01-01 00:00:00 +0000
1524+++ plugin/filesystem_engine/plugin.ini 2010-07-30 13:27:46 +0000
1525@@ -0,0 +1,5 @@
1526+[plugin]
1527+title=File System Storage Engine
1528+description=This storage enigne enables you to access raw file in Drizzle.
1529+headers=filesystem_engine.h transparent_file.h utility.h formatinfo.h filesystemlock.h
1530+sources=filesystem_engine.cc transparent_file.cc formatinfo.cc filesystemlock.cc
1531
1532=== added directory 'plugin/filesystem_engine/tests'
1533=== added directory 'plugin/filesystem_engine/tests/r'
1534=== added file 'plugin/filesystem_engine/tests/r/basic_create_table.result'
1535--- plugin/filesystem_engine/tests/r/basic_create_table.result 1970-01-01 00:00:00 +0000
1536+++ plugin/filesystem_engine/tests/r/basic_create_table.result 2010-07-30 13:27:46 +0000
1537@@ -0,0 +1,16 @@
1538+DROP TABLE IF EXISTS t1;
1539+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/_FILE_NOT_EXISTED_";
1540+ERROR HY000: Can't create table 'test.t1' (errno: 2)
1541+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_create_table.data",COL_SEPARATOR="";
1542+ERROR HY000: Unknown table engine option key/pair COL_SEPARATOR = .
1543+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_create_table.data",ROW_SEPARATOR="";
1544+ERROR HY000: Unknown table engine option key/pair ROW_SEPARATOR = .
1545+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_create_table.data";
1546+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_create_table.data";
1547+ERROR 42S01: Table 'test.t1' already exists
1548+SHOW CREATE TABLE t1;
1549+Table Create Table
1550+t1 CREATE TABLE `t1` (
1551+ `a` int DEFAULT NULL
1552+) ENGINE=FILESYSTEM FILE='../filesystem_ln/basic_create_table.data'
1553+DROP TABLE t1;
1554
1555=== added file 'plugin/filesystem_engine/tests/r/basic_delete.result'
1556--- plugin/filesystem_engine/tests/r/basic_delete.result 1970-01-01 00:00:00 +0000
1557+++ plugin/filesystem_engine/tests/r/basic_delete.result 2010-07-30 13:27:46 +0000
1558@@ -0,0 +1,22 @@
1559+DROP TABLE IF EXISTS t1;
1560+CREATE TABLE t1 (a INT, b VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_delete.data";
1561+INSERT INTO t1 VALUES (222, "bbb");
1562+INSERT INTO t1 VALUES (333, "ccc");
1563+INSERT INTO t1 VALUES (444, "ddd");
1564+INSERT INTO t1 VALUES (555, "eee");
1565+INSERT INTO t1 VALUES (666, "fff");
1566+SELECT * FROM t1;
1567+a b
1568+111 aaa
1569+222 bbb
1570+333 ccc
1571+444 ddd
1572+555 eee
1573+666 fff
1574+DELETE FROM t1 WHERE a>=444;
1575+DELETE FROM t1 WHERE b="bbb";
1576+DELETE FROM t1 WHERE a!=111;
1577+SELECT * FROM t1;
1578+a b
1579+111 aaa
1580+DROP TABLE t1;
1581
1582=== added file 'plugin/filesystem_engine/tests/r/basic_insert.result'
1583--- plugin/filesystem_engine/tests/r/basic_insert.result 1970-01-01 00:00:00 +0000
1584+++ plugin/filesystem_engine/tests/r/basic_insert.result 2010-07-30 13:27:46 +0000
1585@@ -0,0 +1,21 @@
1586+DROP TABLE IF EXISTS t1;
1587+CREATE TABLE t1 (a INT, b VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_insert.data";
1588+INSERT INTO t1 VALUES (222, "bbb");
1589+INSERT INTO t1 VALUES (333, "ccc");
1590+INSERT INTO t1 VALUES (444, "ddd");
1591+INSERT INTO t1 VALUES (555, "eee");
1592+INSERT INTO t1 VALUES (666, "fff");
1593+SELECT * FROM t1;
1594+a b
1595+111 aaa
1596+222 bbb
1597+333 ccc
1598+444 ddd
1599+555 eee
1600+666 fff
1601+DELETE FROM t1;
1602+INSERT INTO t1 VALUES (111, "aaa");
1603+SELECT * FROM t1;
1604+a b
1605+111 aaa
1606+DROP TABLE t1;
1607
1608=== added file 'plugin/filesystem_engine/tests/r/basic_select.result'
1609--- plugin/filesystem_engine/tests/r/basic_select.result 1970-01-01 00:00:00 +0000
1610+++ plugin/filesystem_engine/tests/r/basic_select.result 2010-07-30 13:27:46 +0000
1611@@ -0,0 +1,14 @@
1612+DROP TABLE IF EXISTS t1;
1613+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_select.data";
1614+SELECT * FROM t1;
1615+a
1616+999
1617+888
1618+777
1619+666
1620+555
1621+444
1622+333
1623+222
1624+111
1625+DROP TABLE t1;
1626
1627=== added file 'plugin/filesystem_engine/tests/r/basic_update.result'
1628--- plugin/filesystem_engine/tests/r/basic_update.result 1970-01-01 00:00:00 +0000
1629+++ plugin/filesystem_engine/tests/r/basic_update.result 2010-07-30 13:27:46 +0000
1630@@ -0,0 +1,15 @@
1631+DROP TABLE IF EXISTS t1;
1632+CREATE TABLE t1 (a INT, b VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_update.data";
1633+INSERT INTO t1 VALUES (222, "bbb");
1634+INSERT INTO t1 VALUES (333, "ccc");
1635+INSERT INTO t1 VALUES (444, "ddd");
1636+UPDATE t1 SET a=999 WHERE a=444;
1637+UPDATE t1 SET b="zzz" WHERE a=222;
1638+SELECT * FROM t1;
1639+a b
1640+222 zzz
1641+999 ddd
1642+111 aaa
1643+333 ccc
1644+DELETE FROM t1 WHERE a!=111;
1645+DROP TABLE t1;
1646
1647=== added file 'plugin/filesystem_engine/tests/r/multiple_update.result'
1648--- plugin/filesystem_engine/tests/r/multiple_update.result 1970-01-01 00:00:00 +0000
1649+++ plugin/filesystem_engine/tests/r/multiple_update.result 2010-07-30 13:27:46 +0000
1650@@ -0,0 +1,403 @@
1651+DROP TABLE IF EXISTS t1;
1652+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/multiple_update.data";
1653+UPDATE t1 SET a=222 WHERE a=111;
1654+UPDATE t1 SET a=111 WHERE a=222;
1655+UPDATE t1 SET a=222 WHERE a=111;
1656+UPDATE t1 SET a=111 WHERE a=222;
1657+UPDATE t1 SET a=222 WHERE a=111;
1658+UPDATE t1 SET a=111 WHERE a=222;
1659+UPDATE t1 SET a=222 WHERE a=111;
1660+UPDATE t1 SET a=111 WHERE a=222;
1661+UPDATE t1 SET a=222 WHERE a=111;
1662+UPDATE t1 SET a=111 WHERE a=222;
1663+UPDATE t1 SET a=222 WHERE a=111;
1664+UPDATE t1 SET a=111 WHERE a=222;
1665+UPDATE t1 SET a=222 WHERE a=111;
1666+UPDATE t1 SET a=111 WHERE a=222;
1667+UPDATE t1 SET a=222 WHERE a=111;
1668+UPDATE t1 SET a=111 WHERE a=222;
1669+UPDATE t1 SET a=222 WHERE a=111;
1670+UPDATE t1 SET a=111 WHERE a=222;
1671+UPDATE t1 SET a=222 WHERE a=111;
1672+UPDATE t1 SET a=111 WHERE a=222;
1673+UPDATE t1 SET a=222 WHERE a=111;
1674+UPDATE t1 SET a=111 WHERE a=222;
1675+UPDATE t1 SET a=222 WHERE a=111;
1676+UPDATE t1 SET a=111 WHERE a=222;
1677+UPDATE t1 SET a=222 WHERE a=111;
1678+UPDATE t1 SET a=111 WHERE a=222;
1679+UPDATE t1 SET a=222 WHERE a=111;
1680+UPDATE t1 SET a=111 WHERE a=222;
1681+UPDATE t1 SET a=222 WHERE a=111;
1682+UPDATE t1 SET a=111 WHERE a=222;
1683+UPDATE t1 SET a=222 WHERE a=111;
1684+UPDATE t1 SET a=111 WHERE a=222;
1685+UPDATE t1 SET a=222 WHERE a=111;
1686+UPDATE t1 SET a=111 WHERE a=222;
1687+UPDATE t1 SET a=222 WHERE a=111;
1688+UPDATE t1 SET a=111 WHERE a=222;
1689+UPDATE t1 SET a=222 WHERE a=111;
1690+UPDATE t1 SET a=111 WHERE a=222;
1691+UPDATE t1 SET a=222 WHERE a=111;
1692+UPDATE t1 SET a=111 WHERE a=222;
1693+UPDATE t1 SET a=222 WHERE a=111;
1694+UPDATE t1 SET a=111 WHERE a=222;
1695+UPDATE t1 SET a=222 WHERE a=111;
1696+UPDATE t1 SET a=111 WHERE a=222;
1697+UPDATE t1 SET a=222 WHERE a=111;
1698+UPDATE t1 SET a=111 WHERE a=222;
1699+UPDATE t1 SET a=222 WHERE a=111;
1700+UPDATE t1 SET a=111 WHERE a=222;
1701+UPDATE t1 SET a=222 WHERE a=111;
1702+UPDATE t1 SET a=111 WHERE a=222;
1703+UPDATE t1 SET a=222 WHERE a=111;
1704+UPDATE t1 SET a=111 WHERE a=222;
1705+UPDATE t1 SET a=222 WHERE a=111;
1706+UPDATE t1 SET a=111 WHERE a=222;
1707+UPDATE t1 SET a=222 WHERE a=111;
1708+UPDATE t1 SET a=111 WHERE a=222;
1709+UPDATE t1 SET a=222 WHERE a=111;
1710+UPDATE t1 SET a=111 WHERE a=222;
1711+UPDATE t1 SET a=222 WHERE a=111;
1712+UPDATE t1 SET a=111 WHERE a=222;
1713+UPDATE t1 SET a=222 WHERE a=111;
1714+UPDATE t1 SET a=111 WHERE a=222;
1715+UPDATE t1 SET a=222 WHERE a=111;
1716+UPDATE t1 SET a=111 WHERE a=222;
1717+UPDATE t1 SET a=222 WHERE a=111;
1718+UPDATE t1 SET a=111 WHERE a=222;
1719+UPDATE t1 SET a=222 WHERE a=111;
1720+UPDATE t1 SET a=111 WHERE a=222;
1721+UPDATE t1 SET a=222 WHERE a=111;
1722+UPDATE t1 SET a=111 WHERE a=222;
1723+UPDATE t1 SET a=222 WHERE a=111;
1724+UPDATE t1 SET a=111 WHERE a=222;
1725+UPDATE t1 SET a=222 WHERE a=111;
1726+UPDATE t1 SET a=111 WHERE a=222;
1727+UPDATE t1 SET a=222 WHERE a=111;
1728+UPDATE t1 SET a=111 WHERE a=222;
1729+UPDATE t1 SET a=222 WHERE a=111;
1730+UPDATE t1 SET a=111 WHERE a=222;
1731+UPDATE t1 SET a=222 WHERE a=111;
1732+UPDATE t1 SET a=111 WHERE a=222;
1733+UPDATE t1 SET a=222 WHERE a=111;
1734+UPDATE t1 SET a=111 WHERE a=222;
1735+UPDATE t1 SET a=222 WHERE a=111;
1736+UPDATE t1 SET a=111 WHERE a=222;
1737+UPDATE t1 SET a=444 WHERE a=333;
1738+UPDATE t1 SET a=333 WHERE a=444;
1739+UPDATE t1 SET a=444 WHERE a=333;
1740+UPDATE t1 SET a=333 WHERE a=444;
1741+UPDATE t1 SET a=444 WHERE a=333;
1742+UPDATE t1 SET a=333 WHERE a=444;
1743+UPDATE t1 SET a=444 WHERE a=333;
1744+UPDATE t1 SET a=333 WHERE a=444;
1745+UPDATE t1 SET a=444 WHERE a=333;
1746+UPDATE t1 SET a=333 WHERE a=444;
1747+UPDATE t1 SET a=444 WHERE a=333;
1748+UPDATE t1 SET a=333 WHERE a=444;
1749+UPDATE t1 SET a=444 WHERE a=333;
1750+UPDATE t1 SET a=333 WHERE a=444;
1751+UPDATE t1 SET a=444 WHERE a=333;
1752+UPDATE t1 SET a=333 WHERE a=444;
1753+UPDATE t1 SET a=444 WHERE a=333;
1754+UPDATE t1 SET a=333 WHERE a=444;
1755+UPDATE t1 SET a=444 WHERE a=333;
1756+UPDATE t1 SET a=333 WHERE a=444;
1757+UPDATE t1 SET a=444 WHERE a=333;
1758+UPDATE t1 SET a=333 WHERE a=444;
1759+UPDATE t1 SET a=444 WHERE a=333;
1760+UPDATE t1 SET a=333 WHERE a=444;
1761+UPDATE t1 SET a=444 WHERE a=333;
1762+UPDATE t1 SET a=333 WHERE a=444;
1763+UPDATE t1 SET a=444 WHERE a=333;
1764+UPDATE t1 SET a=333 WHERE a=444;
1765+UPDATE t1 SET a=444 WHERE a=333;
1766+UPDATE t1 SET a=333 WHERE a=444;
1767+UPDATE t1 SET a=444 WHERE a=333;
1768+UPDATE t1 SET a=333 WHERE a=444;
1769+UPDATE t1 SET a=444 WHERE a=333;
1770+UPDATE t1 SET a=333 WHERE a=444;
1771+UPDATE t1 SET a=444 WHERE a=333;
1772+UPDATE t1 SET a=333 WHERE a=444;
1773+UPDATE t1 SET a=444 WHERE a=333;
1774+UPDATE t1 SET a=333 WHERE a=444;
1775+UPDATE t1 SET a=444 WHERE a=333;
1776+UPDATE t1 SET a=333 WHERE a=444;
1777+UPDATE t1 SET a=444 WHERE a=333;
1778+UPDATE t1 SET a=333 WHERE a=444;
1779+UPDATE t1 SET a=444 WHERE a=333;
1780+UPDATE t1 SET a=333 WHERE a=444;
1781+UPDATE t1 SET a=444 WHERE a=333;
1782+UPDATE t1 SET a=333 WHERE a=444;
1783+UPDATE t1 SET a=444 WHERE a=333;
1784+UPDATE t1 SET a=333 WHERE a=444;
1785+UPDATE t1 SET a=444 WHERE a=333;
1786+UPDATE t1 SET a=333 WHERE a=444;
1787+UPDATE t1 SET a=444 WHERE a=333;
1788+UPDATE t1 SET a=333 WHERE a=444;
1789+UPDATE t1 SET a=444 WHERE a=333;
1790+UPDATE t1 SET a=333 WHERE a=444;
1791+UPDATE t1 SET a=444 WHERE a=333;
1792+UPDATE t1 SET a=333 WHERE a=444;
1793+UPDATE t1 SET a=444 WHERE a=333;
1794+UPDATE t1 SET a=333 WHERE a=444;
1795+UPDATE t1 SET a=444 WHERE a=333;
1796+UPDATE t1 SET a=333 WHERE a=444;
1797+UPDATE t1 SET a=444 WHERE a=333;
1798+UPDATE t1 SET a=333 WHERE a=444;
1799+UPDATE t1 SET a=444 WHERE a=333;
1800+UPDATE t1 SET a=333 WHERE a=444;
1801+UPDATE t1 SET a=444 WHERE a=333;
1802+UPDATE t1 SET a=333 WHERE a=444;
1803+UPDATE t1 SET a=444 WHERE a=333;
1804+UPDATE t1 SET a=333 WHERE a=444;
1805+UPDATE t1 SET a=444 WHERE a=333;
1806+UPDATE t1 SET a=333 WHERE a=444;
1807+UPDATE t1 SET a=444 WHERE a=333;
1808+UPDATE t1 SET a=333 WHERE a=444;
1809+UPDATE t1 SET a=444 WHERE a=333;
1810+UPDATE t1 SET a=333 WHERE a=444;
1811+UPDATE t1 SET a=444 WHERE a=333;
1812+UPDATE t1 SET a=333 WHERE a=444;
1813+UPDATE t1 SET a=444 WHERE a=333;
1814+UPDATE t1 SET a=333 WHERE a=444;
1815+UPDATE t1 SET a=444 WHERE a=333;
1816+UPDATE t1 SET a=333 WHERE a=444;
1817+UPDATE t1 SET a=444 WHERE a=333;
1818+UPDATE t1 SET a=333 WHERE a=444;
1819+UPDATE t1 SET a=444 WHERE a=333;
1820+UPDATE t1 SET a=333 WHERE a=444;
1821+UPDATE t1 SET a=444 WHERE a=333;
1822+UPDATE t1 SET a=333 WHERE a=444;
1823+UPDATE t1 SET a=444 WHERE a=333;
1824+UPDATE t1 SET a=333 WHERE a=444;
1825+UPDATE t1 SET a=444 WHERE a=333;
1826+UPDATE t1 SET a=333 WHERE a=444;
1827+UPDATE t1 SET a=444 WHERE a=333;
1828+UPDATE t1 SET a=333 WHERE a=444;
1829+UPDATE t1 SET a=444 WHERE a=333;
1830+UPDATE t1 SET a=333 WHERE a=444;
1831+UPDATE t1 SET a=444 WHERE a=333;
1832+UPDATE t1 SET a=333 WHERE a=444;
1833+UPDATE t1 SET a=444 WHERE a=333;
1834+UPDATE t1 SET a=333 WHERE a=444;
1835+UPDATE t1 SET a=444 WHERE a=333;
1836+UPDATE t1 SET a=333 WHERE a=444;
1837+UPDATE t1 SET a=444 WHERE a=333;
1838+UPDATE t1 SET a=333 WHERE a=444;
1839+UPDATE t1 SET a=444 WHERE a=333;
1840+UPDATE t1 SET a=333 WHERE a=444;
1841+UPDATE t1 SET a=666 WHERE a=555;
1842+UPDATE t1 SET a=555 WHERE a=666;
1843+UPDATE t1 SET a=666 WHERE a=555;
1844+UPDATE t1 SET a=555 WHERE a=666;
1845+UPDATE t1 SET a=666 WHERE a=555;
1846+UPDATE t1 SET a=555 WHERE a=666;
1847+UPDATE t1 SET a=666 WHERE a=555;
1848+UPDATE t1 SET a=555 WHERE a=666;
1849+UPDATE t1 SET a=666 WHERE a=555;
1850+UPDATE t1 SET a=555 WHERE a=666;
1851+UPDATE t1 SET a=666 WHERE a=555;
1852+UPDATE t1 SET a=555 WHERE a=666;
1853+UPDATE t1 SET a=666 WHERE a=555;
1854+UPDATE t1 SET a=555 WHERE a=666;
1855+UPDATE t1 SET a=666 WHERE a=555;
1856+UPDATE t1 SET a=555 WHERE a=666;
1857+UPDATE t1 SET a=666 WHERE a=555;
1858+UPDATE t1 SET a=555 WHERE a=666;
1859+UPDATE t1 SET a=666 WHERE a=555;
1860+UPDATE t1 SET a=555 WHERE a=666;
1861+UPDATE t1 SET a=666 WHERE a=555;
1862+UPDATE t1 SET a=555 WHERE a=666;
1863+UPDATE t1 SET a=666 WHERE a=555;
1864+UPDATE t1 SET a=555 WHERE a=666;
1865+UPDATE t1 SET a=666 WHERE a=555;
1866+UPDATE t1 SET a=555 WHERE a=666;
1867+UPDATE t1 SET a=666 WHERE a=555;
1868+UPDATE t1 SET a=555 WHERE a=666;
1869+UPDATE t1 SET a=666 WHERE a=555;
1870+UPDATE t1 SET a=555 WHERE a=666;
1871+UPDATE t1 SET a=666 WHERE a=555;
1872+UPDATE t1 SET a=555 WHERE a=666;
1873+UPDATE t1 SET a=666 WHERE a=555;
1874+UPDATE t1 SET a=555 WHERE a=666;
1875+UPDATE t1 SET a=666 WHERE a=555;
1876+UPDATE t1 SET a=555 WHERE a=666;
1877+UPDATE t1 SET a=666 WHERE a=555;
1878+UPDATE t1 SET a=555 WHERE a=666;
1879+UPDATE t1 SET a=666 WHERE a=555;
1880+UPDATE t1 SET a=555 WHERE a=666;
1881+UPDATE t1 SET a=666 WHERE a=555;
1882+UPDATE t1 SET a=555 WHERE a=666;
1883+UPDATE t1 SET a=666 WHERE a=555;
1884+UPDATE t1 SET a=555 WHERE a=666;
1885+UPDATE t1 SET a=666 WHERE a=555;
1886+UPDATE t1 SET a=555 WHERE a=666;
1887+UPDATE t1 SET a=666 WHERE a=555;
1888+UPDATE t1 SET a=555 WHERE a=666;
1889+UPDATE t1 SET a=666 WHERE a=555;
1890+UPDATE t1 SET a=555 WHERE a=666;
1891+UPDATE t1 SET a=666 WHERE a=555;
1892+UPDATE t1 SET a=555 WHERE a=666;
1893+UPDATE t1 SET a=666 WHERE a=555;
1894+UPDATE t1 SET a=555 WHERE a=666;
1895+UPDATE t1 SET a=666 WHERE a=555;
1896+UPDATE t1 SET a=555 WHERE a=666;
1897+UPDATE t1 SET a=666 WHERE a=555;
1898+UPDATE t1 SET a=555 WHERE a=666;
1899+UPDATE t1 SET a=666 WHERE a=555;
1900+UPDATE t1 SET a=555 WHERE a=666;
1901+UPDATE t1 SET a=666 WHERE a=555;
1902+UPDATE t1 SET a=555 WHERE a=666;
1903+UPDATE t1 SET a=666 WHERE a=555;
1904+UPDATE t1 SET a=555 WHERE a=666;
1905+UPDATE t1 SET a=666 WHERE a=555;
1906+UPDATE t1 SET a=555 WHERE a=666;
1907+UPDATE t1 SET a=666 WHERE a=555;
1908+UPDATE t1 SET a=555 WHERE a=666;
1909+UPDATE t1 SET a=666 WHERE a=555;
1910+UPDATE t1 SET a=555 WHERE a=666;
1911+UPDATE t1 SET a=666 WHERE a=555;
1912+UPDATE t1 SET a=555 WHERE a=666;
1913+UPDATE t1 SET a=666 WHERE a=555;
1914+UPDATE t1 SET a=555 WHERE a=666;
1915+UPDATE t1 SET a=666 WHERE a=555;
1916+UPDATE t1 SET a=555 WHERE a=666;
1917+UPDATE t1 SET a=666 WHERE a=555;
1918+UPDATE t1 SET a=555 WHERE a=666;
1919+UPDATE t1 SET a=666 WHERE a=555;
1920+UPDATE t1 SET a=555 WHERE a=666;
1921+UPDATE t1 SET a=666 WHERE a=555;
1922+UPDATE t1 SET a=555 WHERE a=666;
1923+UPDATE t1 SET a=666 WHERE a=555;
1924+UPDATE t1 SET a=555 WHERE a=666;
1925+UPDATE t1 SET a=666 WHERE a=555;
1926+UPDATE t1 SET a=555 WHERE a=666;
1927+UPDATE t1 SET a=666 WHERE a=555;
1928+UPDATE t1 SET a=555 WHERE a=666;
1929+UPDATE t1 SET a=666 WHERE a=555;
1930+UPDATE t1 SET a=555 WHERE a=666;
1931+UPDATE t1 SET a=666 WHERE a=555;
1932+UPDATE t1 SET a=555 WHERE a=666;
1933+UPDATE t1 SET a=666 WHERE a=555;
1934+UPDATE t1 SET a=555 WHERE a=666;
1935+UPDATE t1 SET a=666 WHERE a=555;
1936+UPDATE t1 SET a=555 WHERE a=666;
1937+UPDATE t1 SET a=666 WHERE a=555;
1938+UPDATE t1 SET a=555 WHERE a=666;
1939+UPDATE t1 SET a=666 WHERE a=555;
1940+UPDATE t1 SET a=555 WHERE a=666;
1941+UPDATE t1 SET a=666 WHERE a=555;
1942+UPDATE t1 SET a=555 WHERE a=666;
1943+UPDATE t1 SET a=666 WHERE a=555;
1944+UPDATE t1 SET a=555 WHERE a=666;
1945+UPDATE t1 SET a=888 WHERE a=777;
1946+UPDATE t1 SET a=777 WHERE a=888;
1947+UPDATE t1 SET a=888 WHERE a=777;
1948+UPDATE t1 SET a=777 WHERE a=888;
1949+UPDATE t1 SET a=888 WHERE a=777;
1950+UPDATE t1 SET a=777 WHERE a=888;
1951+UPDATE t1 SET a=888 WHERE a=777;
1952+UPDATE t1 SET a=777 WHERE a=888;
1953+UPDATE t1 SET a=888 WHERE a=777;
1954+UPDATE t1 SET a=777 WHERE a=888;
1955+UPDATE t1 SET a=888 WHERE a=777;
1956+UPDATE t1 SET a=777 WHERE a=888;
1957+UPDATE t1 SET a=888 WHERE a=777;
1958+UPDATE t1 SET a=777 WHERE a=888;
1959+UPDATE t1 SET a=888 WHERE a=777;
1960+UPDATE t1 SET a=777 WHERE a=888;
1961+UPDATE t1 SET a=888 WHERE a=777;
1962+UPDATE t1 SET a=777 WHERE a=888;
1963+UPDATE t1 SET a=888 WHERE a=777;
1964+UPDATE t1 SET a=777 WHERE a=888;
1965+UPDATE t1 SET a=888 WHERE a=777;
1966+UPDATE t1 SET a=777 WHERE a=888;
1967+UPDATE t1 SET a=888 WHERE a=777;
1968+UPDATE t1 SET a=777 WHERE a=888;
1969+UPDATE t1 SET a=888 WHERE a=777;
1970+UPDATE t1 SET a=777 WHERE a=888;
1971+UPDATE t1 SET a=888 WHERE a=777;
1972+UPDATE t1 SET a=777 WHERE a=888;
1973+UPDATE t1 SET a=888 WHERE a=777;
1974+UPDATE t1 SET a=777 WHERE a=888;
1975+UPDATE t1 SET a=888 WHERE a=777;
1976+UPDATE t1 SET a=777 WHERE a=888;
1977+UPDATE t1 SET a=888 WHERE a=777;
1978+UPDATE t1 SET a=777 WHERE a=888;
1979+UPDATE t1 SET a=888 WHERE a=777;
1980+UPDATE t1 SET a=777 WHERE a=888;
1981+UPDATE t1 SET a=888 WHERE a=777;
1982+UPDATE t1 SET a=777 WHERE a=888;
1983+UPDATE t1 SET a=888 WHERE a=777;
1984+UPDATE t1 SET a=777 WHERE a=888;
1985+UPDATE t1 SET a=888 WHERE a=777;
1986+UPDATE t1 SET a=777 WHERE a=888;
1987+UPDATE t1 SET a=888 WHERE a=777;
1988+UPDATE t1 SET a=777 WHERE a=888;
1989+UPDATE t1 SET a=888 WHERE a=777;
1990+UPDATE t1 SET a=777 WHERE a=888;
1991+UPDATE t1 SET a=888 WHERE a=777;
1992+UPDATE t1 SET a=777 WHERE a=888;
1993+UPDATE t1 SET a=888 WHERE a=777;
1994+UPDATE t1 SET a=777 WHERE a=888;
1995+UPDATE t1 SET a=888 WHERE a=777;
1996+UPDATE t1 SET a=777 WHERE a=888;
1997+UPDATE t1 SET a=888 WHERE a=777;
1998+UPDATE t1 SET a=777 WHERE a=888;
1999+UPDATE t1 SET a=888 WHERE a=777;
2000+UPDATE t1 SET a=777 WHERE a=888;
2001+UPDATE t1 SET a=888 WHERE a=777;
2002+UPDATE t1 SET a=777 WHERE a=888;
2003+UPDATE t1 SET a=888 WHERE a=777;
2004+UPDATE t1 SET a=777 WHERE a=888;
2005+UPDATE t1 SET a=888 WHERE a=777;
2006+UPDATE t1 SET a=777 WHERE a=888;
2007+UPDATE t1 SET a=888 WHERE a=777;
2008+UPDATE t1 SET a=777 WHERE a=888;
2009+UPDATE t1 SET a=888 WHERE a=777;
2010+UPDATE t1 SET a=777 WHERE a=888;
2011+UPDATE t1 SET a=888 WHERE a=777;
2012+UPDATE t1 SET a=777 WHERE a=888;
2013+UPDATE t1 SET a=888 WHERE a=777;
2014+UPDATE t1 SET a=777 WHERE a=888;
2015+UPDATE t1 SET a=888 WHERE a=777;
2016+UPDATE t1 SET a=777 WHERE a=888;
2017+UPDATE t1 SET a=888 WHERE a=777;
2018+UPDATE t1 SET a=777 WHERE a=888;
2019+UPDATE t1 SET a=888 WHERE a=777;
2020+UPDATE t1 SET a=777 WHERE a=888;
2021+UPDATE t1 SET a=888 WHERE a=777;
2022+UPDATE t1 SET a=777 WHERE a=888;
2023+UPDATE t1 SET a=888 WHERE a=777;
2024+UPDATE t1 SET a=777 WHERE a=888;
2025+UPDATE t1 SET a=888 WHERE a=777;
2026+UPDATE t1 SET a=777 WHERE a=888;
2027+UPDATE t1 SET a=888 WHERE a=777;
2028+UPDATE t1 SET a=777 WHERE a=888;
2029+UPDATE t1 SET a=888 WHERE a=777;
2030+UPDATE t1 SET a=777 WHERE a=888;
2031+UPDATE t1 SET a=888 WHERE a=777;
2032+UPDATE t1 SET a=777 WHERE a=888;
2033+UPDATE t1 SET a=888 WHERE a=777;
2034+UPDATE t1 SET a=777 WHERE a=888;
2035+UPDATE t1 SET a=888 WHERE a=777;
2036+UPDATE t1 SET a=777 WHERE a=888;
2037+UPDATE t1 SET a=888 WHERE a=777;
2038+UPDATE t1 SET a=777 WHERE a=888;
2039+UPDATE t1 SET a=888 WHERE a=777;
2040+UPDATE t1 SET a=777 WHERE a=888;
2041+UPDATE t1 SET a=888 WHERE a=777;
2042+UPDATE t1 SET a=777 WHERE a=888;
2043+UPDATE t1 SET a=888 WHERE a=777;
2044+UPDATE t1 SET a=777 WHERE a=888;
2045+UPDATE t1 SET a=888 WHERE a=777;
2046+UPDATE t1 SET a=777 WHERE a=888;
2047+SELECT * FROM t1 ORDER BY a;
2048+a
2049+111
2050+333
2051+555
2052+777
2053+DROP TABLE t1;
2054
2055=== added file 'plugin/filesystem_engine/tests/r/rnd_pos.result'
2056--- plugin/filesystem_engine/tests/r/rnd_pos.result 1970-01-01 00:00:00 +0000
2057+++ plugin/filesystem_engine/tests/r/rnd_pos.result 2010-07-30 13:27:46 +0000
2058@@ -0,0 +1,19 @@
2059+DROP TABLE IF EXISTS t1;
2060+CREATE TABLE t1 (
2061+aufnr VARCHAR(12) NOT NULL DEFAULT '',
2062+plnfl VARCHAR(6) NOT NULL DEFAULT '',
2063+vornr VARCHAR(4) NOT NULL DEFAULT '',
2064+xstatus_vor INT NOT NULL DEFAULT '0'
2065+) ENGINE=FILESYSTEM,FILE="../filesystem_ln/rnd_pos.data";
2066+DELETE FROM t1;
2067+INSERT INTO t1 VALUES ('40004712','000001','0010',9);
2068+INSERT INTO t1 VALUES ('40004712','000001','0020',0);
2069+UPDATE t1 SET t1.xstatus_vor = Greatest(t1.xstatus_vor,1) WHERE t1.aufnr =
2070+"40004712" AND t1.plnfl = "000001" AND t1.vornr > "0010" ORDER BY t1.vornr
2071+ASC LIMIT 1;
2072+SELECT * FROM t1;
2073+aufnr plnfl vornr xstatus_vor
2074+40004712 000001 0020 1
2075+40004712 000001 0010 9
2076+DELETE FROM t1;
2077+DROP TABLE t1;
2078
2079=== added file 'plugin/filesystem_engine/tests/r/select_big_file.result'
2080--- plugin/filesystem_engine/tests/r/select_big_file.result 1970-01-01 00:00:00 +0000
2081+++ plugin/filesystem_engine/tests/r/select_big_file.result 2010-07-30 13:27:46 +0000
2082@@ -0,0 +1,1005 @@
2083+DROP TABLE IF EXISTS t1;
2084+CREATE TABLE t1 (c1 INT, c2 DECIMAL(3, 2), c3 VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_big_file.data";
2085+SELECT * FROM t1;
2086+c1 c2 c3
2087+192 9.40 jpBjgUdnwLxojNxvoQFX
2088+618 9.60 LSkNQAZjODwYvOYUeAVb
2089+847 2.60 yphkuCaGsgbReRQTcUob
2090+814 3.25 rJDEnFNRTVftDpWPLeRa
2091+571 4.84 bjQkbVIPlNmlHpKvDBVv
2092+292 5.60 ikfinRYRKPIjJsjNXtGe
2093+736 6.34 NxSIHnLbJEndkqmwZFPF
2094+776 2.97 YhdGuHgspSDfPZfeSHDs
2095+693 2.51 IRVxHgPmpDZDzVWReFRK
2096+27 3.27 gtAvpxIwXldqKYADhkna
2097+592 5.54 CEuIPODTitAOYqEQusEv
2098+59 4.34 PJSVLGMjcRyqRdffDeMk
2099+108 4.60 HlopFPmGpvJjdmtSlcmJ
2100+183 4.57 KqHsxxrIUHTkEVHUmJUa
2101+799 0.88 iARALomncGlwqWlGDfvu
2102+34 2.60 qKUfyEozvawQfNySJoqF
2103+622 3.31 tfdGYDefcGYveIwEgIzU
2104+35 8.99 oCnDHfJLNVTcysrBRXBY
2105+765 9.17 aUQUhRRYTMbDqMpLndwe
2106+77 7.30 emYjkJPwamuIrPPbrzQQ
2107+608 1.30 GYracqTOoUAsKQyhyrTv
2108+71 9.92 wgFQfoXxyonAlQJfruiZ
2109+480 9.89 vzwhdoBgcjgADPxWfRmA
2110+996 3.74 nQggLzdKdXkFCjWBCPbj
2111+765 2.74 DPXTTBcNawKyiAgthVVh
2112+252 7.47 kSeWSMDVpMiWJQRJPcdH
2113+195 9.49 NgCBvAmiGRYvooUImjPq
2114+749 1.66 mhChOLdNCIkWwdxkAwYo
2115+925 5.90 BpfNtOtlZQzVTFCVXryN
2116+898 8.92 SExwIoHiQyUJumKmnvKg
2117+62 1.75 qhpdevbKjgqZMrgbKMEc
2118+419 8.68 zlBKEOoGGNPAQHuRWuAh
2119+538 1.50 ZgfSjbeWkAPWvQHYwteg
2120+297 7.20 vTPAUlmqQBOnBkvSitAT
2121+612 4.30 VzhSsYdmdsAmYmxaCANx
2122+485 0.26 RQxqgQpyrlLmKtwIyvAC
2123+984 8.81 RIYiiQQTMuxEPDFrTtwt
2124+275 9.39 EjyENeSSzHpKzFuFUVwh
2125+709 1.66 VHVcUOsrTBxBYwZylLSy
2126+314 3.80 kTajmgdMehDoMHBUpiIo
2127+261 3.58 HddjywgLGBnGzFSGNClc
2128+576 8.11 RrqwMWPwzKEEneiaLMJs
2129+339 3.32 hkzWfriTUKqcjHrgzgzE
2130+204 8.75 EkKdLmvJaYhbuZSXcvdC
2131+569 7.10 jOwhQZpHMCOqHxEmMdFM
2132+563 2.96 aWOcwWfOXnabektPGgKM
2133+221 6.32 EjczZetUKWHOPFKzedTk
2134+64 4.40 oLEjGHTKkVHgAzuDZWTi
2135+990 3.32 uIbcYwWgYrVFJOHcaJNl
2136+706 9.72 hRFpTOsHmnTaPWWIyNpv
2137+21 3.95 tseEKNEUwtplsFPxQABr
2138+256 1.70 uaVrtCMWUGpyndDouJpc
2139+193 3.70 wulxTHaLUJWHZncPfdyu
2140+326 6.88 ATIxHVhtJxDzCxKCkJVO
2141+532 0.88 jGxbPAFdGbIofquyrqEg
2142+970 4.47 EJsLdVXEaVPSXHqjsfPz
2143+642 3.96 nRHrrKhutsNspLrLlFPN
2144+741 0.74 gmPcoeQZQLzvPiFEJQsm
2145+548 7.10 jPUBesAPDCXOExMUDAsU
2146+691 2.21 mWujjRogVFQJaClsMeHj
2147+698 7.29 DypRHqMfdBYLWLPiyhyL
2148+748 9.81 TabdxNOFnMZGsyxSLvmV
2149+888 0.35 xWvAwZWBZnMQWUsySaHg
2150+328 1.60 JxVdEHzpSVCEEyuDRmPf
2151+781 8.15 zhdERXUSBYSqsSXiRjJs
2152+418 4.33 ymBkxrlFulEGWsHCgfFz
2153+605 7.64 uHgZctYWEUcwLmnKottg
2154+568 1.97 mMNkVHoXdCxgRgNaLkTO
2155+391 0.71 uclHEKTLUXLBLADIgSpy
2156+322 7.40 ehHcEKwmkBzunaKHRlBK
2157+735 2.72 vBQxKqICfEOcRBnOLPRr
2158+977 5.85 vxWkZBLAIOMZFBQWBPRz
2159+655 1.38 ixdZfjUlvvYrrPHmtcbb
2160+793 1.55 DLcvRJKRjKaFMMCpbLVR
2161+42 7.76 EdQOUwzQItBPmvvctVZx
2162+403 5.63 aAEmSBQirVlkRZKGuPZo
2163+694 6.25 dNNzAvBWUZubaMjhawVk
2164+96 7.60 WvCodyAPgaureBHuNSOI
2165+655 7.34 LIQWyyTFoKsgBVIlMOip
2166+749 3.26 otEImKHWdviBWMHnKnAy
2167+392 5.70 eKTgSPSaFHlBJWhUsYcQ
2168+229 3.51 RSCUAZXTpnksXIIyMNqn
2169+60 3.32 heoxppRRMqVjnwLTIkzM
2170+59 4.66 shFimshNjoBhtiyXHkeu
2171+685 4.61 WpjzucNyNnbsYMcOHjbl
2172+906 1.61 AMMYTKlHMcxrxEWzcEgl
2173+452 1.17 hvIYeVQxRVjLGcMIIPlq
2174+776 5.96 kbrrFqzVHBhfCeGRAidR
2175+171 5.30 XIwmcpjETarpXQfWeCsf
2176+889 5.18 OARTITueckClWEhGnFfG
2177+209 6.95 yuAVMcZLBZOZnuqDJXtq
2178+228 1.15 wzkFOcmpmkGvKfrfrMqJ
2179+348 1.58 CMkNbteFRyBnKcZElcZT
2180+482 1.60 XBbtwyZJSINdDKJPFBLh
2181+549 6.25 POTjzYGerRZoSBXawlMW
2182+482 0.38 cEseEtPoLnbEGCvmLSKC
2183+311 9.99 DXzdcEyOaoQdemrFiWkb
2184+978 8.49 gZjBebGdmOjoeJsgQAYx
2185+675 8.76 XRaCqXGtiKmmTccyHFpV
2186+343 4.98 THxNBaZxylAvUxgUiVfb
2187+595 8.46 ohLRcfIjnWVYOrgWProB
2188+237 5.11 HTYrsiAjtvhWzIJdLMSs
2189+197 0.66 zqTBbbgaOZcjpNRcNipQ
2190+504 7.50 aWkDGoCMpwTMccGwiSia
2191+540 7.30 jwouGMVrewbgUiQMCtKH
2192+882 7.16 xxOjEZwHEUNmrrQpdwhl
2193+853 3.92 QdOAVhabDkUuaQBLXDoE
2194+433 7.72 dZtxCYRmZcGgdbKvagop
2195+643 0.19 jIjfjbYdFXEWlXZlnlWs
2196+757 2.30 IikDjuRNvdLPttddkKjO
2197+800 9.95 HnzCoSOyDuEsvfyckmHS
2198+428 9.78 kTTmhNmpFkjVluKWHvtx
2199+189 7.70 DBeQVZMalbmhVEsgYsbq
2200+30 1.22 aKCRJXmPebvzUaQHIBHP
2201+776 7.43 SrwJlmQaJTnSyRbmAWHO
2202+603 5.23 QDUPvENiqcHWRmTfxaDe
2203+26 1.24 UolXjCmCIQiSllznooXy
2204+221 2.66 GnFWlqKKyuCdWYXkbCqt
2205+108 4.20 pAnYwmpkSwOZRgwiYVWL
2206+175 6.51 opEldPFkpCDsVSKRcZaW
2207+324 2.71 stiTcwAYdZxbxZILylHo
2208+280 5.37 ZYtykbYUBCLALVJFkirF
2209+798 2.47 xYgSFtzerVqucvqIvEGr
2210+897 3.17 gGEkYIvCrpIiQTzkJxxV
2211+62 1.25 gGOidOOuWHbezVnTEWIq
2212+620 3.00 yYdLZxIbTLUnJgQxDUmG
2213+502 3.24 gjUyXarzITiqkNUPePvL
2214+70 5.40 NPnxdxhkOfnKjzpJNsiU
2215+204 9.11 KrJvPSsEdFSqLiXuxQiA
2216+456 7.34 OXbMZUKsUSAZbOVPQIBn
2217+975 7.89 kCwlsRqUGAytpCAGcxwN
2218+929 3.66 NunymCZUGzUBfhmtWeNR
2219+991 7.49 XPVKOhSsRghDcjftqkyS
2220+437 0.51 UAXgfvYvZVyDffmqhBIS
2221+440 9.25 sXzGZDTZgJAAWgqUAQTf
2222+940 8.25 uKjfbnoyNyXCZvsERros
2223+449 0.54 DcaJRKbcNwRwJLxKLhZf
2224+673 1.64 AUnDLAhoyAhmYZnIRbhw
2225+926 3.25 PWzbZhFqMyeCMWrLvVZv
2226+807 5.77 NvfsIyaqQAkvzttOVkMv
2227+485 7.85 YOglmchMYUvpPVLrfbSJ
2228+48 6.88 bvTBWQvQKSDIeZOCWCFO
2229+175 7.96 xmAknBEqJuviUaNxpljS
2230+633 1.90 DvflcynsTEHwPBwOFKBN
2231+92 6.50 ebZCXpoUWoVynKwUFIZn
2232+498 2.13 dWSNUAKKzNRSmBIACmBE
2233+151 0.34 wGiOfpmvKhvFPZxEADbR
2234+548 0.12 HMEBWQahnDjYRbcsiBWU
2235+711 3.16 cVbbfaLumCYjanAKrohP
2236+746 3.48 dZlqLnbCyPYlFyBctmdk
2237+597 4.24 BNLzfOVkAgXHMpjcqIFq
2238+399 0.36 qfprAaaoVnGgdczINYFm
2239+546 9.43 iTGNNVCPUrwkYbbadyKW
2240+594 9.62 YkiepbdHTqBOGMaVutQh
2241+371 7.81 MYLwxhHhjfVqSrozPlvR
2242+309 3.56 NRMiGLKDjAYmMIiwzJhM
2243+297 8.98 KEZjoQOGBHyZptWvcShi
2244+119 4.75 vIlqzrkTNdmwHVyxLzCG
2245+791 9.86 cBCiAmKLMiJyWzfyOrQb
2246+499 4.54 yuIpPSIGjBKmmpjgtsAS
2247+601 6.95 qvikjiMrezxQIQnZYKqx
2248+171 6.61 IrNSAEhVPmGuopQhsiGe
2249+137 7.68 RbEbHNMcCFyHHtgxbwru
2250+470 1.58 DJzSuYlqXdvjJMPGwvAD
2251+981 1.36 YXthDiWzZKmTFaVHXIvM
2252+449 6.95 NBzYrdifSJvroerfjCrx
2253+816 7.46 bGqzWGlbYVCsmBQnqeFn
2254+892 1.57 lKPDCgUjWXGrXoTmqofn
2255+796 0.38 hhnhhuUcZYFSXodkYozq
2256+849 9.65 pQkmTlynZGroEMhQqeFV
2257+978 8.22 tSRSfFdnvYJzIUCXvffS
2258+817 1.30 ivnVtbbzIWzRdHWrrFNS
2259+92 4.87 nLVXqazvXeIuRYKpgEVw
2260+543 7.65 ytoZORdbOanKCaJnEoWx
2261+3 5.96 YHGQRnNBeHPFqScDQIXb
2262+644 7.62 auOOpsagsSMpXIxvNcuT
2263+177 6.19 kKckdAjWPaeNfbFeylcA
2264+253 6.34 xBuVMpdAWoJLXHohZQaj
2265+54 2.55 ckBdUuXMWvOmUMnjtQnY
2266+240 9.70 QxRyBbBeFehndsCGDzQg
2267+313 5.29 gfQIQiJDpJxbASsPeaYn
2268+735 1.67 olIKdcfamVrSuTFQFMIc
2269+103 8.69 zvQtXyFOIMryLyDXUehS
2270+295 6.40 nyEPnztubhxQBSMOqvfF
2271+502 7.19 qAEFhiNyVNNQaUYRNUEg
2272+513 7.34 wwAXuDbQBjFVZjsbZqNK
2273+848 0.57 xguKpJPjMiZMTsymbcPo
2274+751 5.94 jTiBWgYHnXNkzmlXmHuq
2275+836 9.58 CnPTfaxPvUCCdRMymioa
2276+455 2.69 pejDtFBUxPIxKKhMJUWs
2277+861 0.22 rnWsdSZXNAuPccpGfjNU
2278+26 7.61 ZzRzeEKyIOVTkWCYSYZF
2279+54 0.65 gtXbYWuFVKvZjnCrJUAB
2280+779 2.75 guVKPZxSmxGYMXfypSFK
2281+159 3.93 AKpUxqRGiThzoxQQRROp
2282+917 6.87 IGnKppqKLyvMleSpohGY
2283+316 0.00 FMzIEKNXGeWgHmytBqwk
2284+428 1.45 WnBnkAegeZkxeqCwmUJj
2285+290 5.50 nWuIHEhhpvGEQqXIFyLO
2286+948 9.94 UivnZfMKAibZsjCRCXiW
2287+590 1.20 FvVXEdLxGPhErzVOXwWO
2288+303 0.35 syxsPFTZcZfqsxSQuHOK
2289+931 7.46 AXzLovMIsDZVnFSoLnzf
2290+737 6.62 YfnLlPXRMQxAyZCUaJPP
2291+259 3.96 dxPNIzgfZOKZFFdzLQJj
2292+544 4.27 JjpUuBRXnPbNrMLaFoAU
2293+807 6.64 hFSLCBZZmDoOzFjQnOMa
2294+437 9.21 slnNrajpGjHmrPEDjyLv
2295+487 3.44 zgBROXScbWoDFYwDrZZq
2296+649 1.22 MyVRplRDvwckcEtcnSwL
2297+755 5.11 KUQyMRwRuXVsnuxApTBB
2298+751 6.26 MVbpeNaiKKOWYzsApugb
2299+871 9.90 RHqbdbSECFpzqKBBQXDY
2300+706 9.40 QMuhdWuocukxUQvtLeHA
2301+941 7.35 bffBwXuTwyizVNyVlNAP
2302+178 5.53 AGhDovrxSzyBBTylixsz
2303+667 9.52 dIodUNdnPEOaluUaaqQq
2304+127 0.79 nNrfQxaHaJeXunrbldTW
2305+451 9.25 ujihJXZfnOueOdvPXSJO
2306+620 5.83 cooShIhtOkOBrKudjGaR
2307+240 8.31 oecWoiuhzPzuwOgXeyQG
2308+38 0.67 jrvinjtyLPPcfnvttKKW
2309+271 3.74 DbOuyotNTMTEexjZdMHE
2310+313 1.73 teXwnvclJHkCiAhJhLlu
2311+321 1.54 cRUfRNHbDdoVhZoqdIOj
2312+621 6.16 YiNFPRBJVUgsnzLRuloF
2313+369 1.43 slqjryaHUVDJhgwJASXl
2314+945 2.70 sLcNjEjGvzWDmWBLiaLh
2315+354 7.41 fudoFUiNtacDMhXApenm
2316+189 5.62 xSZfGwrdPjmoQRhmYDcX
2317+234 6.20 qMkPxrvYITMBVEYhznpF
2318+749 2.32 AVoZwcBZMLgLWiOHTflR
2319+866 0.61 nKZVmVoOMhxAFntgqFkT
2320+785 3.48 MPDRmXTvUXuqqjESKtSN
2321+608 9.92 ZzRTvbcwyQfIwuMzBXfs
2322+807 2.25 fUjmfEGNWHIQGrPaXEye
2323+720 1.56 NVAaIhYeHhneuljfohyp
2324+683 3.12 UVKsAEIpVJmTfhURNwgW
2325+659 5.41 GYkNtAnHDwqmxwffTDoe
2326+656 6.69 wjLBrxtwmuRaJtMMoldU
2327+900 5.13 ScAgZTpdXBxbeeJwGXDN
2328+489 7.96 IbNiaXivMkITJhoTTWPk
2329+437 0.20 vtXWIRaTgkFBnBfPLGFu
2330+535 2.22 NakPyqNTyeqRLRvNbmed
2331+761 6.20 sBwOoEdEGlNoMUqdlKtb
2332+780 5.62 OublVKVZwhTLAoXxPnXX
2333+529 3.73 LCmyRbilZVyeBNEoSNyw
2334+502 6.70 RYvkcCNTBvoUrpZBRDPA
2335+487 0.78 qnVDgcFTuKhBrngvWFYF
2336+579 4.53 kRHWQhoFFBhNVlPBjxXH
2337+797 1.55 ZuwmgmLGVdvarBRaprWV
2338+861 4.78 FMhjmagLzxhTmZrnbibL
2339+652 2.32 InRhNqlnTiHTcrVmBMwE
2340+870 1.41 lFhMOGAaleKyYUToNejF
2341+246 6.30 LstfbtAFDQCWSdIEOuiL
2342+742 4.72 RZmyfVBggxHDeuskAIeO
2343+888 6.66 CJWAxISMCUKavFGIRyIi
2344+377 1.96 xVqkyBNLYUkMYdwpAgEB
2345+347 0.16 MiOXVOagqkLSTzYIeSra
2346+873 9.93 QwyZZFOkUHXlvqmajTuU
2347+866 0.45 QfynYftmOdOhNYZABCfo
2348+720 0.70 XjNbriAhLUwcRijUzwZa
2349+21 8.90 cEFeZfJHGEEYHGDGDDzt
2350+842 5.53 NQrkWAnXfNjmcPapfnBZ
2351+395 8.26 WoObGTrswUXVocMpWzam
2352+805 7.34 wkCPGHHoroEkDDGXzcuo
2353+945 2.29 xgJvJcfIQmKDuaZpzqIY
2354+715 5.65 xzzVjlborTJLevAptgeT
2355+714 7.96 FxxJYhazQxFvKSlXXfLO
2356+625 8.31 yutfvCmOfLowqxqjuMUK
2357+573 9.29 EEUtQpLEUcJMBiYBGsXx
2358+363 8.80 ToacrTKslmPSEuRQCJwv
2359+889 2.66 yklInCiTlxnHMHlEXDQl
2360+628 5.17 UTEagZGvGZfHOlDuXUKH
2361+643 3.23 jcCJJeRumgaDFqcosgLJ
2362+646 5.12 vVnIjqpMfSHLitIsfqMg
2363+886 0.38 stfEWcbuWNitgLtTtigQ
2364+363 5.93 OCMMpnvtEjbFuLgAEtkU
2365+236 2.89 txucVxohWxrnUUDEMZwk
2366+70 9.75 DXNLUUtrYxmkReokvALc
2367+572 5.71 XeVYLrueWGiQGebWUwkW
2368+434 2.10 xMTykKCEZnUmYNNOgSih
2369+444 0.47 axDOmwdUffipyarAtIJu
2370+454 8.23 lYuKfhOKtkPcDyaZdbmw
2371+740 9.54 kUFtOgiBRUPnhLwwrgUW
2372+209 2.41 JTgAfdoVfSFjTGutjAvH
2373+899 3.19 eTGGqVkoDcqtTnkahxHj
2374+829 3.80 OvkAywzARPbfqTPHMEXz
2375+685 3.22 lmFitDYHTZambPCWjllF
2376+578 7.21 MMpgfEfCkQHJtagEhoUx
2377+220 3.80 JEHCPrJeyxXLhdtXGWcu
2378+947 6.28 dTtJKhgwcBnipuWYxYEv
2379+54 8.83 CHsmJurywDSXAsymAqOw
2380+12 8.38 XISWvYQVeZocSmIrQNyj
2381+577 0.34 SSjCteOgDkQPwJofWEEU
2382+771 3.37 LSgNuOQFoetwCcCDtIxk
2383+656 2.14 adRsvhoZHvTfLTyLqvRF
2384+896 7.34 CyXBvEQSXNPNejYrjWOg
2385+980 0.14 VClbFxOwvvhMxJiSoHgv
2386+454 8.82 UGbZCbTYmxYfaNRvxmiZ
2387+892 1.56 WQdRYorTGjnXFWlvrxgX
2388+649 8.77 BuREkjbviHzhtVvaMswT
2389+299 2.92 WMbmvpVWVrbMQNvnVuYb
2390+866 5.15 ttVBDkjMAMBdCgbkTMTp
2391+771 7.37 bWSUWyErakTnbDULvkRJ
2392+748 8.59 LiodrknBJVVqOYTslJRE
2393+337 1.88 GbplVMxejUlPfbxiMhmj
2394+532 8.10 yeraTbSrtHHbyHnLnjvJ
2395+860 1.35 qfXroMPpihOyFNlbjdRa
2396+746 5.88 xwarOKMtEUqPGIDuWVbW
2397+572 2.34 ysIFbYbpyVngDNdscNzE
2398+693 5.56 sgWzpVDsrPedZaiuBvan
2399+736 8.30 JAGQGSmeBgmMrRxLLzJi
2400+411 6.69 eUMQMFlztnCXJnMhkXXV
2401+605 8.43 mDmgFeyVznUDAlSEFmzX
2402+882 0.77 gUJmprHdPOvzvQNKNDdV
2403+136 0.35 vyoNduORlklNvHjZtoCv
2404+763 9.96 RaJzaXnEfOYnReWFoyIY
2405+361 4.29 klsePKOxmWGBTXZaDtPi
2406+281 4.27 LqhRhVMFCxzmbvcNtOrq
2407+460 4.46 sSSwfpHvdoVutckHazUt
2408+621 0.40 AJfWbYHkYustCMIsEvFw
2409+44 1.49 ymzIqzGZPxTUiiAotMhC
2410+532 8.40 DiZFMlbWozhtkbnBpsMe
2411+974 6.36 BqPaSfOGYlmrWSDuzOVz
2412+257 2.98 vUprKOpULQnKAulAZpGb
2413+290 8.88 kXjaEAVNSfrjqyXuNhtF
2414+478 4.48 kweRAIdsBQtzcYjPpRXl
2415+432 8.19 ASvAPuQuqRIZDmvTJRBd
2416+12 1.74 WWIGjzlRZxbeZRmhdnhi
2417+944 5.85 mdUlAggcHyZWubrvhJwR
2418+724 5.29 ryHSuZWpITFwcyKWPoDa
2419+813 6.86 NhLEYhuQTTCVMKBNyEED
2420+568 8.99 FZiCwFYLNaMyrFxhqZJd
2421+560 8.64 eZOVPGpmTmfmMrdUCcLD
2422+279 7.74 ZfclbaBlhQmVvtPYOzWW
2423+151 2.48 dyBMcKxXNQkYNsmuSJtV
2424+281 1.45 FNQFBFHaMuooWYmgdSkw
2425+945 6.30 DZzoAHcKvhNrDendccIk
2426+209 2.52 nnBfHEVwRbVHQcMZWUjG
2427+770 5.97 GtdxrRhaMZKOHSepPwsv
2428+163 8.89 QyvjtJrpZpUjNUvrJeXB
2429+325 7.43 PfKbnXWnNDidiZWNpWft
2430+554 1.98 nRDXTUeiHSTwEjdZfMxn
2431+372 3.16 FttOhHsHiZgZJLqfVdBN
2432+931 0.83 fFCQoWnDdpeZlwbuwwWV
2433+382 9.70 mXsRKrHNpGMwoZRhJTuI
2434+696 0.70 OVFQBbDOjwmcGPvdRIqX
2435+810 3.15 KMiKawUCvImQAFLHVGYR
2436+23 4.53 UAqVGWUfVuoMZjVeknNY
2437+406 1.74 WNRrxNYESOaonJgVqBgc
2438+343 8.34 omnvEWQmSVklsJJpSqYw
2439+966 5.48 AZzbEwxGVItDLBMoLHfE
2440+448 4.23 BGBsISXvvxYCfNEzBYbG
2441+495 7.68 nzvLWgwuUYrskJiTarex
2442+338 9.50 HYrPfBaIEURguPWLwpGW
2443+562 5.77 OwDDTnSgGEGanAAFpIuk
2444+178 8.55 hgXeTKuJkPwUItJeaHuR
2445+234 2.53 SvVBGkFxRXqzXZQtPeFk
2446+566 7.91 UgtIXlzbAcDRyTuHYGyl
2447+165 5.13 RIRuMPSDAgODegLuHYtM
2448+473 0.59 VNahlMhbyNTpjbVspVuU
2449+918 4.68 PnKFhrrZFjBkIXpqAtyR
2450+126 1.60 JBcuGkhFlkIFUgIkjAvB
2451+4 5.90 AMnTFilyyQiOLxBvkZGA
2452+975 6.72 MzkWUUWzdLDtwISzNgpX
2453+430 7.59 FLYVcOWRCbIBztawYsSW
2454+86 6.71 JtEXDfmDuQFtPBOHgPNE
2455+224 2.70 EJowYiFEYrKVvAwSEpVG
2456+950 8.60 ZkRxwBNwbqVeXodSLrJb
2457+348 7.65 lFqwuSEruKeNzLGzWalK
2458+837 4.57 nlDzGGHykYZcqwTFnomR
2459+746 7.66 rDVPgehFbohxROiTjaGy
2460+603 9.53 oOdIjEKxmvfBjFuguiMZ
2461+591 6.11 YOWpmqtuRQoFLnLhyasJ
2462+73 2.77 pVJVLkRnwksBrTvALmrH
2463+339 7.10 GTOdZJxVlKKHEtBnoGrQ
2464+698 2.42 twClrIepXprGksUrGTbj
2465+821 8.92 LWAgApBUUiuszjRZbLcb
2466+227 9.11 JdDbFLSDUsBauYAciSrD
2467+255 9.56 pDjgONKekgxqTgdzTFcH
2468+794 4.66 iKLpSuRcGZuCfRHWBoDR
2469+235 3.36 lMFtQpAHvaqPSWcZpoas
2470+769 8.99 YdiTJnKaswltGNLuxvDQ
2471+430 0.73 arcmAZXkpyeotDfRyYPA
2472+788 9.17 okKxOdygEqXUeqsGcwRe
2473+563 0.93 nDnKCzxXjgVPctzeQOKg
2474+3 4.75 FzlYLMdjQTyTXLWKKNCB
2475+483 3.20 YixdiktWavAqoojjEtWf
2476+444 7.33 dBAJxPrDKUSGLgxAfVQv
2477+869 4.40 HltYNXLlSwXiwVpgBmDz
2478+725 9.63 ezuFHPAzKPfSKgYOBPFZ
2479+164 4.70 mWppbTXlNcvIAULGoktj
2480+200 1.51 GtTkJwsgvCnCuzqChotT
2481+942 3.36 NrdCmmzcntFdodBhfzsH
2482+736 0.20 URmRulmBtZYvTMvAwLBm
2483+0 6.90 wCpVrSqORejfCTisIlxk
2484+701 9.62 WjwEVffstqMHgMvAXiWe
2485+834 0.44 tmogwQMMcOBywnIQamVd
2486+819 9.50 ujtmbAoyYWcxaKBtsWIr
2487+957 2.43 yuNsZDnTUvYBsbnjKEai
2488+807 4.23 TdnQqmeRbziOXCKftSEH
2489+521 5.90 ElpNMUTDRUlyzTjcbstl
2490+314 8.14 pPsTWQuRUENWAWycvMos
2491+217 7.62 uYTHPCMyHacNbGIJdjlD
2492+626 7.86 KVvLVNeNllXwUkmQeIaV
2493+490 1.41 GLQixhqPsUIKwLQSLTBy
2494+838 8.25 lVUNCiPtoyRpFwJyrmyP
2495+607 9.20 FatUNtpyajGldFMawXEa
2496+162 2.36 unqFMicqtBhMNpoZoqQq
2497+310 1.49 CcJFouEtrrblvSeFCLkm
2498+10 5.22 aTuLxAJSrVZRqJkNZHry
2499+127 7.73 rzJYhFwSafZwVSXWBdLG
2500+750 8.40 VKcXOyaqczUEOqgTwxrf
2501+307 5.18 KNvOTEPzEjNCgASnslnP
2502+452 9.16 ubOLrsUNayFtfJzwSNae
2503+788 5.20 urcAAWBFuQVZqzzaAhwz
2504+86 2.42 WfXeFiKDcPblptymlSjM
2505+657 9.49 tTTGfzqPTLLoPvTksCAd
2506+362 3.98 IAEVbnwGSPOmyvJIlmTL
2507+129 9.34 XRmXHyjGvUjRyZuvsZDf
2508+787 9.60 GRcxDMxOiDkylniIDXiy
2509+919 0.23 XJDLPHpwZxjzmcXsKRUe
2510+624 5.54 abCXNSNiRDqhyJJqcCyQ
2511+67 2.33 cTDSPwJrthShnetFjxti
2512+838 2.89 SuqGHYfiuKNCggiRRqSh
2513+373 9.61 HFPFxDOHUvtAvJfvfMay
2514+559 1.85 JblTgGdfwEzNVIHBbdzy
2515+983 6.61 apUPvuSZDqrmzHQjrtzl
2516+850 8.30 GwOZbyHoxejRduSlSpiT
2517+955 3.90 aoQwDfqIblLIVwSqTGDN
2518+419 5.50 yXsNboLdXkWWfmhqDKIA
2519+881 4.18 FbagsovifdcFUqrkILOA
2520+97 5.25 FZyiaHPwrezjYNAArPfy
2521+161 0.11 zPoinwsgdRxXAyuVdDNJ
2522+241 7.84 LOLLKqdqpzfyWcdLXHKT
2523+824 0.24 doaLLQoyfHFQsTZqxyBx
2524+217 4.95 XXgktdeMhFEyeJwOebKQ
2525+150 6.39 JJmsIVQXoWpgfYjCxSaa
2526+508 1.75 GuwcWaoNaEZkQmTTAxeN
2527+108 2.34 IhNbBDnVirbjzMXzRevl
2528+595 7.66 SsUgYEgGeoyeplTRwzCo
2529+770 6.80 UfqwSLLnBKFaXlLKKrxT
2530+233 9.72 UnZMYddFVcZPPeXAImUS
2531+702 5.33 flGTAxeTnCqadOQtSnrW
2532+321 3.46 FdeSJuoilQFEnvPEeUTK
2533+414 5.32 ZdcWNHVDeChZApGIwZVj
2534+286 0.13 IsBLSOqofXnTkmdlYAje
2535+12 1.14 GWBGjxElgTtdyymPrYqL
2536+762 4.79 zKDtccjjTIefbRwTeojR
2537+640 2.33 bCtakLuWwVeywsKqrLdP
2538+872 0.61 TPznbeuhfEdJISxzOjjN
2539+736 0.72 huQFpeDjvjzdKYjPrCbO
2540+340 9.90 sXEvHgUlIxtFtIklyEUl
2541+730 5.89 clEIgBdirtYkgXsuryAH
2542+411 6.86 uBRGAuqkEBLQGWsDiUKl
2543+917 3.65 zZknJIJdXSlUCORrncWV
2544+190 6.28 yYSFfGMqzOuOokGoHvHu
2545+39 6.58 JCjrrHoXgELebNLFjOcS
2546+454 5.89 YpacUspejlbNMtmUbOpv
2547+749 7.80 EKJFAjLpGKeNbGtwsNil
2548+640 4.50 oBZwZUdLHdzbrGEcvxyI
2549+430 2.00 NTgyKmzIGwJfLXBWkRQt
2550+505 7.89 fGMbDIHOiZdxUVNISXXw
2551+880 2.19 ljKmhqeIjzljvsvemwZL
2552+430 5.46 RyoGyMzLxknNVczgnAot
2553+80 6.97 WWJrEgNboEpLkhuYHzvo
2554+729 2.35 oKFMPUHsXnpPWrWGAFfz
2555+644 0.79 ADmynCvscyBJsXmOCgoB
2556+20 0.93 LjrarLhooIjmHBrCWsbS
2557+749 2.32 QcWpVgStgSaohrEVMKUR
2558+904 4.23 vEptXOoXtCLyniMOtAYC
2559+397 9.42 FIiisBxhBecdrqtfjJSW
2560+115 8.47 ZiBMZVuaqFqhCtgoWuVF
2561+160 8.86 bYffCeoGSiiCNuTMagYg
2562+311 1.70 QtTIiQVFwrXBxYOFxTyE
2563+944 1.88 TEurBDMzyTJrDGCAzWBU
2564+782 6.70 bPPKaOQSwvtNKPETlBmo
2565+15 0.29 qgapCHoTDCoeoDkNuZbw
2566+770 1.85 qoRhigPWcPpYFqIJfzCH
2567+853 4.29 FouHQmvyPoXebZDtiByS
2568+739 5.23 lIscLaypkgzMmefRjgNH
2569+666 7.40 sAoneIUBaIXmCbdwomrP
2570+532 8.47 XlbTgxmdnBwwLFuSxCik
2571+603 7.76 gQooOPqPyORAlENfABgD
2572+74 8.50 UZhRAZpWgrvTOSvUpiFA
2573+174 8.17 lBJQcLsPjBPhwePTNBel
2574+151 6.46 AqAFTgnrVSZlatBNOYfh
2575+862 8.84 KxySyhemIiOwmAkDfWkp
2576+926 7.94 UIxlLySbnGwxGvUYdhdP
2577+786 3.16 JZDAyjGEjJcxlCnxxzzn
2578+229 7.60 zoYamVISryvfqUDFfets
2579+160 7.10 VmcKltBNFmsMKoXyCzCi
2580+39 4.53 PfKbQxoANxKZtBkeMHOq
2581+616 8.23 ogxAmPaHduqwtxTvLrjk
2582+511 6.63 klLlFnJIdDpvtHeeSdHW
2583+171 8.96 YdgLViqAdvzywmyBSiMm
2584+871 9.65 TExnBkPUoWKGfzZDpoyi
2585+113 3.14 OtgZXsfcBvLCdzMxBYst
2586+396 1.14 UmBYWTMYrAhprBqPAqAF
2587+977 9.77 gLPxyWjqzcJGhGODLFse
2588+919 1.10 twRSubVFtafDSEVnYrVt
2589+662 7.33 OeGjbkibAqrccNifLmrx
2590+754 6.44 TaUkvWHmNczbpEEwffUM
2591+722 7.40 eZdyfkMYvkGpHyvfwlUh
2592+460 5.90 iZhEJwWAZQnqSBYqiICd
2593+496 4.87 kwbzPhmKesfqoDjkjfBC
2594+181 2.50 jqILbPIsfiEPCMtAtfiq
2595+897 7.13 SlAqOFhFQXfQblbPzbrM
2596+348 4.81 hDQlBgznFGAcQVeCaFtd
2597+187 7.43 EYMObWOrWRDKgRNMsSzo
2598+934 5.43 rYwDFXPEdEqJOwDxxTjX
2599+181 5.37 ECwQivqQCZVrRtvqCAKV
2600+769 8.80 nIbSAyDSZteIKkfukVZl
2601+919 4.76 rvmAqHUPJvKnrpxmAPMj
2602+705 9.20 vBilNKhDnCkAcDXhCLDH
2603+447 6.53 xahXLjLkXvnplveQdgbP
2604+332 8.46 wdwZYxZtewyydyLnRyik
2605+512 3.65 OPPVCcCgOXtQDXVeWVTU
2606+973 2.51 zrvAepVJkFxAAXlsgNml
2607+316 9.48 ucywvQCUpuoKaAoIMpWx
2608+980 4.36 HySwAocfdnHmbLpvGIRj
2609+266 5.85 TeQhygiPHCPGrsyqaQnH
2610+685 2.46 gWWavAEzAOaWquajoWKT
2611+820 3.38 EUtmZqDBMGjGUXnWeBMA
2612+300 6.57 UbAkWmCyEYqTSTLLVrTM
2613+503 8.23 cQRgeVNqxhammMuGfggI
2614+923 9.27 ZNbFicrbGJdPtfzencEA
2615+804 9.84 dZpWhBdTnFwcZDSkveSO
2616+386 8.23 kbQuVoFbDQEIBGecNejk
2617+53 0.83 ntAZekjoyZSqwnWPzthC
2618+819 2.74 TASFSozJXEFyRkquhrrj
2619+563 8.68 OfDoFXKcZtHtKjhnzCyP
2620+489 5.30 lwNuDiWhTNKYnXKcuDLR
2621+702 0.74 vbSuZeATRsTuGXIupEyU
2622+80 7.62 ydaNjWFvVRZRgIrsORIJ
2623+901 8.22 jOqKRBjSdXOmpobcDjWl
2624+169 3.10 IYjwnptZZSjoPhUSUyVF
2625+331 4.25 RSObaoHCDcdNnWYEJVGc
2626+75 1.63 TvgvGbheutcwdUBmzcam
2627+574 7.71 RUfWWmrCRIaxCivQEzzg
2628+513 6.44 EiDrvBLShPrLnwyPoyrb
2629+160 6.79 RglYVbXSqKCrvVpkFKHh
2630+351 6.89 CwwwSvlzlvMgXfYaDGau
2631+512 8.94 eCkWDrCOelfpcueTQWMr
2632+692 3.55 EFhmVNZtGEOmmhgQNYgI
2633+488 7.51 xGvKtSSUPuJaeigKpzvr
2634+338 9.92 VaCHRkSPzojoiApMDYef
2635+826 7.59 jeyncSDvPHCSbHaPgaur
2636+367 3.76 XexiyFcTilYHgdJwEvab
2637+16 5.91 DTyxoowjIiXQgEMpLDhh
2638+298 4.77 nNdsGAuXzGeFXlRdzfSV
2639+931 0.41 oNRWNSAATghjFvQERFfD
2640+694 8.77 LEWMAidjZMhzCkzkEEpN
2641+6 2.74 lkeKVOFnZKuzKMFigAgg
2642+454 6.11 BLrUMfsOwJddHxGYtKoT
2643+477 2.99 BqqfjApFWBCNNMJlIifv
2644+267 4.10 uxxRmaiwESVjKCctPBvJ
2645+295 6.57 iCketfXTFRQBFPFfdbOX
2646+75 0.95 lOpdYXlNpNgdmMXQCGDN
2647+412 6.19 HcrSAAgWBnZLJeshnKcV
2648+579 6.79 sjVJwgNuNUDfkVFyrpSm
2649+386 5.66 upxIpdrfyjCtwCfXrqJy
2650+47 6.00 aPPWeJCJUIXtpKnmeqKf
2651+210 6.53 ERoRPgpUERSygdnrEOHs
2652+885 1.94 tlcNciWFDLllMpIsyuKn
2653+673 7.77 qLAUxdDaWobWjvYicMvs
2654+48 6.50 qnYGfEnNpDGsOLNvHrwU
2655+472 8.12 vCuXhwRzInctwjnRnfTU
2656+154 4.83 WmduMrHPMUueVLIxzLxT
2657+784 8.39 MYMhNkmYCXykAOpFyEFt
2658+73 3.29 WdvCQNsFYhylbDoKQZni
2659+992 6.46 FHUQMIWGcgMdbWfJqdAL
2660+437 2.43 GvcquKiBgNVMeLyywtlE
2661+487 0.77 cRPvIzDsXqZoPohdlIzN
2662+354 4.44 aFjWeTulcAiCsdwZnQjI
2663+64 6.29 tiekZPtZugCJnyxyRpNl
2664+536 0.57 AfcyCWoZVTuzrtAgdxXh
2665+609 7.86 sdXQFHXFGfkFkgfXxXOg
2666+295 7.15 mnofxohdUqozGmBnrbbd
2667+207 8.40 uFsscAmoswwURsTtLkuM
2668+357 2.98 WVpOIEdZqaRPlnejIYSX
2669+532 0.52 QPsHmLcufykATBwljQDG
2670+143 5.20 xlvUXrBxAXjoUDoDQztI
2671+225 9.57 XRBJUxoDzSQzUJVCASHF
2672+681 1.41 NkxBrKHtmLChJKjxseaH
2673+840 8.29 abxkARdGIMiQYBtCXseY
2674+468 4.56 EDEADRvbXJynTSOOXzOl
2675+568 4.14 ymvWEObBwkPqeYydDTCm
2676+755 4.46 uZYxNpPHciRCUeVneiTA
2677+71 4.50 RFaaMcAElRINKgYHgxNx
2678+843 9.18 NVYzQLfutveUNBzQunHp
2679+711 9.65 YyjrXkawAYSkYBUeAixA
2680+718 5.46 GvADhdPByAJActNNZGyJ
2681+647 0.69 VFjyLHWobDXVabQSEVZi
2682+0 1.55 VCGISunAnpxINgKqeNUg
2683+227 6.24 ZZlhmwmbQfweHnPChDkm
2684+430 5.14 vDZeUhlsyUtCVjockEeL
2685+852 4.59 rIOJLoHsarmdyxjoAzud
2686+49 2.30 MndlmeetVfnqIHpXtiab
2687+587 0.42 kbZCxqiIShmfatrYBgUH
2688+509 4.72 aIxjRHDITEwXHscDFXfZ
2689+545 8.92 gpkRZjSEygzWRvPBrMfB
2690+366 7.57 kpdxbBuMBLEFgTtsmwGZ
2691+134 5.37 vNfcwTTwpLFMOFjUmeJA
2692+258 0.74 RDLDYZpgVevDyKugoBJy
2693+64 1.55 jGvvzOTgUiDsKgjgvwhr
2694+325 1.54 OfmXRoBAajlYUDKHPnMD
2695+527 0.76 kiWWchRlmzhFqtJDxQin
2696+106 7.74 SvJvpoNRylNrTUBNcmtH
2697+705 6.77 ajSvfwpJXdiqtEBXzZiP
2698+551 3.54 DKfAfKZmiacZVkljJoYg
2699+897 8.36 fUfcunfweNXmdfMLzHpF
2700+261 9.22 BskeJbnXXSxQFUnPoGpO
2701+720 4.19 yriRxVSSBrHnZhFqctJq
2702+367 8.37 bIzpQFvBVfSdNcbksXlw
2703+922 5.41 KZhPxWAJhMSYPSfNeHbF
2704+612 3.84 qJNgIzklSoKaWceUWvvL
2705+7 2.79 PlbVQComhFXxTWGsYUUE
2706+799 1.10 jiAgQwCoXsgiQmukYzRp
2707+336 2.34 WcVUtAREjfpKxYwjpfFX
2708+219 4.91 EzQLsudoINcHrzDUjouc
2709+236 4.76 IuzIkcLKSedivWijHnRP
2710+392 9.38 TGsTUbNLaufnnHOVmQvQ
2711+371 6.52 oipxGWnTdpOabCTkWLUm
2712+788 7.33 stkTdrbdOcZLLiftXjMv
2713+230 4.98 kzrYdCpZxhyaiIRFSRsd
2714+183 9.15 SrmkkApzWrZxOTGuszoK
2715+964 4.34 WXQfamXYCutjEmTuEbho
2716+891 6.89 NQCFqHIDzyPuTxjLJHOV
2717+763 0.93 utabDJMskmdfNWcDyQXC
2718+714 0.60 OqZwntqfOyrhRfiMUpKL
2719+657 5.88 gEmQxzOtYkDuECqXwuLG
2720+942 9.14 kVpbzwwYMPbJniQzjgFk
2721+24 7.18 UbtsqaMofOCciHImDhqg
2722+471 8.23 enrlpkzbOZIvjwUXTmlS
2723+205 9.23 ClJQkfcHrTYekEEsPsaJ
2724+939 4.57 zwQSrehzczpbkThuQfPU
2725+312 2.20 poOeFKDgxqDxvrJtaluq
2726+791 1.27 VUWWFIxKbOKCmbjsdomr
2727+926 6.91 oMxAeQFmkErJgikTBhIy
2728+197 8.95 qmnpZlDiNsWHgcTEeIkJ
2729+903 0.80 TzWlyotfDJQcsDURTRAX
2730+666 9.50 gNfRsmMniOzFhZejwtDB
2731+821 1.77 KPXLvXfDQfcXXrOsZcXP
2732+284 5.33 blACUBYIWJIcZcBwOWWG
2733+492 9.94 GWiyZHfXTSOhsFbKuIhk
2734+765 4.30 GBetTJgPyvkAxrXRpsJl
2735+253 0.92 HIzAohqVOuEzLhMrmWHM
2736+817 5.83 fKrTaePFivQaDodpUPcp
2737+634 6.51 fnoBFIBLvWYcnwWmGPDW
2738+856 3.74 tAdowmIYZKjoOGTwJAfO
2739+96 3.51 qOtvIpGNjQMQrHSLeRUx
2740+75 2.35 GlMwkqlZGvRCPRABnVgP
2741+375 2.55 SJCtkjXdFWcDFgYFDPXd
2742+858 3.96 MpRNSIajCaxjbWOxGeDl
2743+77 4.19 tnBtDfXccMjoKXssfnTZ
2744+625 2.60 clrWhxrSVdhpmMuoJqpr
2745+759 7.39 BOHgQDXUYQEZCTGJEnjm
2746+281 1.64 hePfEHzrcuNJCRqvBmfE
2747+976 6.23 hUgIipTXKSatNHGZvnPa
2748+192 8.69 KJPrLjSZTxZGLSogyfIl
2749+272 9.67 suulJBidiCsxEtsLJPXz
2750+784 9.82 PuOALbofWxYYAAPFpxhu
2751+742 0.46 lROKSHzHeEFyRPSoGGgq
2752+427 2.99 QGZUIpDngmQfbWdLiGgF
2753+431 2.85 odAeTWgMbFesukcwSGSz
2754+589 8.87 LaCVLltVFubMVdTsMJaw
2755+335 7.71 UIGNHghfqsRvvQysVnmC
2756+123 1.61 HfCuGmJjnqZogPANFShb
2757+861 2.64 kOmfuePaydwDbxqVxDkc
2758+313 7.93 OZERQTeZNZsVKfoDZqii
2759+89 4.10 WvfImSzUGnAqALNHKIje
2760+808 1.28 QTCKhTcIUWFaVwdwmHWC
2761+272 6.27 MlZrgZXkQMKRCErhnavN
2762+887 9.97 vksEBVPsrIjjJEzienso
2763+128 8.73 SAUsMljcuUHAeUpCfScF
2764+146 9.45 yubOLwcdxuXjREUHhszB
2765+133 4.92 bbqtNfbeQvPzFeKeKpNm
2766+920 7.80 qcADPDdxUaPRwBUNGoPe
2767+707 6.61 xWfsbVaPFalICCFNbNrF
2768+944 6.10 MKDQiwtYJJoChkYVaduo
2769+98 1.16 LVjBXNuotJGHfvwhbOUu
2770+366 6.16 JvQWxeSMZKnvCEwWfkdO
2771+238 6.33 cpBXyzqJdjSgtlADhYwn
2772+664 0.65 WKTGKRELWenQpKNbBDQa
2773+488 8.50 aoXWhqjECruNWEQqKogb
2774+841 0.98 wRvGDWDMYxYGfZNjgPLZ
2775+923 8.10 sWbpzsuxsygtdoGpNdmV
2776+762 2.73 ghtVfGPxISzriCrEcRxa
2777+268 6.96 eOqpdaYgWoVocwDChewK
2778+712 9.80 NjCCgBXbVodOHSWyQnqI
2779+851 7.52 NeuAPcRrdBTcGeDkPsjE
2780+97 6.47 bzZpgZHdpJUKQBkgspIZ
2781+237 9.19 WQOrhqdyoZgEVBoZtNbs
2782+763 5.14 LpvjSWJPvyMpPTdRIBJh
2783+952 3.31 wniuoanPhMZzVwGaZKQi
2784+145 6.55 DwWThCWXkzreoyswWOcm
2785+619 8.38 IcKqPCVXBefXJvEmTCWz
2786+894 6.24 RszFDfdThKnkAMVgWfcY
2787+411 4.68 MnidokwIgxwjlmDPHXbL
2788+976 8.66 KYwtBwvUpmFBvFmclDfB
2789+154 9.78 vHjmwHbimyafbDzSMGhf
2790+780 5.23 cmvPpbPfgnRQyIkdPxre
2791+776 6.72 jESxTrbGnbmrvfgVhIrm
2792+794 0.49 nfqmJtZtxKzszwmwFbMn
2793+378 2.80 APOmsppWHnyBVNaHeuis
2794+240 9.22 UOnvdxPLvRdkBYyYhsGx
2795+599 2.70 oMhMyuKEgNwLWlzuuRxj
2796+963 9.79 lcOnqWKoBmionyzBNQGJ
2797+802 0.76 vsAEnzkHaedQRrLgYYjP
2798+324 9.50 wXnYxuHAYLBIERYGHgXe
2799+311 2.38 nFKzDaDSwoYcHDDeIidT
2800+587 7.32 eNBSPUCRyHaQSJXsGMtl
2801+926 1.62 XyifJlxGaORFBsMmSgVb
2802+493 7.42 MoCNJnECHicCIJHTYLsD
2803+646 9.28 eHBRTtfBenbZIvQbEnmB
2804+617 8.12 MnVPUntngEgmfrfjxGcI
2805+376 3.00 NsSloRjlZuYLWPpyTYcx
2806+284 6.61 WXVHKoxNagUgsSWiaFGR
2807+490 6.48 DSdAOphODhVTRVNcvfPe
2808+959 9.22 HjrqzJycSdjEEkSeEdkb
2809+980 1.50 zHctjFBHUROCnUbkxQdr
2810+947 2.35 oDCGDOCNUDGUabOwSqCR
2811+158 8.92 esBpVVllfWfdPVVVSypg
2812+166 1.50 yfFUjRZCSppnUjxBezVy
2813+591 8.92 gSZzebedXBmGWKcemqol
2814+211 8.83 zrrpMzIscltleXtvcKsu
2815+287 9.11 cAzsUVnbDmJlyKGSVeES
2816+761 7.32 pmAfNAuNBcLceuqgLwuv
2817+622 9.70 wUgAVFVucWEBUNSSwkwX
2818+468 3.36 NYFlnMObVgutevtdPAXN
2819+529 4.88 WMfPZyGvaGbeoPTfuKNr
2820+96 6.38 PSpmPerAPtqFBjNaDpwL
2821+2 2.55 OjyJsmTJymhbblQDiSwd
2822+3 5.75 yDjwaTlyaRKztkgbUSgt
2823+893 2.14 slYhpTYbYlqbkLHMDKzc
2824+524 4.92 kDEqHUcQRAZPziLXASIL
2825+678 0.31 nsaLguBwtWEUFGbMYaMy
2826+931 7.35 KCgquCRLjyVyPIUmDEys
2827+867 8.29 NEPyfvcdZdWprkLEqMNe
2828+100 1.50 hoKqHYiYEZAwzwIrkGJj
2829+746 1.71 veeERjGTYnQMQfKxACdq
2830+826 2.59 gQnPWlEPSQXxdxEkxiDP
2831+539 1.14 oNmEyExhBdmaSYTJOXbS
2832+226 8.53 NuWtUSOpVmbgfWDdOPHp
2833+304 7.41 WaKFaWrBGEzySdPJToTd
2834+162 8.40 XNMcOPBtZHjYIebUtthr
2835+167 2.83 ksrspRMkuhQbQkMNXlVm
2836+219 5.22 rWrmTqhKWQnzBxUOqKdk
2837+181 3.25 qTtVLsHSJTgJELIniLrt
2838+755 8.17 xPIgwGOnubwThOAgvxRX
2839+907 3.80 zCEtnyUMjVYXDIdtjKqS
2840+882 1.54 QwgLYXxcXuUhDdkxpmPy
2841+407 8.36 sBebgTdBqvhKfbAqcJXJ
2842+86 8.21 WUNPBlKGYncVtjNmiEku
2843+640 0.94 FZaXSveJfSKlJGVqJshL
2844+924 2.48 TrCAiDQDiBPtgiCeRWFN
2845+709 6.23 IkkmqxxunVSibSDANfEi
2846+702 1.60 BLTNhNPDXUnaelUaMKsQ
2847+656 5.75 iSRsERaxJgmTIyqlOXfR
2848+64 7.50 NfrqpSzDSrFnWNabmZtZ
2849+561 6.52 BfdQGsXJJamhbGRmnZhF
2850+838 9.27 gwzhOPbcHIrKlYyzylmp
2851+594 3.80 zdhWVEpVkryRDDziblRT
2852+431 6.68 nrWaEHIpEZqNVdrduveT
2853+585 0.20 BLznkxwXmLmFAqTXtsLG
2854+793 7.48 UydrggvJOmMngnjiyGby
2855+711 2.60 BRQCFFLDGHmOjcCoZVeE
2856+963 3.20 dYVgFIyykHShyyEWlwyq
2857+699 5.90 MXmxYHqCPQTyfHjoWXNt
2858+357 1.00 vcMBeilpEQVqWpWxuFPn
2859+874 7.58 fgTKOTitYQwtxjyVheMi
2860+657 1.56 dlGmCjxHTCEYhkqTcZqy
2861+996 4.25 mFOHRuoWHrCZbqQuQWee
2862+752 5.30 HPgaHJLRLTbdAqjfxrVD
2863+14 6.28 hrvSDSigoTaoVrdvkIjz
2864+978 7.12 qpYUewhHKGWgFYGHCKsl
2865+803 8.50 KmirXHpYJFjrSUsprByY
2866+794 4.80 PnirpkAFxPhXUKaRfFSh
2867+255 9.16 VwMUqvdgbDiJuuuffkZA
2868+576 6.63 uKxSaObMYAFWczMCcCeh
2869+501 3.73 nvrjpZJXxVhHlnVRUBCg
2870+747 4.77 GbkUyqSSwzRkbpRbVgUT
2871+398 5.61 ZOnSftpAIYHsNrNXoRbn
2872+457 0.56 lojBbBLzQYhGLhhmihVm
2873+112 2.74 nfFoaFmQOwtmxQApohmS
2874+586 7.25 HgLCKFiBvRwbpxSrAiNz
2875+492 5.89 vDZnaFenpXvBLQrTdVEC
2876+516 9.73 biXEfEzupaXgYYSGJEvj
2877+464 5.30 mOxzsvtZMJXVydfYvwQt
2878+912 7.33 hWoSuRVMPWUxLGYeHKWT
2879+498 8.44 csEBPlIuKcPLYqFpgvPo
2880+317 9.90 xjmCWWuJVyyZLJWitSJu
2881+449 8.45 lbOTYARhIKjsvZrJDDLc
2882+535 4.71 xNsPAvTVOJOTpbGYcaEj
2883+852 2.64 gnlfHhaGDbesWXHqERdF
2884+304 9.69 ZrHCaNXDmQybfSYrvTVw
2885+710 3.79 dRCihjVEcQxXJWqMDxeo
2886+773 2.10 jJdelWwqPoqWfTmWGsZk
2887+991 1.19 NjyCjfpFZupBOpetsrAx
2888+507 9.34 WMiiOWvifiwGeyPfNYED
2889+358 4.97 DhZcLFRhigrudPVyhnCq
2890+662 3.98 vTXayBmDNqzJlYyfWZNt
2891+507 7.75 YyOLbYGdMzcWLpUEMktX
2892+738 8.59 HVANysGlgsFYYENRBJLv
2893+295 8.82 ySqHYVFtksJmfZxZxIKy
2894+984 1.64 SZiTCEsSQYPwEKGrUzXq
2895+949 7.86 yxuIlvnpyHhwgSYCqfzG
2896+168 7.18 lUULhUneHMLZQSAUHBTo
2897+938 2.59 hkNHgcCmoyCsEkNcpXHe
2898+878 1.22 IMlcVToHOvtQoAKtOAOZ
2899+824 8.25 nWoHoqzsqrgmPMHhhBvp
2900+677 8.81 GFlSdWJwuDbhibVxcJIe
2901+754 0.79 lswvYmUipujZGssasZZs
2902+875 3.83 aIiDifayDeyznpPAyDRg
2903+565 5.23 unkzeWMvdDSFoMzpIlZO
2904+120 9.83 gLDFeShLWfyYDoQfCSZM
2905+65 5.57 zxGFAuwltfPNhmLXwGvq
2906+605 6.72 FyjqLLXbmnUFQIifLGDl
2907+962 5.64 FgGVEHmXtWbTjqlpXrZR
2908+687 2.50 OXpbxAdsZzKcozqKashw
2909+652 6.52 EOzUuWTiGudFkdfgvJPx
2910+223 7.89 eXRuLdrMRislqVSPrOPN
2911+825 7.96 wRFENOLBcgIggYOGVxdG
2912+8 9.47 cjhAxVamOWsSdoQNKLqn
2913+153 1.80 BVUyTTLXHmVldMLlywag
2914+554 9.41 RDqlVDVrrKkEeZOWHONI
2915+873 7.70 QriNidzzaKAwEMcrBRxG
2916+726 5.49 YWvtTmqjSduziEzYjDPa
2917+945 2.38 hIybylnSCPmHuEalnKfF
2918+348 3.53 oSTjhbXyDhDYPriXkdAa
2919+477 3.27 uwYAVKhGuNqrASpWjbhS
2920+493 6.14 CVDcxFbnNZDykZFEOxKq
2921+150 9.65 PvptXpcHWiOOOpcAlfUI
2922+752 6.39 ouXYOzGCgKBPjscsJgtI
2923+979 0.92 SPUtqGnWEnRUqggexxLf
2924+394 9.66 tkgzNvlNjKhGxjQHqMTn
2925+812 1.87 ytfRgWZTrXsCbKsMaDEm
2926+75 8.90 gTRNMbGxyLbKegeBqCbk
2927+60 2.59 LchJepJVTxDkSNSCBjwG
2928+87 9.14 pAYJtODZsmItUEbKEHPq
2929+214 8.69 MDODqGCuZbSIecdcNRjh
2930+444 8.64 uQLEcXkaAszAuXtekKYW
2931+273 3.67 caQpkUCIMRhADFxHOJdY
2932+946 1.24 KHRszujDHEqzDWiNbUqn
2933+459 3.00 CMVIjthRPWCGRriRPQNN
2934+838 3.11 jdoZfKkpspAMQDcCHfSO
2935+147 1.18 eWcCpPBfxtvbaKguEOgL
2936+250 2.65 NlstFbCiVIsbFLSsvXyF
2937+218 5.64 EBmbDNcybbLkgDoQyAPX
2938+155 5.94 hqISVwRJGGcUpPsogHEp
2939+757 2.15 qyZiYrZQPLbfEeeVwxbM
2940+808 8.64 sQkcXHKphTqmbeMoQyKd
2941+611 9.94 vANiaAgfgJyRIQhLzjhq
2942+901 5.89 RtElsqTRXOrJfEYyTHNC
2943+907 2.16 IAcqfqbLpIvXlIMbWFIh
2944+599 6.10 uQLFvJlcZYQVNFKVkEOl
2945+375 6.75 sPKkvIqNzbcnlzStgfeg
2946+804 3.80 qCsreKtxOTTKwbpOCcXm
2947+315 3.54 WnlQWsOVYUbosaOLOPQt
2948+855 1.54 OVYVpZRzjEDJrOMibrSI
2949+114 6.19 xnhCusHcpzhKmNNzXMDD
2950+215 0.76 DFBElSengQCWWCKGTmeR
2951+268 3.28 PmfavTNRPYZgNUCZivBI
2952+544 5.53 ZDlQMLtDYNCOtbKWDgOp
2953+120 8.80 vrjDnCVyugNDsKiAYpjX
2954+162 9.85 cAyOTlMgPyJCqigjhHoM
2955+117 4.20 UKURKmjuQxiYkZbrUOiX
2956+972 8.10 ClTGSsUJebREwBUInuTy
2957+772 7.44 lNsiOPZvYqshrPZFnxjC
2958+808 1.33 laWEnkkaRHhnTFPWSRss
2959+262 9.91 EDcVzMXlCgVQtaCeEcfP
2960+702 9.00 rpkEwhnPzbQWRntwGXAM
2961+700 6.52 lzFVaxgJMJOuQylTAUUs
2962+929 5.58 irxLUjAYvhflrKcepdWv
2963+386 7.37 bHxOrDcXxHgCpswxzeRS
2964+946 7.10 mjBaKAnepQGhMbykfSpq
2965+24 0.72 NTcNpjIWpboDmCRCLxkk
2966+997 9.97 HkufAuDNOGmetgsgwKIF
2967+691 1.91 qRuqQGMxObGGbyQhOuym
2968+201 1.78 lJNeEOeENEiQTAJOMtWZ
2969+932 1.63 gssjKuuiBWeKuyPZlXYv
2970+496 6.70 BpXVgtsjPcJKnxoTVgzP
2971+511 2.65 ZhCPNTqiSrZZYwnmIcMz
2972+749 5.45 CriuhVmUitYuLKqVGeeM
2973+652 3.73 JrDrGnOTHMIYgYKPKxqC
2974+913 2.81 sRivrqAHczXCbGLjuWiA
2975+723 7.70 TVolfTbnDLkMksYKwJwp
2976+821 4.13 PgplIumUlymWWvHXFaBU
2977+613 0.80 VAonZFIjlIYyyaZkjLUV
2978+735 5.50 ipAtfieINhaqoTCfRuMB
2979+79 3.90 hnFEUemQmwYOIsNsTnWP
2980+703 4.72 pOkbGLDqEmkOaUhtnFaJ
2981+775 3.29 kijKDMPrtLoDPQDPPdzm
2982+258 4.63 IQhyQMOQkdLgqHwsyBQF
2983+800 0.26 gaozoumOTyvzXPlpmDgv
2984+766 7.30 AjwjksjnSKpZHMtwrzZP
2985+440 0.30 BiChKYZUvwbTQOCmgunV
2986+53 9.77 gVUfBCuOjRwNTSDhZDme
2987+32 9.47 ifzLoYCDjXcYHbbVyvww
2988+749 0.58 dipSHODvHkBzMTiVKcvY
2989+285 5.31 ygoSgfRXudzxmsqNBkEZ
2990+141 1.89 AAFopiHBwWYUPjRHuWZw
2991+248 5.12 KFxTsNEWrMPlCKJIkGum
2992+641 4.67 TojOvtPpaqetlWlpMwcd
2993+649 1.28 ywUnZMHscsXVfAVnxpuq
2994+774 5.40 QProygQPJTBuvQwutgVI
2995+209 2.60 ZbBaaYLvQGfKtuzTSUVt
2996+860 7.59 zmpTjLLVvRjJkfpSCOWW
2997+957 3.87 dKkAuKAaXEgKaMjkDagl
2998+412 4.31 VxAVuOKMQYEJMOIztvOW
2999+930 4.98 lNSgzbFMpKXyAmKcUhPo
3000+860 9.20 NAQYwxbDUXYuZDGtAwFM
3001+846 7.85 NSiFtFPljAAPIRSKrXgy
3002+819 0.33 RVxYhzUvdNprbqrsnjzz
3003+192 6.23 XCuUdIbEpjprxcQzTtkz
3004+446 3.64 tWiNzVnUFwNtaKCbyRHA
3005+452 1.48 BpBbfkMXYcGhLwtogNCN
3006+580 1.56 tseDNgBeKsRorIWkfrRo
3007+823 5.32 CaEbQLnvKKttrComiNct
3008+776 7.79 htvnWLZUPHoCMkCjFTqa
3009+107 8.55 wUZTOVqWLcqWaShSWxrr
3010+122 5.35 BipUWzNXtkrWhEcMebjN
3011+303 5.59 AmfLvEqQeRwGbZmLrVfS
3012+262 4.38 GSwTRNmMYBOFvAlLxBdw
3013+812 6.54 OvfIaKsMVvLnrkNEONQp
3014+980 6.67 bVglLpqYKQAjEuMTwTdk
3015+98 6.21 rFDMoKNLdhnDdAgTTgAe
3016+91 8.11 WTaActKUdEikgQxNlZNC
3017+283 3.62 tkHGYDapLUWEKShowzre
3018+301 8.81 weLWvyBPDBcVNsVhkTgx
3019+764 8.98 luWWpGgxEbsEndwRSSoC
3020+976 0.40 myMJoqbDaleEXfDhDuJh
3021+334 1.63 VpFHTtsUWyeIDmTPRCdN
3022+879 5.64 FeMEZpbfGcJatvxvXvvG
3023+458 3.58 PZbWWATDgivhdQQBycoS
3024+389 3.79 YQTPfQdrfOqYZETgLmMW
3025+969 8.82 jEwGRRFhFrIssnQvQfvC
3026+880 3.81 hAYIuvNZMHxYckABDlOh
3027+482 0.15 xZSzCFAIAnZPprYxFtpO
3028+315 8.48 kwNiyIFCiILOkaRXyKpm
3029+972 2.10 fgbcTJkoRRNsALhHwngZ
3030+906 8.97 IdtZEgnFNzmtsEAicYlm
3031+153 7.28 QBMGyWImeRrrEKEtdMYk
3032+725 1.11 ABKrNPrTXbVbQYfZRdVG
3033+246 7.84 BfGyFnjQkPRmbbNWUCgT
3034+210 4.93 EveCQKDDLMXOzntjTmsW
3035+513 1.00 BNLtwyvUlLuJxUrEdZaf
3036+636 5.41 DLLkJtXfIXCAXCEbwJIw
3037+252 1.28 MOojcVHswqSQxYIBOfAo
3038+768 7.49 usFqWGXJdkMbMVXRYebk
3039+235 6.64 bQtTNXELHzpFStdtlwRt
3040+458 6.47 nBNgHCfoHHegbKFMEAEl
3041+291 2.20 wYUySuiufmsRWfwQrMfj
3042+212 4.30 TeUuWTTXzjhpEOoUFdCw
3043+67 9.40 HbMUofhJJbzIuujOEszx
3044+211 8.80 lUrYCeAhPUNbhOMGzSVs
3045+75 7.30 SFUoPFeFUCpLnSVsPGrI
3046+895 6.50 RdDUXXzeYdaVYSVcENHA
3047+484 7.96 UJNdoiiatlqTfjAihsXE
3048+774 6.80 amkNaHVMzbsbaJtNsNLp
3049+960 9.45 MwIGIBdfGSHSLOMhNdFA
3050+613 3.27 jLizwWOcZiwBECMDhaLS
3051+198 6.80 aQFgqrbjjCYKxVElbPix
3052+763 0.32 NpuoPFLKBkkJxpaZHVDP
3053+233 0.91 jTzFaWskVbkNlwWMmvDp
3054+474 2.73 NIfjcrWlJSAEhtAJPBsM
3055+241 9.62 elsjNxvuxGKyZRwNHTvq
3056+685 9.11 ctjuXmvjOWOqcHVEIEzT
3057+797 0.35 apvUfTtJMDKaHNCZzLyA
3058+405 1.57 KwjnJCmTlzUYoXsXEReA
3059+344 8.60 XyvChRXhioGEsAGKDKZS
3060+256 6.73 ovrqINvYzNaTHyZuBGMZ
3061+364 1.30 CWVleOfvIkiaPqUZyJdK
3062+845 6.16 xrqIYWdMJJMskdxaMWhZ
3063+974 6.14 JFjbDNpaYLtvgbtItCQZ
3064+819 2.40 CdrkqWiCUnMQOVjZFwey
3065+285 7.26 NKHuZkNUlIfzoGhvGZNQ
3066+435 6.81 DiieFEAIbWGMhrdRaPRR
3067+960 1.90 nXOfUqZzHriiPAzqXlmY
3068+518 8.40 yMXUXKrBfCYOphxlWQmZ
3069+599 2.18 VWaVlkkHXNXQssoiVolb
3070+544 5.80 MAicdYDIxNbRpfGuHspL
3071+933 1.67 ZFFUKAsVWEOjbpiwIsSD
3072+547 4.65 YwUJBSJdKNbJfIMSqQJk
3073+185 5.62 qmEnfTsRUFqJHeeBijsQ
3074+798 7.69 EWqDLYUJwrumsCSTjtMz
3075+963 3.69 jwwOloyGyrSEojGfuthl
3076+527 8.81 yNqQBCxVnINNBrymFAcG
3077+615 6.42 pqVBjvmIvOLNLXZrqEVa
3078+564 8.79 PvjyJclAHPjaOGoTJwVc
3079+476 2.53 ivYxeUzAMEKUEQhqupID
3080+775 8.79 JQVhTQcIMJxgvcpsveFB
3081+356 8.51 hOCxGmnEdnrYcKZPxeTl
3082+933 6.38 HyYEXxNvQIUBgtAqiHqP
3083+734 1.25 KUjasKiikmTbOtfqTbFR
3084+522 8.45 WamSGQZFHlSVurtwNRxm
3085+878 3.34 ldCMEyyYjOqIKpvlIrSM
3086+973 0.81 ynUbpbUhuzGREmfJpUGo
3087+DROP TABLE t1;
3088
3089=== added file 'plugin/filesystem_engine/tests/r/select_chop_line.result'
3090--- plugin/filesystem_engine/tests/r/select_chop_line.result 1970-01-01 00:00:00 +0000
3091+++ plugin/filesystem_engine/tests/r/select_chop_line.result 2010-07-30 13:27:46 +0000
3092@@ -0,0 +1,9 @@
3093+DROP TABLE IF EXISTS t1;
3094+CREATE TABLE t1 (c1 INT, c2 DECIMAL(3, 2)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_chop_line.data";
3095+SELECT * FROM t1;
3096+c1 c2
3097+618 9.60
3098+847 2.60
3099+814 3.25
3100+571 4.84
3101+DROP TABLE t1;
3102
3103=== added file 'plugin/filesystem_engine/tests/r/select_cpuinfo.result'
3104--- plugin/filesystem_engine/tests/r/select_cpuinfo.result 1970-01-01 00:00:00 +0000
3105+++ plugin/filesystem_engine/tests/r/select_cpuinfo.result 2010-07-30 13:27:46 +0000
3106@@ -0,0 +1,35 @@
3107+DROP TABLE IF EXISTS t1;
3108+CREATE TABLE t1 (a int) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_cpuinfo.data",FORMAT="KEY_VALUE",COL_SEPARATOR=":";
3109+SELECT * FROM t1;
3110+address sizes apicid bogomips cache size cache_alignment clflush size core id cpu MHz cpu cores cpu family cpuid level flags fpu fpu_exception initial apicid model model name physical id power management processor siblings stepping vendor_id wp
3111+36 bits physical, 48 bits virtual 0 5999.27 6144 KB 64 64 0 2000.000 2 6 13 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm yes yes 0 23 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz 0 NULL 0 2 10 GenuineIntel yes
3112+36 bits physical, 48 bits virtual 1 5999.08 6144 KB 64 64 1 2000.000 2 6 13 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm yes yes 1 23 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz 0 NULL 1 2 10 GenuineIntel yes
3113+SHOW CREATE TABLE t1;
3114+Table Create Table
3115+t1 CREATE TABLE `t1` (
3116+ `address sizes` varchar(34) DEFAULT NULL,
3117+ `apicid` varchar(2) DEFAULT NULL,
3118+ `bogomips` varchar(8) DEFAULT NULL,
3119+ `cache size` varchar(8) DEFAULT NULL,
3120+ `cache_alignment` varchar(3) DEFAULT NULL,
3121+ `clflush size` varchar(3) DEFAULT NULL,
3122+ `core id` varchar(2) DEFAULT NULL,
3123+ `cpu MHz` varchar(9) DEFAULT NULL,
3124+ `cpu cores` varchar(2) DEFAULT NULL,
3125+ `cpu family` varchar(2) DEFAULT NULL,
3126+ `cpuid level` varchar(3) DEFAULT NULL,
3127+ `flags` varchar(249) DEFAULT NULL,
3128+ `fpu` varchar(4) DEFAULT NULL,
3129+ `fpu_exception` varchar(4) DEFAULT NULL,
3130+ `initial apicid` varchar(2) DEFAULT NULL,
3131+ `model` varchar(3) DEFAULT NULL,
3132+ `model name` varchar(48) DEFAULT NULL,
3133+ `physical id` varchar(2) DEFAULT NULL,
3134+ `power management` varchar(1) DEFAULT NULL,
3135+ `processor` varchar(2) DEFAULT NULL,
3136+ `siblings` varchar(2) DEFAULT NULL,
3137+ `stepping` varchar(3) DEFAULT NULL,
3138+ `vendor_id` varchar(13) DEFAULT NULL,
3139+ `wp` varchar(4) DEFAULT NULL
3140+) ENGINE=FILESYSTEM FILE='../filesystem_ln/select_cpuinfo.data' FORMAT='KEY_VALUE' COL_SEPARATOR=':'
3141+DROP TABLE t1;
3142
3143=== added file 'plugin/filesystem_engine/tests/r/select_meminfo.result'
3144--- plugin/filesystem_engine/tests/r/select_meminfo.result 1970-01-01 00:00:00 +0000
3145+++ plugin/filesystem_engine/tests/r/select_meminfo.result 2010-07-30 13:27:46 +0000
3146@@ -0,0 +1,42 @@
3147+DROP TABLE IF EXISTS t1;
3148+CREATE TABLE t1 (a int) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_meminfo.data",FORMAT="KEY_VALUE",COL_SEPARATOR=": ";
3149+SELECT * FROM t1;
3150+Active AnonPages Bounce Buffers Cached CommitLimit Committed_AS DirectMap2M DirectMap4k Dirty HugePages_Free HugePages_Rsvd HugePages_Surp HugePages_Total Hugepagesize Inactive Mapped MemFree MemTotal NFS_Unstable PageTables SReclaimable SUnreclaim Slab SwapCached SwapFree SwapTotal VmallocChunk VmallocTotal VmallocUsed Writeback WritebackTmp
3151+1526364 198768 0 221004 2829356 2600136 495728 4186112 7040 1916 0 0 0 0 2048 1722772 51064 502844 4059680 0 27124 198000 12076 210076 0 570296 570296 34359655499 34359738367 82808 0 0
3152+SHOW CREATE TABLE t1;
3153+Table Create Table
3154+t1 CREATE TABLE `t1` (
3155+ `Active` varchar(8) DEFAULT NULL,
3156+ `AnonPages` varchar(7) DEFAULT NULL,
3157+ `Bounce` varchar(2) DEFAULT NULL,
3158+ `Buffers` varchar(7) DEFAULT NULL,
3159+ `Cached` varchar(8) DEFAULT NULL,
3160+ `CommitLimit` varchar(8) DEFAULT NULL,
3161+ `Committed_AS` varchar(7) DEFAULT NULL,
3162+ `DirectMap2M` varchar(8) DEFAULT NULL,
3163+ `DirectMap4k` varchar(5) DEFAULT NULL,
3164+ `Dirty` varchar(5) DEFAULT NULL,
3165+ `HugePages_Free` varchar(2) DEFAULT NULL,
3166+ `HugePages_Rsvd` varchar(2) DEFAULT NULL,
3167+ `HugePages_Surp` varchar(2) DEFAULT NULL,
3168+ `HugePages_Total` varchar(2) DEFAULT NULL,
3169+ `Hugepagesize` varchar(5) DEFAULT NULL,
3170+ `Inactive` varchar(8) DEFAULT NULL,
3171+ `Mapped` varchar(6) DEFAULT NULL,
3172+ `MemFree` varchar(7) DEFAULT NULL,
3173+ `MemTotal` varchar(8) DEFAULT NULL,
3174+ `NFS_Unstable` varchar(2) DEFAULT NULL,
3175+ `PageTables` varchar(6) DEFAULT NULL,
3176+ `SReclaimable` varchar(7) DEFAULT NULL,
3177+ `SUnreclaim` varchar(6) DEFAULT NULL,
3178+ `Slab` varchar(7) DEFAULT NULL,
3179+ `SwapCached` varchar(2) DEFAULT NULL,
3180+ `SwapFree` varchar(7) DEFAULT NULL,
3181+ `SwapTotal` varchar(7) DEFAULT NULL,
3182+ `VmallocChunk` varchar(12) DEFAULT NULL,
3183+ `VmallocTotal` varchar(12) DEFAULT NULL,
3184+ `VmallocUsed` varchar(6) DEFAULT NULL,
3185+ `Writeback` varchar(2) DEFAULT NULL,
3186+ `WritebackTmp` varchar(2) DEFAULT NULL
3187+) ENGINE=FILESYSTEM FILE='../filesystem_ln/select_meminfo.data' FORMAT='KEY_VALUE' COL_SEPARATOR=': '
3188+DROP TABLE t1;
3189
3190=== added file 'plugin/filesystem_engine/tests/r/select_separator_mode_weak.result'
3191--- plugin/filesystem_engine/tests/r/select_separator_mode_weak.result 1970-01-01 00:00:00 +0000
3192+++ plugin/filesystem_engine/tests/r/select_separator_mode_weak.result 2010-07-30 13:27:46 +0000
3193@@ -0,0 +1,9 @@
3194+DROP TABLE IF EXISTS t1;
3195+CREATE TABLE t1 (c1 INT, c2 DECIMAL(3, 2), c3 VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_chop_line.data",SEPARATOR_MODE=WEAK;
3196+SELECT * FROM t1;
3197+c1 c2 c3
3198+618 9.60 LSkNQAZjODwYvOYUeAVb
3199+847 2.60 yphkuCaGsgbReRQTcUob
3200+814 3.25 rJDEnFNRTVftDpWPLeRa
3201+571 4.84 bjQkbVIPlNmlHpKvDBVv
3202+DROP TABLE t1;
3203
3204=== added file 'plugin/filesystem_engine/tests/r/select_short_line.result'
3205--- plugin/filesystem_engine/tests/r/select_short_line.result 1970-01-01 00:00:00 +0000
3206+++ plugin/filesystem_engine/tests/r/select_short_line.result 2010-07-30 13:27:46 +0000
3207@@ -0,0 +1,9 @@
3208+DROP TABLE IF EXISTS t1;
3209+CREATE TABLE t1 (c1 INT, c2 DECIMAL(3, 2), c3 VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_short_line.data";
3210+SELECT * FROM t1;
3211+c1 c2 c3
3212+618 9.60 NULL
3213+847 2.60 NULL
3214+814 NULL c3data
3215+571 4.84 NULL
3216+DROP TABLE t1;
3217
3218=== added file 'plugin/filesystem_engine/tests/r/select_skip_blank_line.result'
3219--- plugin/filesystem_engine/tests/r/select_skip_blank_line.result 1970-01-01 00:00:00 +0000
3220+++ plugin/filesystem_engine/tests/r/select_skip_blank_line.result 2010-07-30 13:27:46 +0000
3221@@ -0,0 +1,11 @@
3222+DROP TABLE IF EXISTS t1;
3223+CREATE TABLE t1 (c1 INT, c2 VARCHAR(10)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_skip_blank_line.data",ROW_SEPARATOR=";\n";
3224+SELECT * FROM t1;
3225+c1 c2
3226+111 aaa
3227+222 bbb
3228+333 ccc
3229+444 ddd
3230+888 eee
3231+999 fff
3232+DROP TABLE t1;
3233
3234=== added file 'plugin/filesystem_engine/tests/r/select_with_escaped_character.result'
3235--- plugin/filesystem_engine/tests/r/select_with_escaped_character.result 1970-01-01 00:00:00 +0000
3236+++ plugin/filesystem_engine/tests/r/select_with_escaped_character.result 2010-07-30 13:27:46 +0000
3237@@ -0,0 +1,8 @@
3238+DROP TABLE IF EXISTS t1;
3239+CREATE TABLE t1 (c1 INT, c2 VARCHAR(20), c3 INT)
3240+ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_with_escaped_character.data",COL_SEPARATOR=",",ESCAPED_BY="\\";
3241+SELECT * FROM t1;
3242+c1 c2 c3
3243+1 one, two or three 1234
3244+2 other text 4567
3245+DROP TABLE t1;
3246
3247=== added file 'plugin/filesystem_engine/tests/r/select_with_omit_field.result'
3248--- plugin/filesystem_engine/tests/r/select_with_omit_field.result 1970-01-01 00:00:00 +0000
3249+++ plugin/filesystem_engine/tests/r/select_with_omit_field.result 2010-07-30 13:27:46 +0000
3250@@ -0,0 +1,13 @@
3251+DROP TABLE IF EXISTS t1;
3252+CREATE TABLE t1 (c1 INT, c2 VARCHAR(20),
3253+c3 INT, c4 VARCHAR(20),
3254+c5 DECIMAL(3, 2))
3255+ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_with_omit_field.data",COL_SEPARATOR="|/",ROW_SEPARATOR=";\n";
3256+SELECT * FROM t1;
3257+c1 c2 c3 c4 c5
3258+111 aaa 222 bbb 4.32
3259+333 NULL 888 1.89 NULL
3260+555 xxx 999 ppp 5.67
3261+NULL ddd 100 qqq 7.15
3262+999 eee 231 ooo 9.11
3263+DROP TABLE t1;
3264
3265=== added file 'plugin/filesystem_engine/tests/r/select_with_separators.result'
3266--- plugin/filesystem_engine/tests/r/select_with_separators.result 1970-01-01 00:00:00 +0000
3267+++ plugin/filesystem_engine/tests/r/select_with_separators.result 2010-07-30 13:27:46 +0000
3268@@ -0,0 +1,13 @@
3269+DROP TABLE IF EXISTS t1;
3270+CREATE TABLE t1 (c1 INT, c2 VARCHAR(20),
3271+c3 INT, c4 VARCHAR(20),
3272+c5 DECIMAL(3, 2))
3273+ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_with_separators.data",COL_SEPARATOR="|/",ROW_SEPARATOR=";\n";
3274+SELECT * FROM t1;
3275+c1 c2 c3 c4 c5
3276+111 aaa 222 bbb 4.32
3277+333 zzz 888 yyy 1.89
3278+555 xxx 999 ppp 5.67
3279+777 ddd 100 qqq 7.15
3280+999 eee 231 ooo 9.11
3281+DROP TABLE t1;
3282
3283=== added directory 'plugin/filesystem_engine/tests/t'
3284=== added file 'plugin/filesystem_engine/tests/t/basic_create_table-master.opt'
3285--- plugin/filesystem_engine/tests/t/basic_create_table-master.opt 1970-01-01 00:00:00 +0000
3286+++ plugin/filesystem_engine/tests/t/basic_create_table-master.opt 2010-07-30 13:27:46 +0000
3287@@ -0,0 +1,1 @@
3288+--plugin_add=filesystem_engine
3289
3290=== added file 'plugin/filesystem_engine/tests/t/basic_create_table.data'
3291=== added file 'plugin/filesystem_engine/tests/t/basic_create_table.test'
3292--- plugin/filesystem_engine/tests/t/basic_create_table.test 1970-01-01 00:00:00 +0000
3293+++ plugin/filesystem_engine/tests/t/basic_create_table.test 2010-07-30 13:27:46 +0000
3294@@ -0,0 +1,25 @@
3295+--disable_warnings
3296+DROP TABLE IF EXISTS t1;
3297+--enable_warnings
3298+
3299+# test file not existed
3300+--error 1005
3301+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/_FILE_NOT_EXISTED_";
3302+
3303+# test col separator not empty
3304+--error 1698
3305+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_create_table.data",COL_SEPARATOR="";
3306+
3307+# test row separator not empty
3308+--error 1698
3309+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_create_table.data",ROW_SEPARATOR="";
3310+
3311+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_create_table.data";
3312+
3313+# test table existed
3314+--error 1050
3315+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_create_table.data";
3316+
3317+SHOW CREATE TABLE t1;
3318+
3319+DROP TABLE t1;
3320
3321=== added file 'plugin/filesystem_engine/tests/t/basic_delete-master.opt'
3322--- plugin/filesystem_engine/tests/t/basic_delete-master.opt 1970-01-01 00:00:00 +0000
3323+++ plugin/filesystem_engine/tests/t/basic_delete-master.opt 2010-07-30 13:27:46 +0000
3324@@ -0,0 +1,1 @@
3325+--plugin_add=filesystem_engine
3326
3327=== added file 'plugin/filesystem_engine/tests/t/basic_delete.data'
3328--- plugin/filesystem_engine/tests/t/basic_delete.data 1970-01-01 00:00:00 +0000
3329+++ plugin/filesystem_engine/tests/t/basic_delete.data 2010-07-30 13:27:46 +0000
3330@@ -0,0 +1,1 @@
3331+111 aaa
3332
3333=== added file 'plugin/filesystem_engine/tests/t/basic_delete.test'
3334--- plugin/filesystem_engine/tests/t/basic_delete.test 1970-01-01 00:00:00 +0000
3335+++ plugin/filesystem_engine/tests/t/basic_delete.test 2010-07-30 13:27:46 +0000
3336@@ -0,0 +1,21 @@
3337+--disable_warnings
3338+DROP TABLE IF EXISTS t1;
3339+--enable_warnings
3340+
3341+CREATE TABLE t1 (a INT, b VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_delete.data";
3342+
3343+INSERT INTO t1 VALUES (222, "bbb");
3344+INSERT INTO t1 VALUES (333, "ccc");
3345+INSERT INTO t1 VALUES (444, "ddd");
3346+INSERT INTO t1 VALUES (555, "eee");
3347+INSERT INTO t1 VALUES (666, "fff");
3348+
3349+SELECT * FROM t1;
3350+
3351+DELETE FROM t1 WHERE a>=444;
3352+DELETE FROM t1 WHERE b="bbb";
3353+DELETE FROM t1 WHERE a!=111;
3354+
3355+SELECT * FROM t1;
3356+
3357+DROP TABLE t1;
3358
3359=== added file 'plugin/filesystem_engine/tests/t/basic_insert-master.opt'
3360--- plugin/filesystem_engine/tests/t/basic_insert-master.opt 1970-01-01 00:00:00 +0000
3361+++ plugin/filesystem_engine/tests/t/basic_insert-master.opt 2010-07-30 13:27:46 +0000
3362@@ -0,0 +1,1 @@
3363+--plugin_add=filesystem_engine
3364
3365=== added file 'plugin/filesystem_engine/tests/t/basic_insert.data'
3366--- plugin/filesystem_engine/tests/t/basic_insert.data 1970-01-01 00:00:00 +0000
3367+++ plugin/filesystem_engine/tests/t/basic_insert.data 2010-07-30 13:27:46 +0000
3368@@ -0,0 +1,1 @@
3369+111 aaa
3370
3371=== added file 'plugin/filesystem_engine/tests/t/basic_insert.test'
3372--- plugin/filesystem_engine/tests/t/basic_insert.test 1970-01-01 00:00:00 +0000
3373+++ plugin/filesystem_engine/tests/t/basic_insert.test 2010-07-30 13:27:46 +0000
3374@@ -0,0 +1,21 @@
3375+--disable_warnings
3376+DROP TABLE IF EXISTS t1;
3377+--enable_warnings
3378+
3379+CREATE TABLE t1 (a INT, b VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_insert.data";
3380+
3381+INSERT INTO t1 VALUES (222, "bbb");
3382+INSERT INTO t1 VALUES (333, "ccc");
3383+INSERT INTO t1 VALUES (444, "ddd");
3384+INSERT INTO t1 VALUES (555, "eee");
3385+INSERT INTO t1 VALUES (666, "fff");
3386+
3387+SELECT * FROM t1;
3388+
3389+DELETE FROM t1;
3390+
3391+INSERT INTO t1 VALUES (111, "aaa");
3392+
3393+SELECT * FROM t1;
3394+
3395+DROP TABLE t1;
3396
3397=== added file 'plugin/filesystem_engine/tests/t/basic_select-master.opt'
3398--- plugin/filesystem_engine/tests/t/basic_select-master.opt 1970-01-01 00:00:00 +0000
3399+++ plugin/filesystem_engine/tests/t/basic_select-master.opt 2010-07-30 13:27:46 +0000
3400@@ -0,0 +1,1 @@
3401+--plugin_add=filesystem_engine
3402
3403=== added file 'plugin/filesystem_engine/tests/t/basic_select.data'
3404--- plugin/filesystem_engine/tests/t/basic_select.data 1970-01-01 00:00:00 +0000
3405+++ plugin/filesystem_engine/tests/t/basic_select.data 2010-07-30 13:27:46 +0000
3406@@ -0,0 +1,9 @@
3407+999
3408+888
3409+777
3410+666
3411+555
3412+444
3413+333
3414+222
3415+111
3416
3417=== added file 'plugin/filesystem_engine/tests/t/basic_select.test'
3418--- plugin/filesystem_engine/tests/t/basic_select.test 1970-01-01 00:00:00 +0000
3419+++ plugin/filesystem_engine/tests/t/basic_select.test 2010-07-30 13:27:46 +0000
3420@@ -0,0 +1,9 @@
3421+--disable_warnings
3422+DROP TABLE IF EXISTS t1;
3423+--enable_warnings
3424+
3425+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_select.data";
3426+
3427+SELECT * FROM t1;
3428+
3429+DROP TABLE t1;
3430
3431=== added file 'plugin/filesystem_engine/tests/t/basic_update-master.opt'
3432--- plugin/filesystem_engine/tests/t/basic_update-master.opt 1970-01-01 00:00:00 +0000
3433+++ plugin/filesystem_engine/tests/t/basic_update-master.opt 2010-07-30 13:27:46 +0000
3434@@ -0,0 +1,1 @@
3435+--plugin_add=filesystem_engine
3436
3437=== added file 'plugin/filesystem_engine/tests/t/basic_update.data'
3438--- plugin/filesystem_engine/tests/t/basic_update.data 1970-01-01 00:00:00 +0000
3439+++ plugin/filesystem_engine/tests/t/basic_update.data 2010-07-30 13:27:46 +0000
3440@@ -0,0 +1,1 @@
3441+111 aaa
3442
3443=== added file 'plugin/filesystem_engine/tests/t/basic_update.test'
3444--- plugin/filesystem_engine/tests/t/basic_update.test 1970-01-01 00:00:00 +0000
3445+++ plugin/filesystem_engine/tests/t/basic_update.test 2010-07-30 13:27:46 +0000
3446@@ -0,0 +1,18 @@
3447+--disable_warnings
3448+DROP TABLE IF EXISTS t1;
3449+--enable_warnings
3450+
3451+CREATE TABLE t1 (a INT, b VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/basic_update.data";
3452+
3453+INSERT INTO t1 VALUES (222, "bbb");
3454+INSERT INTO t1 VALUES (333, "ccc");
3455+INSERT INTO t1 VALUES (444, "ddd");
3456+
3457+UPDATE t1 SET a=999 WHERE a=444;
3458+UPDATE t1 SET b="zzz" WHERE a=222;
3459+
3460+SELECT * FROM t1;
3461+
3462+DELETE FROM t1 WHERE a!=111;
3463+
3464+DROP TABLE t1;
3465
3466=== added file 'plugin/filesystem_engine/tests/t/multiple_update-master.opt'
3467--- plugin/filesystem_engine/tests/t/multiple_update-master.opt 1970-01-01 00:00:00 +0000
3468+++ plugin/filesystem_engine/tests/t/multiple_update-master.opt 2010-07-30 13:27:46 +0000
3469@@ -0,0 +1,1 @@
3470+--plugin_add=filesystem_engine
3471
3472=== added file 'plugin/filesystem_engine/tests/t/multiple_update.data'
3473--- plugin/filesystem_engine/tests/t/multiple_update.data 1970-01-01 00:00:00 +0000
3474+++ plugin/filesystem_engine/tests/t/multiple_update.data 2010-07-30 13:27:46 +0000
3475@@ -0,0 +1,4 @@
3476+777
3477+555
3478+333
3479+111
3480
3481=== added file 'plugin/filesystem_engine/tests/t/multiple_update.test'
3482--- plugin/filesystem_engine/tests/t/multiple_update.test 1970-01-01 00:00:00 +0000
3483+++ plugin/filesystem_engine/tests/t/multiple_update.test 2010-07-30 13:27:46 +0000
3484@@ -0,0 +1,422 @@
3485+--disable_warnings
3486+DROP TABLE IF EXISTS t1;
3487+--enable_warnings
3488+
3489+CREATE TABLE t1 (a INT) ENGINE=FILESYSTEM,FILE="../filesystem_ln/multiple_update.data";
3490+
3491+connect (con1,localhost,root,,);
3492+connect (con2,localhost,root,,);
3493+connect (con3,localhost,root,,);
3494+connect (con4,localhost,root,,);
3495+
3496+connection con1;
3497+UPDATE t1 SET a=222 WHERE a=111;
3498+UPDATE t1 SET a=111 WHERE a=222;
3499+UPDATE t1 SET a=222 WHERE a=111;
3500+UPDATE t1 SET a=111 WHERE a=222;
3501+UPDATE t1 SET a=222 WHERE a=111;
3502+UPDATE t1 SET a=111 WHERE a=222;
3503+UPDATE t1 SET a=222 WHERE a=111;
3504+UPDATE t1 SET a=111 WHERE a=222;
3505+UPDATE t1 SET a=222 WHERE a=111;
3506+UPDATE t1 SET a=111 WHERE a=222;
3507+UPDATE t1 SET a=222 WHERE a=111;
3508+UPDATE t1 SET a=111 WHERE a=222;
3509+UPDATE t1 SET a=222 WHERE a=111;
3510+UPDATE t1 SET a=111 WHERE a=222;
3511+UPDATE t1 SET a=222 WHERE a=111;
3512+UPDATE t1 SET a=111 WHERE a=222;
3513+UPDATE t1 SET a=222 WHERE a=111;
3514+UPDATE t1 SET a=111 WHERE a=222;
3515+UPDATE t1 SET a=222 WHERE a=111;
3516+UPDATE t1 SET a=111 WHERE a=222;
3517+UPDATE t1 SET a=222 WHERE a=111;
3518+UPDATE t1 SET a=111 WHERE a=222;
3519+UPDATE t1 SET a=222 WHERE a=111;
3520+UPDATE t1 SET a=111 WHERE a=222;
3521+UPDATE t1 SET a=222 WHERE a=111;
3522+UPDATE t1 SET a=111 WHERE a=222;
3523+UPDATE t1 SET a=222 WHERE a=111;
3524+UPDATE t1 SET a=111 WHERE a=222;
3525+UPDATE t1 SET a=222 WHERE a=111;
3526+UPDATE t1 SET a=111 WHERE a=222;
3527+UPDATE t1 SET a=222 WHERE a=111;
3528+UPDATE t1 SET a=111 WHERE a=222;
3529+UPDATE t1 SET a=222 WHERE a=111;
3530+UPDATE t1 SET a=111 WHERE a=222;
3531+UPDATE t1 SET a=222 WHERE a=111;
3532+UPDATE t1 SET a=111 WHERE a=222;
3533+UPDATE t1 SET a=222 WHERE a=111;
3534+UPDATE t1 SET a=111 WHERE a=222;
3535+UPDATE t1 SET a=222 WHERE a=111;
3536+UPDATE t1 SET a=111 WHERE a=222;
3537+UPDATE t1 SET a=222 WHERE a=111;
3538+UPDATE t1 SET a=111 WHERE a=222;
3539+UPDATE t1 SET a=222 WHERE a=111;
3540+UPDATE t1 SET a=111 WHERE a=222;
3541+UPDATE t1 SET a=222 WHERE a=111;
3542+UPDATE t1 SET a=111 WHERE a=222;
3543+UPDATE t1 SET a=222 WHERE a=111;
3544+UPDATE t1 SET a=111 WHERE a=222;
3545+UPDATE t1 SET a=222 WHERE a=111;
3546+UPDATE t1 SET a=111 WHERE a=222;
3547+UPDATE t1 SET a=222 WHERE a=111;
3548+UPDATE t1 SET a=111 WHERE a=222;
3549+UPDATE t1 SET a=222 WHERE a=111;
3550+UPDATE t1 SET a=111 WHERE a=222;
3551+UPDATE t1 SET a=222 WHERE a=111;
3552+UPDATE t1 SET a=111 WHERE a=222;
3553+UPDATE t1 SET a=222 WHERE a=111;
3554+UPDATE t1 SET a=111 WHERE a=222;
3555+UPDATE t1 SET a=222 WHERE a=111;
3556+UPDATE t1 SET a=111 WHERE a=222;
3557+UPDATE t1 SET a=222 WHERE a=111;
3558+UPDATE t1 SET a=111 WHERE a=222;
3559+UPDATE t1 SET a=222 WHERE a=111;
3560+UPDATE t1 SET a=111 WHERE a=222;
3561+UPDATE t1 SET a=222 WHERE a=111;
3562+UPDATE t1 SET a=111 WHERE a=222;
3563+UPDATE t1 SET a=222 WHERE a=111;
3564+UPDATE t1 SET a=111 WHERE a=222;
3565+UPDATE t1 SET a=222 WHERE a=111;
3566+UPDATE t1 SET a=111 WHERE a=222;
3567+UPDATE t1 SET a=222 WHERE a=111;
3568+UPDATE t1 SET a=111 WHERE a=222;
3569+UPDATE t1 SET a=222 WHERE a=111;
3570+UPDATE t1 SET a=111 WHERE a=222;
3571+UPDATE t1 SET a=222 WHERE a=111;
3572+UPDATE t1 SET a=111 WHERE a=222;
3573+UPDATE t1 SET a=222 WHERE a=111;
3574+UPDATE t1 SET a=111 WHERE a=222;
3575+UPDATE t1 SET a=222 WHERE a=111;
3576+UPDATE t1 SET a=111 WHERE a=222;
3577+UPDATE t1 SET a=222 WHERE a=111;
3578+UPDATE t1 SET a=111 WHERE a=222;
3579+UPDATE t1 SET a=222 WHERE a=111;
3580+UPDATE t1 SET a=111 WHERE a=222;
3581+
3582+connection con2;
3583+UPDATE t1 SET a=444 WHERE a=333;
3584+UPDATE t1 SET a=333 WHERE a=444;
3585+UPDATE t1 SET a=444 WHERE a=333;
3586+UPDATE t1 SET a=333 WHERE a=444;
3587+UPDATE t1 SET a=444 WHERE a=333;
3588+UPDATE t1 SET a=333 WHERE a=444;
3589+UPDATE t1 SET a=444 WHERE a=333;
3590+UPDATE t1 SET a=333 WHERE a=444;
3591+UPDATE t1 SET a=444 WHERE a=333;
3592+UPDATE t1 SET a=333 WHERE a=444;
3593+UPDATE t1 SET a=444 WHERE a=333;
3594+UPDATE t1 SET a=333 WHERE a=444;
3595+UPDATE t1 SET a=444 WHERE a=333;
3596+UPDATE t1 SET a=333 WHERE a=444;
3597+UPDATE t1 SET a=444 WHERE a=333;
3598+UPDATE t1 SET a=333 WHERE a=444;
3599+UPDATE t1 SET a=444 WHERE a=333;
3600+UPDATE t1 SET a=333 WHERE a=444;
3601+UPDATE t1 SET a=444 WHERE a=333;
3602+UPDATE t1 SET a=333 WHERE a=444;
3603+UPDATE t1 SET a=444 WHERE a=333;
3604+UPDATE t1 SET a=333 WHERE a=444;
3605+UPDATE t1 SET a=444 WHERE a=333;
3606+UPDATE t1 SET a=333 WHERE a=444;
3607+UPDATE t1 SET a=444 WHERE a=333;
3608+UPDATE t1 SET a=333 WHERE a=444;
3609+UPDATE t1 SET a=444 WHERE a=333;
3610+UPDATE t1 SET a=333 WHERE a=444;
3611+UPDATE t1 SET a=444 WHERE a=333;
3612+UPDATE t1 SET a=333 WHERE a=444;
3613+UPDATE t1 SET a=444 WHERE a=333;
3614+UPDATE t1 SET a=333 WHERE a=444;
3615+UPDATE t1 SET a=444 WHERE a=333;
3616+UPDATE t1 SET a=333 WHERE a=444;
3617+UPDATE t1 SET a=444 WHERE a=333;
3618+UPDATE t1 SET a=333 WHERE a=444;
3619+UPDATE t1 SET a=444 WHERE a=333;
3620+UPDATE t1 SET a=333 WHERE a=444;
3621+UPDATE t1 SET a=444 WHERE a=333;
3622+UPDATE t1 SET a=333 WHERE a=444;
3623+UPDATE t1 SET a=444 WHERE a=333;
3624+UPDATE t1 SET a=333 WHERE a=444;
3625+UPDATE t1 SET a=444 WHERE a=333;
3626+UPDATE t1 SET a=333 WHERE a=444;
3627+UPDATE t1 SET a=444 WHERE a=333;
3628+UPDATE t1 SET a=333 WHERE a=444;
3629+UPDATE t1 SET a=444 WHERE a=333;
3630+UPDATE t1 SET a=333 WHERE a=444;
3631+UPDATE t1 SET a=444 WHERE a=333;
3632+UPDATE t1 SET a=333 WHERE a=444;
3633+UPDATE t1 SET a=444 WHERE a=333;
3634+UPDATE t1 SET a=333 WHERE a=444;
3635+UPDATE t1 SET a=444 WHERE a=333;
3636+UPDATE t1 SET a=333 WHERE a=444;
3637+UPDATE t1 SET a=444 WHERE a=333;
3638+UPDATE t1 SET a=333 WHERE a=444;
3639+UPDATE t1 SET a=444 WHERE a=333;
3640+UPDATE t1 SET a=333 WHERE a=444;
3641+UPDATE t1 SET a=444 WHERE a=333;
3642+UPDATE t1 SET a=333 WHERE a=444;
3643+UPDATE t1 SET a=444 WHERE a=333;
3644+UPDATE t1 SET a=333 WHERE a=444;
3645+UPDATE t1 SET a=444 WHERE a=333;
3646+UPDATE t1 SET a=333 WHERE a=444;
3647+UPDATE t1 SET a=444 WHERE a=333;
3648+UPDATE t1 SET a=333 WHERE a=444;
3649+UPDATE t1 SET a=444 WHERE a=333;
3650+UPDATE t1 SET a=333 WHERE a=444;
3651+UPDATE t1 SET a=444 WHERE a=333;
3652+UPDATE t1 SET a=333 WHERE a=444;
3653+UPDATE t1 SET a=444 WHERE a=333;
3654+UPDATE t1 SET a=333 WHERE a=444;
3655+UPDATE t1 SET a=444 WHERE a=333;
3656+UPDATE t1 SET a=333 WHERE a=444;
3657+UPDATE t1 SET a=444 WHERE a=333;
3658+UPDATE t1 SET a=333 WHERE a=444;
3659+UPDATE t1 SET a=444 WHERE a=333;
3660+UPDATE t1 SET a=333 WHERE a=444;
3661+UPDATE t1 SET a=444 WHERE a=333;
3662+UPDATE t1 SET a=333 WHERE a=444;
3663+UPDATE t1 SET a=444 WHERE a=333;
3664+UPDATE t1 SET a=333 WHERE a=444;
3665+UPDATE t1 SET a=444 WHERE a=333;
3666+UPDATE t1 SET a=333 WHERE a=444;
3667+UPDATE t1 SET a=444 WHERE a=333;
3668+UPDATE t1 SET a=333 WHERE a=444;
3669+UPDATE t1 SET a=444 WHERE a=333;
3670+UPDATE t1 SET a=333 WHERE a=444;
3671+UPDATE t1 SET a=444 WHERE a=333;
3672+UPDATE t1 SET a=333 WHERE a=444;
3673+UPDATE t1 SET a=444 WHERE a=333;
3674+UPDATE t1 SET a=333 WHERE a=444;
3675+UPDATE t1 SET a=444 WHERE a=333;
3676+UPDATE t1 SET a=333 WHERE a=444;
3677+UPDATE t1 SET a=444 WHERE a=333;
3678+UPDATE t1 SET a=333 WHERE a=444;
3679+UPDATE t1 SET a=444 WHERE a=333;
3680+UPDATE t1 SET a=333 WHERE a=444;
3681+UPDATE t1 SET a=444 WHERE a=333;
3682+UPDATE t1 SET a=333 WHERE a=444;
3683+UPDATE t1 SET a=444 WHERE a=333;
3684+UPDATE t1 SET a=333 WHERE a=444;
3685+UPDATE t1 SET a=444 WHERE a=333;
3686+UPDATE t1 SET a=333 WHERE a=444;
3687+
3688+connection con3;
3689+UPDATE t1 SET a=666 WHERE a=555;
3690+UPDATE t1 SET a=555 WHERE a=666;
3691+UPDATE t1 SET a=666 WHERE a=555;
3692+UPDATE t1 SET a=555 WHERE a=666;
3693+UPDATE t1 SET a=666 WHERE a=555;
3694+UPDATE t1 SET a=555 WHERE a=666;
3695+UPDATE t1 SET a=666 WHERE a=555;
3696+UPDATE t1 SET a=555 WHERE a=666;
3697+UPDATE t1 SET a=666 WHERE a=555;
3698+UPDATE t1 SET a=555 WHERE a=666;
3699+UPDATE t1 SET a=666 WHERE a=555;
3700+UPDATE t1 SET a=555 WHERE a=666;
3701+UPDATE t1 SET a=666 WHERE a=555;
3702+UPDATE t1 SET a=555 WHERE a=666;
3703+UPDATE t1 SET a=666 WHERE a=555;
3704+UPDATE t1 SET a=555 WHERE a=666;
3705+UPDATE t1 SET a=666 WHERE a=555;
3706+UPDATE t1 SET a=555 WHERE a=666;
3707+UPDATE t1 SET a=666 WHERE a=555;
3708+UPDATE t1 SET a=555 WHERE a=666;
3709+UPDATE t1 SET a=666 WHERE a=555;
3710+UPDATE t1 SET a=555 WHERE a=666;
3711+UPDATE t1 SET a=666 WHERE a=555;
3712+UPDATE t1 SET a=555 WHERE a=666;
3713+UPDATE t1 SET a=666 WHERE a=555;
3714+UPDATE t1 SET a=555 WHERE a=666;
3715+UPDATE t1 SET a=666 WHERE a=555;
3716+UPDATE t1 SET a=555 WHERE a=666;
3717+UPDATE t1 SET a=666 WHERE a=555;
3718+UPDATE t1 SET a=555 WHERE a=666;
3719+UPDATE t1 SET a=666 WHERE a=555;
3720+UPDATE t1 SET a=555 WHERE a=666;
3721+UPDATE t1 SET a=666 WHERE a=555;
3722+UPDATE t1 SET a=555 WHERE a=666;
3723+UPDATE t1 SET a=666 WHERE a=555;
3724+UPDATE t1 SET a=555 WHERE a=666;
3725+UPDATE t1 SET a=666 WHERE a=555;
3726+UPDATE t1 SET a=555 WHERE a=666;
3727+UPDATE t1 SET a=666 WHERE a=555;
3728+UPDATE t1 SET a=555 WHERE a=666;
3729+UPDATE t1 SET a=666 WHERE a=555;
3730+UPDATE t1 SET a=555 WHERE a=666;
3731+UPDATE t1 SET a=666 WHERE a=555;
3732+UPDATE t1 SET a=555 WHERE a=666;
3733+UPDATE t1 SET a=666 WHERE a=555;
3734+UPDATE t1 SET a=555 WHERE a=666;
3735+UPDATE t1 SET a=666 WHERE a=555;
3736+UPDATE t1 SET a=555 WHERE a=666;
3737+UPDATE t1 SET a=666 WHERE a=555;
3738+UPDATE t1 SET a=555 WHERE a=666;
3739+UPDATE t1 SET a=666 WHERE a=555;
3740+UPDATE t1 SET a=555 WHERE a=666;
3741+UPDATE t1 SET a=666 WHERE a=555;
3742+UPDATE t1 SET a=555 WHERE a=666;
3743+UPDATE t1 SET a=666 WHERE a=555;
3744+UPDATE t1 SET a=555 WHERE a=666;
3745+UPDATE t1 SET a=666 WHERE a=555;
3746+UPDATE t1 SET a=555 WHERE a=666;
3747+UPDATE t1 SET a=666 WHERE a=555;
3748+UPDATE t1 SET a=555 WHERE a=666;
3749+UPDATE t1 SET a=666 WHERE a=555;
3750+UPDATE t1 SET a=555 WHERE a=666;
3751+UPDATE t1 SET a=666 WHERE a=555;
3752+UPDATE t1 SET a=555 WHERE a=666;
3753+UPDATE t1 SET a=666 WHERE a=555;
3754+UPDATE t1 SET a=555 WHERE a=666;
3755+UPDATE t1 SET a=666 WHERE a=555;
3756+UPDATE t1 SET a=555 WHERE a=666;
3757+UPDATE t1 SET a=666 WHERE a=555;
3758+UPDATE t1 SET a=555 WHERE a=666;
3759+UPDATE t1 SET a=666 WHERE a=555;
3760+UPDATE t1 SET a=555 WHERE a=666;
3761+UPDATE t1 SET a=666 WHERE a=555;
3762+UPDATE t1 SET a=555 WHERE a=666;
3763+UPDATE t1 SET a=666 WHERE a=555;
3764+UPDATE t1 SET a=555 WHERE a=666;
3765+UPDATE t1 SET a=666 WHERE a=555;
3766+UPDATE t1 SET a=555 WHERE a=666;
3767+UPDATE t1 SET a=666 WHERE a=555;
3768+UPDATE t1 SET a=555 WHERE a=666;
3769+UPDATE t1 SET a=666 WHERE a=555;
3770+UPDATE t1 SET a=555 WHERE a=666;
3771+UPDATE t1 SET a=666 WHERE a=555;
3772+UPDATE t1 SET a=555 WHERE a=666;
3773+UPDATE t1 SET a=666 WHERE a=555;
3774+UPDATE t1 SET a=555 WHERE a=666;
3775+UPDATE t1 SET a=666 WHERE a=555;
3776+UPDATE t1 SET a=555 WHERE a=666;
3777+UPDATE t1 SET a=666 WHERE a=555;
3778+UPDATE t1 SET a=555 WHERE a=666;
3779+UPDATE t1 SET a=666 WHERE a=555;
3780+UPDATE t1 SET a=555 WHERE a=666;
3781+UPDATE t1 SET a=666 WHERE a=555;
3782+UPDATE t1 SET a=555 WHERE a=666;
3783+UPDATE t1 SET a=666 WHERE a=555;
3784+UPDATE t1 SET a=555 WHERE a=666;
3785+UPDATE t1 SET a=666 WHERE a=555;
3786+UPDATE t1 SET a=555 WHERE a=666;
3787+UPDATE t1 SET a=666 WHERE a=555;
3788+UPDATE t1 SET a=555 WHERE a=666;
3789+UPDATE t1 SET a=666 WHERE a=555;
3790+UPDATE t1 SET a=555 WHERE a=666;
3791+UPDATE t1 SET a=666 WHERE a=555;
3792+UPDATE t1 SET a=555 WHERE a=666;
3793+
3794+connection con4;
3795+UPDATE t1 SET a=888 WHERE a=777;
3796+UPDATE t1 SET a=777 WHERE a=888;
3797+UPDATE t1 SET a=888 WHERE a=777;
3798+UPDATE t1 SET a=777 WHERE a=888;
3799+UPDATE t1 SET a=888 WHERE a=777;
3800+UPDATE t1 SET a=777 WHERE a=888;
3801+UPDATE t1 SET a=888 WHERE a=777;
3802+UPDATE t1 SET a=777 WHERE a=888;
3803+UPDATE t1 SET a=888 WHERE a=777;
3804+UPDATE t1 SET a=777 WHERE a=888;
3805+UPDATE t1 SET a=888 WHERE a=777;
3806+UPDATE t1 SET a=777 WHERE a=888;
3807+UPDATE t1 SET a=888 WHERE a=777;
3808+UPDATE t1 SET a=777 WHERE a=888;
3809+UPDATE t1 SET a=888 WHERE a=777;
3810+UPDATE t1 SET a=777 WHERE a=888;
3811+UPDATE t1 SET a=888 WHERE a=777;
3812+UPDATE t1 SET a=777 WHERE a=888;
3813+UPDATE t1 SET a=888 WHERE a=777;
3814+UPDATE t1 SET a=777 WHERE a=888;
3815+UPDATE t1 SET a=888 WHERE a=777;
3816+UPDATE t1 SET a=777 WHERE a=888;
3817+UPDATE t1 SET a=888 WHERE a=777;
3818+UPDATE t1 SET a=777 WHERE a=888;
3819+UPDATE t1 SET a=888 WHERE a=777;
3820+UPDATE t1 SET a=777 WHERE a=888;
3821+UPDATE t1 SET a=888 WHERE a=777;
3822+UPDATE t1 SET a=777 WHERE a=888;
3823+UPDATE t1 SET a=888 WHERE a=777;
3824+UPDATE t1 SET a=777 WHERE a=888;
3825+UPDATE t1 SET a=888 WHERE a=777;
3826+UPDATE t1 SET a=777 WHERE a=888;
3827+UPDATE t1 SET a=888 WHERE a=777;
3828+UPDATE t1 SET a=777 WHERE a=888;
3829+UPDATE t1 SET a=888 WHERE a=777;
3830+UPDATE t1 SET a=777 WHERE a=888;
3831+UPDATE t1 SET a=888 WHERE a=777;
3832+UPDATE t1 SET a=777 WHERE a=888;
3833+UPDATE t1 SET a=888 WHERE a=777;
3834+UPDATE t1 SET a=777 WHERE a=888;
3835+UPDATE t1 SET a=888 WHERE a=777;
3836+UPDATE t1 SET a=777 WHERE a=888;
3837+UPDATE t1 SET a=888 WHERE a=777;
3838+UPDATE t1 SET a=777 WHERE a=888;
3839+UPDATE t1 SET a=888 WHERE a=777;
3840+UPDATE t1 SET a=777 WHERE a=888;
3841+UPDATE t1 SET a=888 WHERE a=777;
3842+UPDATE t1 SET a=777 WHERE a=888;
3843+UPDATE t1 SET a=888 WHERE a=777;
3844+UPDATE t1 SET a=777 WHERE a=888;
3845+UPDATE t1 SET a=888 WHERE a=777;
3846+UPDATE t1 SET a=777 WHERE a=888;
3847+UPDATE t1 SET a=888 WHERE a=777;
3848+UPDATE t1 SET a=777 WHERE a=888;
3849+UPDATE t1 SET a=888 WHERE a=777;
3850+UPDATE t1 SET a=777 WHERE a=888;
3851+UPDATE t1 SET a=888 WHERE a=777;
3852+UPDATE t1 SET a=777 WHERE a=888;
3853+UPDATE t1 SET a=888 WHERE a=777;
3854+UPDATE t1 SET a=777 WHERE a=888;
3855+UPDATE t1 SET a=888 WHERE a=777;
3856+UPDATE t1 SET a=777 WHERE a=888;
3857+UPDATE t1 SET a=888 WHERE a=777;
3858+UPDATE t1 SET a=777 WHERE a=888;
3859+UPDATE t1 SET a=888 WHERE a=777;
3860+UPDATE t1 SET a=777 WHERE a=888;
3861+UPDATE t1 SET a=888 WHERE a=777;
3862+UPDATE t1 SET a=777 WHERE a=888;
3863+UPDATE t1 SET a=888 WHERE a=777;
3864+UPDATE t1 SET a=777 WHERE a=888;
3865+UPDATE t1 SET a=888 WHERE a=777;
3866+UPDATE t1 SET a=777 WHERE a=888;
3867+UPDATE t1 SET a=888 WHERE a=777;
3868+UPDATE t1 SET a=777 WHERE a=888;
3869+UPDATE t1 SET a=888 WHERE a=777;
3870+UPDATE t1 SET a=777 WHERE a=888;
3871+UPDATE t1 SET a=888 WHERE a=777;
3872+UPDATE t1 SET a=777 WHERE a=888;
3873+UPDATE t1 SET a=888 WHERE a=777;
3874+UPDATE t1 SET a=777 WHERE a=888;
3875+UPDATE t1 SET a=888 WHERE a=777;
3876+UPDATE t1 SET a=777 WHERE a=888;
3877+UPDATE t1 SET a=888 WHERE a=777;
3878+UPDATE t1 SET a=777 WHERE a=888;
3879+UPDATE t1 SET a=888 WHERE a=777;
3880+UPDATE t1 SET a=777 WHERE a=888;
3881+UPDATE t1 SET a=888 WHERE a=777;
3882+UPDATE t1 SET a=777 WHERE a=888;
3883+UPDATE t1 SET a=888 WHERE a=777;
3884+UPDATE t1 SET a=777 WHERE a=888;
3885+UPDATE t1 SET a=888 WHERE a=777;
3886+UPDATE t1 SET a=777 WHERE a=888;
3887+UPDATE t1 SET a=888 WHERE a=777;
3888+UPDATE t1 SET a=777 WHERE a=888;
3889+UPDATE t1 SET a=888 WHERE a=777;
3890+UPDATE t1 SET a=777 WHERE a=888;
3891+UPDATE t1 SET a=888 WHERE a=777;
3892+UPDATE t1 SET a=777 WHERE a=888;
3893+UPDATE t1 SET a=888 WHERE a=777;
3894+UPDATE t1 SET a=777 WHERE a=888;
3895+UPDATE t1 SET a=888 WHERE a=777;
3896+UPDATE t1 SET a=777 WHERE a=888;
3897+
3898+connection default;
3899+disconnect con1;
3900+disconnect con2;
3901+disconnect con3;
3902+disconnect con4;
3903+
3904+SELECT * FROM t1 ORDER BY a;
3905+
3906+DROP TABLE t1;
3907
3908=== added file 'plugin/filesystem_engine/tests/t/rnd_pos-master.opt'
3909--- plugin/filesystem_engine/tests/t/rnd_pos-master.opt 1970-01-01 00:00:00 +0000
3910+++ plugin/filesystem_engine/tests/t/rnd_pos-master.opt 2010-07-30 13:27:46 +0000
3911@@ -0,0 +1,1 @@
3912+--plugin_add=filesystem_engine
3913
3914=== added file 'plugin/filesystem_engine/tests/t/rnd_pos.data'
3915=== added file 'plugin/filesystem_engine/tests/t/rnd_pos.test'
3916--- plugin/filesystem_engine/tests/t/rnd_pos.test 1970-01-01 00:00:00 +0000
3917+++ plugin/filesystem_engine/tests/t/rnd_pos.test 2010-07-30 13:27:46 +0000
3918@@ -0,0 +1,28 @@
3919+#
3920+# borrowed from embbedded innodb test suite
3921+#
3922+
3923+--disable_warnings
3924+DROP TABLE IF EXISTS t1;
3925+--enable_warnings
3926+
3927+CREATE TABLE t1 (
3928+ aufnr VARCHAR(12) NOT NULL DEFAULT '',
3929+ plnfl VARCHAR(6) NOT NULL DEFAULT '',
3930+ vornr VARCHAR(4) NOT NULL DEFAULT '',
3931+ xstatus_vor INT NOT NULL DEFAULT '0'
3932+) ENGINE=FILESYSTEM,FILE="../filesystem_ln/rnd_pos.data";
3933+
3934+DELETE FROM t1;
3935+
3936+INSERT INTO t1 VALUES ('40004712','000001','0010',9);
3937+INSERT INTO t1 VALUES ('40004712','000001','0020',0);
3938+
3939+UPDATE t1 SET t1.xstatus_vor = Greatest(t1.xstatus_vor,1) WHERE t1.aufnr =
3940+"40004712" AND t1.plnfl = "000001" AND t1.vornr > "0010" ORDER BY t1.vornr
3941+ASC LIMIT 1;
3942+
3943+SELECT * FROM t1;
3944+
3945+DELETE FROM t1;
3946+DROP TABLE t1;
3947
3948=== added file 'plugin/filesystem_engine/tests/t/select_big_file-master.opt'
3949--- plugin/filesystem_engine/tests/t/select_big_file-master.opt 1970-01-01 00:00:00 +0000
3950+++ plugin/filesystem_engine/tests/t/select_big_file-master.opt 2010-07-30 13:27:46 +0000
3951@@ -0,0 +1,1 @@
3952+--plugin_add=filesystem_engine
3953
3954=== added file 'plugin/filesystem_engine/tests/t/select_big_file.data'
3955--- plugin/filesystem_engine/tests/t/select_big_file.data 1970-01-01 00:00:00 +0000
3956+++ plugin/filesystem_engine/tests/t/select_big_file.data 2010-07-30 13:27:46 +0000
3957@@ -0,0 +1,1000 @@
3958+192 9.4 jpBjgUdnwLxojNxvoQFX
3959+618 9.60 LSkNQAZjODwYvOYUeAVb
3960+847 2.60 yphkuCaGsgbReRQTcUob
3961+814 3.25 rJDEnFNRTVftDpWPLeRa
3962+571 4.84 bjQkbVIPlNmlHpKvDBVv
3963+292 5.6 ikfinRYRKPIjJsjNXtGe
3964+736 6.34 NxSIHnLbJEndkqmwZFPF
3965+776 2.97 YhdGuHgspSDfPZfeSHDs
3966+693 2.51 IRVxHgPmpDZDzVWReFRK
3967+27 3.27 gtAvpxIwXldqKYADhkna
3968+592 5.54 CEuIPODTitAOYqEQusEv
3969+59 4.34 PJSVLGMjcRyqRdffDeMk
3970+108 4.6 HlopFPmGpvJjdmtSlcmJ
3971+183 4.57 KqHsxxrIUHTkEVHUmJUa
3972+799 0.88 iARALomncGlwqWlGDfvu
3973+34 2.6 qKUfyEozvawQfNySJoqF
3974+622 3.31 tfdGYDefcGYveIwEgIzU
3975+35 8.99 oCnDHfJLNVTcysrBRXBY
3976+765 9.17 aUQUhRRYTMbDqMpLndwe
3977+77 7.3 emYjkJPwamuIrPPbrzQQ
3978+608 1.30 GYracqTOoUAsKQyhyrTv
3979+71 9.92 wgFQfoXxyonAlQJfruiZ
3980+480 9.89 vzwhdoBgcjgADPxWfRmA
3981+996 3.74 nQggLzdKdXkFCjWBCPbj
3982+765 2.74 DPXTTBcNawKyiAgthVVh
3983+252 7.47 kSeWSMDVpMiWJQRJPcdH
3984+195 9.49 NgCBvAmiGRYvooUImjPq
3985+749 1.66 mhChOLdNCIkWwdxkAwYo
3986+925 5.90 BpfNtOtlZQzVTFCVXryN
3987+898 8.92 SExwIoHiQyUJumKmnvKg
3988+62 1.75 qhpdevbKjgqZMrgbKMEc
3989+419 8.68 zlBKEOoGGNPAQHuRWuAh
3990+538 1.50 ZgfSjbeWkAPWvQHYwteg
3991+297 7.2 vTPAUlmqQBOnBkvSitAT
3992+612 4.30 VzhSsYdmdsAmYmxaCANx
3993+485 0.26 RQxqgQpyrlLmKtwIyvAC
3994+984 8.81 RIYiiQQTMuxEPDFrTtwt
3995+275 9.39 EjyENeSSzHpKzFuFUVwh
3996+709 1.66 VHVcUOsrTBxBYwZylLSy
3997+314 3.80 kTajmgdMehDoMHBUpiIo
3998+261 3.58 HddjywgLGBnGzFSGNClc
3999+576 8.11 RrqwMWPwzKEEneiaLMJs
4000+339 3.32 hkzWfriTUKqcjHrgzgzE
4001+204 8.75 EkKdLmvJaYhbuZSXcvdC
4002+569 7.10 jOwhQZpHMCOqHxEmMdFM
4003+563 2.96 aWOcwWfOXnabektPGgKM
4004+221 6.32 EjczZetUKWHOPFKzedTk
4005+64 4.40 oLEjGHTKkVHgAzuDZWTi
4006+990 3.32 uIbcYwWgYrVFJOHcaJNl
4007+706 9.72 hRFpTOsHmnTaPWWIyNpv
4008+21 3.95 tseEKNEUwtplsFPxQABr
4009+256 1.70 uaVrtCMWUGpyndDouJpc
4010+193 3.7 wulxTHaLUJWHZncPfdyu
4011+326 6.88 ATIxHVhtJxDzCxKCkJVO
4012+532 0.88 jGxbPAFdGbIofquyrqEg
4013+970 4.47 EJsLdVXEaVPSXHqjsfPz
4014+642 3.96 nRHrrKhutsNspLrLlFPN
4015+741 0.74 gmPcoeQZQLzvPiFEJQsm
4016+548 7.10 jPUBesAPDCXOExMUDAsU
4017+691 2.21 mWujjRogVFQJaClsMeHj
4018+698 7.29 DypRHqMfdBYLWLPiyhyL
4019+748 9.81 TabdxNOFnMZGsyxSLvmV
4020+888 0.35 xWvAwZWBZnMQWUsySaHg
4021+328 1.6 JxVdEHzpSVCEEyuDRmPf
4022+781 8.15 zhdERXUSBYSqsSXiRjJs
4023+418 4.33 ymBkxrlFulEGWsHCgfFz
4024+605 7.64 uHgZctYWEUcwLmnKottg
4025+568 1.97 mMNkVHoXdCxgRgNaLkTO
4026+391 0.71 uclHEKTLUXLBLADIgSpy
4027+322 7.40 ehHcEKwmkBzunaKHRlBK
4028+735 2.72 vBQxKqICfEOcRBnOLPRr
4029+977 5.85 vxWkZBLAIOMZFBQWBPRz
4030+655 1.38 ixdZfjUlvvYrrPHmtcbb
4031+793 1.55 DLcvRJKRjKaFMMCpbLVR
4032+42 7.76 EdQOUwzQItBPmvvctVZx
4033+403 5.63 aAEmSBQirVlkRZKGuPZo
4034+694 6.25 dNNzAvBWUZubaMjhawVk
4035+96 7.6 WvCodyAPgaureBHuNSOI
4036+655 7.34 LIQWyyTFoKsgBVIlMOip
4037+749 3.26 otEImKHWdviBWMHnKnAy
4038+392 5.70 eKTgSPSaFHlBJWhUsYcQ
4039+229 3.51 RSCUAZXTpnksXIIyMNqn
4040+60 3.32 heoxppRRMqVjnwLTIkzM
4041+59 4.66 shFimshNjoBhtiyXHkeu
4042+685 4.61 WpjzucNyNnbsYMcOHjbl
4043+906 1.61 AMMYTKlHMcxrxEWzcEgl
4044+452 1.17 hvIYeVQxRVjLGcMIIPlq
4045+776 5.96 kbrrFqzVHBhfCeGRAidR
4046+171 5.30 XIwmcpjETarpXQfWeCsf
4047+889 5.18 OARTITueckClWEhGnFfG
4048+209 6.95 yuAVMcZLBZOZnuqDJXtq
4049+228 1.15 wzkFOcmpmkGvKfrfrMqJ
4050+348 1.58 CMkNbteFRyBnKcZElcZT
4051+482 1.60 XBbtwyZJSINdDKJPFBLh
4052+549 6.25 POTjzYGerRZoSBXawlMW
4053+482 0.38 cEseEtPoLnbEGCvmLSKC
4054+311 9.99 DXzdcEyOaoQdemrFiWkb
4055+978 8.49 gZjBebGdmOjoeJsgQAYx
4056+675 8.76 XRaCqXGtiKmmTccyHFpV
4057+343 4.98 THxNBaZxylAvUxgUiVfb
4058+595 8.46 ohLRcfIjnWVYOrgWProB
4059+237 5.11 HTYrsiAjtvhWzIJdLMSs
4060+197 0.66 zqTBbbgaOZcjpNRcNipQ
4061+504 7.50 aWkDGoCMpwTMccGwiSia
4062+540 7.30 jwouGMVrewbgUiQMCtKH
4063+882 7.16 xxOjEZwHEUNmrrQpdwhl
4064+853 3.92 QdOAVhabDkUuaQBLXDoE
4065+433 7.72 dZtxCYRmZcGgdbKvagop
4066+643 0.19 jIjfjbYdFXEWlXZlnlWs
4067+757 2.30 IikDjuRNvdLPttddkKjO
4068+800 9.95 HnzCoSOyDuEsvfyckmHS
4069+428 9.78 kTTmhNmpFkjVluKWHvtx
4070+189 7.70 DBeQVZMalbmhVEsgYsbq
4071+30 1.22 aKCRJXmPebvzUaQHIBHP
4072+776 7.43 SrwJlmQaJTnSyRbmAWHO
4073+603 5.23 QDUPvENiqcHWRmTfxaDe
4074+26 1.24 UolXjCmCIQiSllznooXy
4075+221 2.66 GnFWlqKKyuCdWYXkbCqt
4076+108 4.20 pAnYwmpkSwOZRgwiYVWL
4077+175 6.51 opEldPFkpCDsVSKRcZaW
4078+324 2.71 stiTcwAYdZxbxZILylHo
4079+280 5.37 ZYtykbYUBCLALVJFkirF
4080+798 2.47 xYgSFtzerVqucvqIvEGr
4081+897 3.17 gGEkYIvCrpIiQTzkJxxV
4082+62 1.25 gGOidOOuWHbezVnTEWIq
4083+620 3.0 yYdLZxIbTLUnJgQxDUmG
4084+502 3.24 gjUyXarzITiqkNUPePvL
4085+70 5.40 NPnxdxhkOfnKjzpJNsiU
4086+204 9.11 KrJvPSsEdFSqLiXuxQiA
4087+456 7.34 OXbMZUKsUSAZbOVPQIBn
4088+975 7.89 kCwlsRqUGAytpCAGcxwN
4089+929 3.66 NunymCZUGzUBfhmtWeNR
4090+991 7.49 XPVKOhSsRghDcjftqkyS
4091+437 0.51 UAXgfvYvZVyDffmqhBIS
4092+440 9.25 sXzGZDTZgJAAWgqUAQTf
4093+940 8.25 uKjfbnoyNyXCZvsERros
4094+449 0.54 DcaJRKbcNwRwJLxKLhZf
4095+673 1.64 AUnDLAhoyAhmYZnIRbhw
4096+926 3.25 PWzbZhFqMyeCMWrLvVZv
4097+807 5.77 NvfsIyaqQAkvzttOVkMv
4098+485 7.85 YOglmchMYUvpPVLrfbSJ
4099+48 6.88 bvTBWQvQKSDIeZOCWCFO
4100+175 7.96 xmAknBEqJuviUaNxpljS
4101+633 1.90 DvflcynsTEHwPBwOFKBN
4102+92 6.50 ebZCXpoUWoVynKwUFIZn
4103+498 2.13 dWSNUAKKzNRSmBIACmBE
4104+151 0.34 wGiOfpmvKhvFPZxEADbR
4105+548 0.12 HMEBWQahnDjYRbcsiBWU
4106+711 3.16 cVbbfaLumCYjanAKrohP
4107+746 3.48 dZlqLnbCyPYlFyBctmdk
4108+597 4.24 BNLzfOVkAgXHMpjcqIFq
4109+399 0.36 qfprAaaoVnGgdczINYFm
4110+546 9.43 iTGNNVCPUrwkYbbadyKW
4111+594 9.62 YkiepbdHTqBOGMaVutQh
4112+371 7.81 MYLwxhHhjfVqSrozPlvR
4113+309 3.56 NRMiGLKDjAYmMIiwzJhM
4114+297 8.98 KEZjoQOGBHyZptWvcShi
4115+119 4.75 vIlqzrkTNdmwHVyxLzCG
4116+791 9.86 cBCiAmKLMiJyWzfyOrQb
4117+499 4.54 yuIpPSIGjBKmmpjgtsAS
4118+601 6.95 qvikjiMrezxQIQnZYKqx
4119+171 6.61 IrNSAEhVPmGuopQhsiGe
4120+137 7.68 RbEbHNMcCFyHHtgxbwru
4121+470 1.58 DJzSuYlqXdvjJMPGwvAD
4122+981 1.36 YXthDiWzZKmTFaVHXIvM
4123+449 6.95 NBzYrdifSJvroerfjCrx
4124+816 7.46 bGqzWGlbYVCsmBQnqeFn
4125+892 1.57 lKPDCgUjWXGrXoTmqofn
4126+796 0.38 hhnhhuUcZYFSXodkYozq
4127+849 9.65 pQkmTlynZGroEMhQqeFV
4128+978 8.22 tSRSfFdnvYJzIUCXvffS
4129+817 1.30 ivnVtbbzIWzRdHWrrFNS
4130+92 4.87 nLVXqazvXeIuRYKpgEVw
4131+543 7.65 ytoZORdbOanKCaJnEoWx
4132+3 5.96 YHGQRnNBeHPFqScDQIXb
4133+644 7.62 auOOpsagsSMpXIxvNcuT
4134+177 6.19 kKckdAjWPaeNfbFeylcA
4135+253 6.34 xBuVMpdAWoJLXHohZQaj
4136+54 2.55 ckBdUuXMWvOmUMnjtQnY
4137+240 9.70 QxRyBbBeFehndsCGDzQg
4138+313 5.29 gfQIQiJDpJxbASsPeaYn
4139+735 1.67 olIKdcfamVrSuTFQFMIc
4140+103 8.69 zvQtXyFOIMryLyDXUehS
4141+295 6.40 nyEPnztubhxQBSMOqvfF
4142+502 7.19 qAEFhiNyVNNQaUYRNUEg
4143+513 7.34 wwAXuDbQBjFVZjsbZqNK
4144+848 0.57 xguKpJPjMiZMTsymbcPo
4145+751 5.94 jTiBWgYHnXNkzmlXmHuq
4146+836 9.58 CnPTfaxPvUCCdRMymioa
4147+455 2.69 pejDtFBUxPIxKKhMJUWs
4148+861 0.22 rnWsdSZXNAuPccpGfjNU
4149+26 7.61 ZzRzeEKyIOVTkWCYSYZF
4150+54 0.65 gtXbYWuFVKvZjnCrJUAB
4151+779 2.75 guVKPZxSmxGYMXfypSFK
4152+159 3.93 AKpUxqRGiThzoxQQRROp
4153+917 6.87 IGnKppqKLyvMleSpohGY
4154+316 0.0 FMzIEKNXGeWgHmytBqwk
4155+428 1.45 WnBnkAegeZkxeqCwmUJj
4156+290 5.5 nWuIHEhhpvGEQqXIFyLO
4157+948 9.94 UivnZfMKAibZsjCRCXiW
4158+590 1.2 FvVXEdLxGPhErzVOXwWO
4159+303 0.35 syxsPFTZcZfqsxSQuHOK
4160+931 7.46 AXzLovMIsDZVnFSoLnzf
4161+737 6.62 YfnLlPXRMQxAyZCUaJPP
4162+259 3.96 dxPNIzgfZOKZFFdzLQJj
4163+544 4.27 JjpUuBRXnPbNrMLaFoAU
4164+807 6.64 hFSLCBZZmDoOzFjQnOMa
4165+437 9.21 slnNrajpGjHmrPEDjyLv
4166+487 3.44 zgBROXScbWoDFYwDrZZq
4167+649 1.22 MyVRplRDvwckcEtcnSwL
4168+755 5.11 KUQyMRwRuXVsnuxApTBB
4169+751 6.26 MVbpeNaiKKOWYzsApugb
4170+871 9.90 RHqbdbSECFpzqKBBQXDY
4171+706 9.4 QMuhdWuocukxUQvtLeHA
4172+941 7.35 bffBwXuTwyizVNyVlNAP
4173+178 5.53 AGhDovrxSzyBBTylixsz
4174+667 9.52 dIodUNdnPEOaluUaaqQq
4175+127 0.79 nNrfQxaHaJeXunrbldTW
4176+451 9.25 ujihJXZfnOueOdvPXSJO
4177+620 5.83 cooShIhtOkOBrKudjGaR
4178+240 8.31 oecWoiuhzPzuwOgXeyQG
4179+38 0.67 jrvinjtyLPPcfnvttKKW
4180+271 3.74 DbOuyotNTMTEexjZdMHE
4181+313 1.73 teXwnvclJHkCiAhJhLlu
4182+321 1.54 cRUfRNHbDdoVhZoqdIOj
4183+621 6.16 YiNFPRBJVUgsnzLRuloF
4184+369 1.43 slqjryaHUVDJhgwJASXl
4185+945 2.70 sLcNjEjGvzWDmWBLiaLh
4186+354 7.41 fudoFUiNtacDMhXApenm
4187+189 5.62 xSZfGwrdPjmoQRhmYDcX
4188+234 6.20 qMkPxrvYITMBVEYhznpF
4189+749 2.32 AVoZwcBZMLgLWiOHTflR
4190+866 0.61 nKZVmVoOMhxAFntgqFkT
4191+785 3.48 MPDRmXTvUXuqqjESKtSN
4192+608 9.92 ZzRTvbcwyQfIwuMzBXfs
4193+807 2.25 fUjmfEGNWHIQGrPaXEye
4194+720 1.56 NVAaIhYeHhneuljfohyp
4195+683 3.12 UVKsAEIpVJmTfhURNwgW
4196+659 5.41 GYkNtAnHDwqmxwffTDoe
4197+656 6.69 wjLBrxtwmuRaJtMMoldU
4198+900 5.13 ScAgZTpdXBxbeeJwGXDN
4199+489 7.96 IbNiaXivMkITJhoTTWPk
4200+437 0.20 vtXWIRaTgkFBnBfPLGFu
4201+535 2.22 NakPyqNTyeqRLRvNbmed
4202+761 6.2 sBwOoEdEGlNoMUqdlKtb
4203+780 5.62 OublVKVZwhTLAoXxPnXX
4204+529 3.73 LCmyRbilZVyeBNEoSNyw
4205+502 6.70 RYvkcCNTBvoUrpZBRDPA
4206+487 0.78 qnVDgcFTuKhBrngvWFYF
4207+579 4.53 kRHWQhoFFBhNVlPBjxXH
4208+797 1.55 ZuwmgmLGVdvarBRaprWV
4209+861 4.78 FMhjmagLzxhTmZrnbibL
4210+652 2.32 InRhNqlnTiHTcrVmBMwE
4211+870 1.41 lFhMOGAaleKyYUToNejF
4212+246 6.3 LstfbtAFDQCWSdIEOuiL
4213+742 4.72 RZmyfVBggxHDeuskAIeO
4214+888 6.66 CJWAxISMCUKavFGIRyIi
4215+377 1.96 xVqkyBNLYUkMYdwpAgEB
4216+347 0.16 MiOXVOagqkLSTzYIeSra
4217+873 9.93 QwyZZFOkUHXlvqmajTuU
4218+866 0.45 QfynYftmOdOhNYZABCfo
4219+720 0.7 XjNbriAhLUwcRijUzwZa
4220+21 8.90 cEFeZfJHGEEYHGDGDDzt
4221+842 5.53 NQrkWAnXfNjmcPapfnBZ
4222+395 8.26 WoObGTrswUXVocMpWzam
4223+805 7.34 wkCPGHHoroEkDDGXzcuo
4224+945 2.29 xgJvJcfIQmKDuaZpzqIY
4225+715 5.65 xzzVjlborTJLevAptgeT
4226+714 7.96 FxxJYhazQxFvKSlXXfLO
4227+625 8.31 yutfvCmOfLowqxqjuMUK
4228+573 9.29 EEUtQpLEUcJMBiYBGsXx
4229+363 8.8 ToacrTKslmPSEuRQCJwv
4230+889 2.66 yklInCiTlxnHMHlEXDQl
4231+628 5.17 UTEagZGvGZfHOlDuXUKH
4232+643 3.23 jcCJJeRumgaDFqcosgLJ
4233+646 5.12 vVnIjqpMfSHLitIsfqMg
4234+886 0.38 stfEWcbuWNitgLtTtigQ
4235+363 5.93 OCMMpnvtEjbFuLgAEtkU
4236+236 2.89 txucVxohWxrnUUDEMZwk
4237+70 9.75 DXNLUUtrYxmkReokvALc
4238+572 5.71 XeVYLrueWGiQGebWUwkW
4239+434 2.10 xMTykKCEZnUmYNNOgSih
4240+444 0.47 axDOmwdUffipyarAtIJu
4241+454 8.23 lYuKfhOKtkPcDyaZdbmw
4242+740 9.54 kUFtOgiBRUPnhLwwrgUW
4243+209 2.41 JTgAfdoVfSFjTGutjAvH
4244+899 3.19 eTGGqVkoDcqtTnkahxHj
4245+829 3.8 OvkAywzARPbfqTPHMEXz
4246+685 3.22 lmFitDYHTZambPCWjllF
4247+578 7.21 MMpgfEfCkQHJtagEhoUx
4248+220 3.8 JEHCPrJeyxXLhdtXGWcu
4249+947 6.28 dTtJKhgwcBnipuWYxYEv
4250+54 8.83 CHsmJurywDSXAsymAqOw
4251+12 8.38 XISWvYQVeZocSmIrQNyj
4252+577 0.34 SSjCteOgDkQPwJofWEEU
4253+771 3.37 LSgNuOQFoetwCcCDtIxk
4254+656 2.14 adRsvhoZHvTfLTyLqvRF
4255+896 7.34 CyXBvEQSXNPNejYrjWOg
4256+980 0.14 VClbFxOwvvhMxJiSoHgv
4257+454 8.82 UGbZCbTYmxYfaNRvxmiZ
4258+892 1.56 WQdRYorTGjnXFWlvrxgX
4259+649 8.77 BuREkjbviHzhtVvaMswT
4260+299 2.92 WMbmvpVWVrbMQNvnVuYb
4261+866 5.15 ttVBDkjMAMBdCgbkTMTp
4262+771 7.37 bWSUWyErakTnbDULvkRJ
4263+748 8.59 LiodrknBJVVqOYTslJRE
4264+337 1.88 GbplVMxejUlPfbxiMhmj
4265+532 8.1 yeraTbSrtHHbyHnLnjvJ
4266+860 1.35 qfXroMPpihOyFNlbjdRa
4267+746 5.88 xwarOKMtEUqPGIDuWVbW
4268+572 2.34 ysIFbYbpyVngDNdscNzE
4269+693 5.56 sgWzpVDsrPedZaiuBvan
4270+736 8.3 JAGQGSmeBgmMrRxLLzJi
4271+411 6.69 eUMQMFlztnCXJnMhkXXV
4272+605 8.43 mDmgFeyVznUDAlSEFmzX
4273+882 0.77 gUJmprHdPOvzvQNKNDdV
4274+136 0.35 vyoNduORlklNvHjZtoCv
4275+763 9.96 RaJzaXnEfOYnReWFoyIY
4276+361 4.29 klsePKOxmWGBTXZaDtPi
4277+281 4.27 LqhRhVMFCxzmbvcNtOrq
4278+460 4.46 sSSwfpHvdoVutckHazUt
4279+621 0.40 AJfWbYHkYustCMIsEvFw
4280+44 1.49 ymzIqzGZPxTUiiAotMhC
4281+532 8.4 DiZFMlbWozhtkbnBpsMe
4282+974 6.36 BqPaSfOGYlmrWSDuzOVz
4283+257 2.98 vUprKOpULQnKAulAZpGb
4284+290 8.88 kXjaEAVNSfrjqyXuNhtF
4285+478 4.48 kweRAIdsBQtzcYjPpRXl
4286+432 8.19 ASvAPuQuqRIZDmvTJRBd
4287+12 1.74 WWIGjzlRZxbeZRmhdnhi
4288+944 5.85 mdUlAggcHyZWubrvhJwR
4289+724 5.29 ryHSuZWpITFwcyKWPoDa
4290+813 6.86 NhLEYhuQTTCVMKBNyEED
4291+568 8.99 FZiCwFYLNaMyrFxhqZJd
4292+560 8.64 eZOVPGpmTmfmMrdUCcLD
4293+279 7.74 ZfclbaBlhQmVvtPYOzWW
4294+151 2.48 dyBMcKxXNQkYNsmuSJtV
4295+281 1.45 FNQFBFHaMuooWYmgdSkw
4296+945 6.30 DZzoAHcKvhNrDendccIk
4297+209 2.52 nnBfHEVwRbVHQcMZWUjG
4298+770 5.97 GtdxrRhaMZKOHSepPwsv
4299+163 8.89 QyvjtJrpZpUjNUvrJeXB
4300+325 7.43 PfKbnXWnNDidiZWNpWft
4301+554 1.98 nRDXTUeiHSTwEjdZfMxn
4302+372 3.16 FttOhHsHiZgZJLqfVdBN
4303+931 0.83 fFCQoWnDdpeZlwbuwwWV
4304+382 9.7 mXsRKrHNpGMwoZRhJTuI
4305+696 0.70 OVFQBbDOjwmcGPvdRIqX
4306+810 3.15 KMiKawUCvImQAFLHVGYR
4307+23 4.53 UAqVGWUfVuoMZjVeknNY
4308+406 1.74 WNRrxNYESOaonJgVqBgc
4309+343 8.34 omnvEWQmSVklsJJpSqYw
4310+966 5.48 AZzbEwxGVItDLBMoLHfE
4311+448 4.23 BGBsISXvvxYCfNEzBYbG
4312+495 7.68 nzvLWgwuUYrskJiTarex
4313+338 9.50 HYrPfBaIEURguPWLwpGW
4314+562 5.77 OwDDTnSgGEGanAAFpIuk
4315+178 8.55 hgXeTKuJkPwUItJeaHuR
4316+234 2.53 SvVBGkFxRXqzXZQtPeFk
4317+566 7.91 UgtIXlzbAcDRyTuHYGyl
4318+165 5.13 RIRuMPSDAgODegLuHYtM
4319+473 0.59 VNahlMhbyNTpjbVspVuU
4320+918 4.68 PnKFhrrZFjBkIXpqAtyR
4321+126 1.6 JBcuGkhFlkIFUgIkjAvB
4322+4 5.90 AMnTFilyyQiOLxBvkZGA
4323+975 6.72 MzkWUUWzdLDtwISzNgpX
4324+430 7.59 FLYVcOWRCbIBztawYsSW
4325+86 6.71 JtEXDfmDuQFtPBOHgPNE
4326+224 2.70 EJowYiFEYrKVvAwSEpVG
4327+950 8.60 ZkRxwBNwbqVeXodSLrJb
4328+348 7.65 lFqwuSEruKeNzLGzWalK
4329+837 4.57 nlDzGGHykYZcqwTFnomR
4330+746 7.66 rDVPgehFbohxROiTjaGy
4331+603 9.53 oOdIjEKxmvfBjFuguiMZ
4332+591 6.11 YOWpmqtuRQoFLnLhyasJ
4333+73 2.77 pVJVLkRnwksBrTvALmrH
4334+339 7.1 GTOdZJxVlKKHEtBnoGrQ
4335+698 2.42 twClrIepXprGksUrGTbj
4336+821 8.92 LWAgApBUUiuszjRZbLcb
4337+227 9.11 JdDbFLSDUsBauYAciSrD
4338+255 9.56 pDjgONKekgxqTgdzTFcH
4339+794 4.66 iKLpSuRcGZuCfRHWBoDR
4340+235 3.36 lMFtQpAHvaqPSWcZpoas
4341+769 8.99 YdiTJnKaswltGNLuxvDQ
4342+430 0.73 arcmAZXkpyeotDfRyYPA
4343+788 9.17 okKxOdygEqXUeqsGcwRe
4344+563 0.93 nDnKCzxXjgVPctzeQOKg
4345+3 4.75 FzlYLMdjQTyTXLWKKNCB
4346+483 3.20 YixdiktWavAqoojjEtWf
4347+444 7.33 dBAJxPrDKUSGLgxAfVQv
4348+869 4.4 HltYNXLlSwXiwVpgBmDz
4349+725 9.63 ezuFHPAzKPfSKgYOBPFZ
4350+164 4.70 mWppbTXlNcvIAULGoktj
4351+200 1.51 GtTkJwsgvCnCuzqChotT
4352+942 3.36 NrdCmmzcntFdodBhfzsH
4353+736 0.2 URmRulmBtZYvTMvAwLBm
4354+0 6.90 wCpVrSqORejfCTisIlxk
4355+701 9.62 WjwEVffstqMHgMvAXiWe
4356+834 0.44 tmogwQMMcOBywnIQamVd
4357+819 9.50 ujtmbAoyYWcxaKBtsWIr
4358+957 2.43 yuNsZDnTUvYBsbnjKEai
4359+807 4.23 TdnQqmeRbziOXCKftSEH
4360+521 5.90 ElpNMUTDRUlyzTjcbstl
4361+314 8.14 pPsTWQuRUENWAWycvMos
4362+217 7.62 uYTHPCMyHacNbGIJdjlD
4363+626 7.86 KVvLVNeNllXwUkmQeIaV
4364+490 1.41 GLQixhqPsUIKwLQSLTBy
4365+838 8.25 lVUNCiPtoyRpFwJyrmyP
4366+607 9.20 FatUNtpyajGldFMawXEa
4367+162 2.36 unqFMicqtBhMNpoZoqQq
4368+310 1.49 CcJFouEtrrblvSeFCLkm
4369+10 5.22 aTuLxAJSrVZRqJkNZHry
4370+127 7.73 rzJYhFwSafZwVSXWBdLG
4371+750 8.4 VKcXOyaqczUEOqgTwxrf
4372+307 5.18 KNvOTEPzEjNCgASnslnP
4373+452 9.16 ubOLrsUNayFtfJzwSNae
4374+788 5.2 urcAAWBFuQVZqzzaAhwz
4375+86 2.42 WfXeFiKDcPblptymlSjM
4376+657 9.49 tTTGfzqPTLLoPvTksCAd
4377+362 3.98 IAEVbnwGSPOmyvJIlmTL
4378+129 9.34 XRmXHyjGvUjRyZuvsZDf
4379+787 9.6 GRcxDMxOiDkylniIDXiy
4380+919 0.23 XJDLPHpwZxjzmcXsKRUe
4381+624 5.54 abCXNSNiRDqhyJJqcCyQ
4382+67 2.33 cTDSPwJrthShnetFjxti
4383+838 2.89 SuqGHYfiuKNCggiRRqSh
4384+373 9.61 HFPFxDOHUvtAvJfvfMay
4385+559 1.85 JblTgGdfwEzNVIHBbdzy
4386+983 6.61 apUPvuSZDqrmzHQjrtzl
4387+850 8.3 GwOZbyHoxejRduSlSpiT
4388+955 3.90 aoQwDfqIblLIVwSqTGDN
4389+419 5.5 yXsNboLdXkWWfmhqDKIA
4390+881 4.18 FbagsovifdcFUqrkILOA
4391+97 5.25 FZyiaHPwrezjYNAArPfy
4392+161 0.11 zPoinwsgdRxXAyuVdDNJ
4393+241 7.84 LOLLKqdqpzfyWcdLXHKT
4394+824 0.24 doaLLQoyfHFQsTZqxyBx
4395+217 4.95 XXgktdeMhFEyeJwOebKQ
4396+150 6.39 JJmsIVQXoWpgfYjCxSaa
4397+508 1.75 GuwcWaoNaEZkQmTTAxeN
4398+108 2.34 IhNbBDnVirbjzMXzRevl
4399+595 7.66 SsUgYEgGeoyeplTRwzCo
4400+770 6.80 UfqwSLLnBKFaXlLKKrxT
4401+233 9.72 UnZMYddFVcZPPeXAImUS
4402+702 5.33 flGTAxeTnCqadOQtSnrW
4403+321 3.46 FdeSJuoilQFEnvPEeUTK
4404+414 5.32 ZdcWNHVDeChZApGIwZVj
4405+286 0.13 IsBLSOqofXnTkmdlYAje
4406+12 1.14 GWBGjxElgTtdyymPrYqL
4407+762 4.79 zKDtccjjTIefbRwTeojR
4408+640 2.33 bCtakLuWwVeywsKqrLdP
4409+872 0.61 TPznbeuhfEdJISxzOjjN
4410+736 0.72 huQFpeDjvjzdKYjPrCbO
4411+340 9.9 sXEvHgUlIxtFtIklyEUl
4412+730 5.89 clEIgBdirtYkgXsuryAH
4413+411 6.86 uBRGAuqkEBLQGWsDiUKl
4414+917 3.65 zZknJIJdXSlUCORrncWV
4415+190 6.28 yYSFfGMqzOuOokGoHvHu
4416+39 6.58 JCjrrHoXgELebNLFjOcS
4417+454 5.89 YpacUspejlbNMtmUbOpv
4418+749 7.8 EKJFAjLpGKeNbGtwsNil
4419+640 4.50 oBZwZUdLHdzbrGEcvxyI
4420+430 2.0 NTgyKmzIGwJfLXBWkRQt
4421+505 7.89 fGMbDIHOiZdxUVNISXXw
4422+880 2.19 ljKmhqeIjzljvsvemwZL
4423+430 5.46 RyoGyMzLxknNVczgnAot
4424+80 6.97 WWJrEgNboEpLkhuYHzvo
4425+729 2.35 oKFMPUHsXnpPWrWGAFfz
4426+644 0.79 ADmynCvscyBJsXmOCgoB
4427+20 0.93 LjrarLhooIjmHBrCWsbS
4428+749 2.32 QcWpVgStgSaohrEVMKUR
4429+904 4.23 vEptXOoXtCLyniMOtAYC
4430+397 9.42 FIiisBxhBecdrqtfjJSW
4431+115 8.47 ZiBMZVuaqFqhCtgoWuVF
4432+160 8.86 bYffCeoGSiiCNuTMagYg
4433+311 1.70 QtTIiQVFwrXBxYOFxTyE
4434+944 1.88 TEurBDMzyTJrDGCAzWBU
4435+782 6.70 bPPKaOQSwvtNKPETlBmo
4436+15 0.29 qgapCHoTDCoeoDkNuZbw
4437+770 1.85 qoRhigPWcPpYFqIJfzCH
4438+853 4.29 FouHQmvyPoXebZDtiByS
4439+739 5.23 lIscLaypkgzMmefRjgNH
4440+666 7.40 sAoneIUBaIXmCbdwomrP
4441+532 8.47 XlbTgxmdnBwwLFuSxCik
4442+603 7.76 gQooOPqPyORAlENfABgD
4443+74 8.5 UZhRAZpWgrvTOSvUpiFA
4444+174 8.17 lBJQcLsPjBPhwePTNBel
4445+151 6.46 AqAFTgnrVSZlatBNOYfh
4446+862 8.84 KxySyhemIiOwmAkDfWkp
4447+926 7.94 UIxlLySbnGwxGvUYdhdP
4448+786 3.16 JZDAyjGEjJcxlCnxxzzn
4449+229 7.60 zoYamVISryvfqUDFfets
4450+160 7.10 VmcKltBNFmsMKoXyCzCi
4451+39 4.53 PfKbQxoANxKZtBkeMHOq
4452+616 8.23 ogxAmPaHduqwtxTvLrjk
4453+511 6.63 klLlFnJIdDpvtHeeSdHW
4454+171 8.96 YdgLViqAdvzywmyBSiMm
4455+871 9.65 TExnBkPUoWKGfzZDpoyi
4456+113 3.14 OtgZXsfcBvLCdzMxBYst
4457+396 1.14 UmBYWTMYrAhprBqPAqAF
4458+977 9.77 gLPxyWjqzcJGhGODLFse
4459+919 1.1 twRSubVFtafDSEVnYrVt
4460+662 7.33 OeGjbkibAqrccNifLmrx
4461+754 6.44 TaUkvWHmNczbpEEwffUM
4462+722 7.40 eZdyfkMYvkGpHyvfwlUh
4463+460 5.9 iZhEJwWAZQnqSBYqiICd
4464+496 4.87 kwbzPhmKesfqoDjkjfBC
4465+181 2.50 jqILbPIsfiEPCMtAtfiq
4466+897 7.13 SlAqOFhFQXfQblbPzbrM
4467+348 4.81 hDQlBgznFGAcQVeCaFtd
4468+187 7.43 EYMObWOrWRDKgRNMsSzo
4469+934 5.43 rYwDFXPEdEqJOwDxxTjX
4470+181 5.37 ECwQivqQCZVrRtvqCAKV
4471+769 8.80 nIbSAyDSZteIKkfukVZl
4472+919 4.76 rvmAqHUPJvKnrpxmAPMj
4473+705 9.2 vBilNKhDnCkAcDXhCLDH
4474+447 6.53 xahXLjLkXvnplveQdgbP
4475+332 8.46 wdwZYxZtewyydyLnRyik
4476+512 3.65 OPPVCcCgOXtQDXVeWVTU
4477+973 2.51 zrvAepVJkFxAAXlsgNml
4478+316 9.48 ucywvQCUpuoKaAoIMpWx
4479+980 4.36 HySwAocfdnHmbLpvGIRj
4480+266 5.85 TeQhygiPHCPGrsyqaQnH
4481+685 2.46 gWWavAEzAOaWquajoWKT
4482+820 3.38 EUtmZqDBMGjGUXnWeBMA
4483+300 6.57 UbAkWmCyEYqTSTLLVrTM
4484+503 8.23 cQRgeVNqxhammMuGfggI
4485+923 9.27 ZNbFicrbGJdPtfzencEA
4486+804 9.84 dZpWhBdTnFwcZDSkveSO
4487+386 8.23 kbQuVoFbDQEIBGecNejk
4488+53 0.83 ntAZekjoyZSqwnWPzthC
4489+819 2.74 TASFSozJXEFyRkquhrrj
4490+563 8.68 OfDoFXKcZtHtKjhnzCyP
4491+489 5.30 lwNuDiWhTNKYnXKcuDLR
4492+702 0.74 vbSuZeATRsTuGXIupEyU
4493+80 7.62 ydaNjWFvVRZRgIrsORIJ
4494+901 8.22 jOqKRBjSdXOmpobcDjWl
4495+169 3.1 IYjwnptZZSjoPhUSUyVF
4496+331 4.25 RSObaoHCDcdNnWYEJVGc
4497+75 1.63 TvgvGbheutcwdUBmzcam
4498+574 7.71 RUfWWmrCRIaxCivQEzzg
4499+513 6.44 EiDrvBLShPrLnwyPoyrb
4500+160 6.79 RglYVbXSqKCrvVpkFKHh
4501+351 6.89 CwwwSvlzlvMgXfYaDGau
4502+512 8.94 eCkWDrCOelfpcueTQWMr
4503+692 3.55 EFhmVNZtGEOmmhgQNYgI
4504+488 7.51 xGvKtSSUPuJaeigKpzvr
4505+338 9.92 VaCHRkSPzojoiApMDYef
4506+826 7.59 jeyncSDvPHCSbHaPgaur
4507+367 3.76 XexiyFcTilYHgdJwEvab
4508+16 5.91 DTyxoowjIiXQgEMpLDhh
4509+298 4.77 nNdsGAuXzGeFXlRdzfSV
4510+931 0.41 oNRWNSAATghjFvQERFfD
4511+694 8.77 LEWMAidjZMhzCkzkEEpN
4512+6 2.74 lkeKVOFnZKuzKMFigAgg
4513+454 6.11 BLrUMfsOwJddHxGYtKoT
4514+477 2.99 BqqfjApFWBCNNMJlIifv
4515+267 4.1 uxxRmaiwESVjKCctPBvJ
4516+295 6.57 iCketfXTFRQBFPFfdbOX
4517+75 0.95 lOpdYXlNpNgdmMXQCGDN
4518+412 6.19 HcrSAAgWBnZLJeshnKcV
4519+579 6.79 sjVJwgNuNUDfkVFyrpSm
4520+386 5.66 upxIpdrfyjCtwCfXrqJy
4521+47 6.0 aPPWeJCJUIXtpKnmeqKf
4522+210 6.53 ERoRPgpUERSygdnrEOHs
4523+885 1.94 tlcNciWFDLllMpIsyuKn
4524+673 7.77 qLAUxdDaWobWjvYicMvs
4525+48 6.5 qnYGfEnNpDGsOLNvHrwU
4526+472 8.12 vCuXhwRzInctwjnRnfTU
4527+154 4.83 WmduMrHPMUueVLIxzLxT
4528+784 8.39 MYMhNkmYCXykAOpFyEFt
4529+73 3.29 WdvCQNsFYhylbDoKQZni
4530+992 6.46 FHUQMIWGcgMdbWfJqdAL
4531+437 2.43 GvcquKiBgNVMeLyywtlE
4532+487 0.77 cRPvIzDsXqZoPohdlIzN
4533+354 4.44 aFjWeTulcAiCsdwZnQjI
4534+64 6.29 tiekZPtZugCJnyxyRpNl
4535+536 0.57 AfcyCWoZVTuzrtAgdxXh
4536+609 7.86 sdXQFHXFGfkFkgfXxXOg
4537+295 7.15 mnofxohdUqozGmBnrbbd
4538+207 8.4 uFsscAmoswwURsTtLkuM
4539+357 2.98 WVpOIEdZqaRPlnejIYSX
4540+532 0.52 QPsHmLcufykATBwljQDG
4541+143 5.2 xlvUXrBxAXjoUDoDQztI
4542+225 9.57 XRBJUxoDzSQzUJVCASHF
4543+681 1.41 NkxBrKHtmLChJKjxseaH
4544+840 8.29 abxkARdGIMiQYBtCXseY
4545+468 4.56 EDEADRvbXJynTSOOXzOl
4546+568 4.14 ymvWEObBwkPqeYydDTCm
4547+755 4.46 uZYxNpPHciRCUeVneiTA
4548+71 4.50 RFaaMcAElRINKgYHgxNx
4549+843 9.18 NVYzQLfutveUNBzQunHp
4550+711 9.65 YyjrXkawAYSkYBUeAixA
4551+718 5.46 GvADhdPByAJActNNZGyJ
4552+647 0.69 VFjyLHWobDXVabQSEVZi
4553+0 1.55 VCGISunAnpxINgKqeNUg
4554+227 6.24 ZZlhmwmbQfweHnPChDkm
4555+430 5.14 vDZeUhlsyUtCVjockEeL
4556+852 4.59 rIOJLoHsarmdyxjoAzud
4557+49 2.30 MndlmeetVfnqIHpXtiab
4558+587 0.42 kbZCxqiIShmfatrYBgUH
4559+509 4.72 aIxjRHDITEwXHscDFXfZ
4560+545 8.92 gpkRZjSEygzWRvPBrMfB
4561+366 7.57 kpdxbBuMBLEFgTtsmwGZ
4562+134 5.37 vNfcwTTwpLFMOFjUmeJA
4563+258 0.74 RDLDYZpgVevDyKugoBJy
4564+64 1.55 jGvvzOTgUiDsKgjgvwhr
4565+325 1.54 OfmXRoBAajlYUDKHPnMD
4566+527 0.76 kiWWchRlmzhFqtJDxQin
4567+106 7.74 SvJvpoNRylNrTUBNcmtH
4568+705 6.77 ajSvfwpJXdiqtEBXzZiP
4569+551 3.54 DKfAfKZmiacZVkljJoYg
4570+897 8.36 fUfcunfweNXmdfMLzHpF
4571+261 9.22 BskeJbnXXSxQFUnPoGpO
4572+720 4.19 yriRxVSSBrHnZhFqctJq
4573+367 8.37 bIzpQFvBVfSdNcbksXlw
4574+922 5.41 KZhPxWAJhMSYPSfNeHbF
4575+612 3.84 qJNgIzklSoKaWceUWvvL
4576+7 2.79 PlbVQComhFXxTWGsYUUE
4577+799 1.1 jiAgQwCoXsgiQmukYzRp
4578+336 2.34 WcVUtAREjfpKxYwjpfFX
4579+219 4.91 EzQLsudoINcHrzDUjouc
4580+236 4.76 IuzIkcLKSedivWijHnRP
4581+392 9.38 TGsTUbNLaufnnHOVmQvQ
4582+371 6.52 oipxGWnTdpOabCTkWLUm
4583+788 7.33 stkTdrbdOcZLLiftXjMv
4584+230 4.98 kzrYdCpZxhyaiIRFSRsd
4585+183 9.15 SrmkkApzWrZxOTGuszoK
4586+964 4.34 WXQfamXYCutjEmTuEbho
4587+891 6.89 NQCFqHIDzyPuTxjLJHOV
4588+763 0.93 utabDJMskmdfNWcDyQXC
4589+714 0.6 OqZwntqfOyrhRfiMUpKL
4590+657 5.88 gEmQxzOtYkDuECqXwuLG
4591+942 9.14 kVpbzwwYMPbJniQzjgFk
4592+24 7.18 UbtsqaMofOCciHImDhqg
4593+471 8.23 enrlpkzbOZIvjwUXTmlS
4594+205 9.23 ClJQkfcHrTYekEEsPsaJ
4595+939 4.57 zwQSrehzczpbkThuQfPU
4596+312 2.20 poOeFKDgxqDxvrJtaluq
4597+791 1.27 VUWWFIxKbOKCmbjsdomr
4598+926 6.91 oMxAeQFmkErJgikTBhIy
4599+197 8.95 qmnpZlDiNsWHgcTEeIkJ
4600+903 0.8 TzWlyotfDJQcsDURTRAX
4601+666 9.50 gNfRsmMniOzFhZejwtDB
4602+821 1.77 KPXLvXfDQfcXXrOsZcXP
4603+284 5.33 blACUBYIWJIcZcBwOWWG
4604+492 9.94 GWiyZHfXTSOhsFbKuIhk
4605+765 4.30 GBetTJgPyvkAxrXRpsJl
4606+253 0.92 HIzAohqVOuEzLhMrmWHM
4607+817 5.83 fKrTaePFivQaDodpUPcp
4608+634 6.51 fnoBFIBLvWYcnwWmGPDW
4609+856 3.74 tAdowmIYZKjoOGTwJAfO
4610+96 3.51 qOtvIpGNjQMQrHSLeRUx
4611+75 2.35 GlMwkqlZGvRCPRABnVgP
4612+375 2.55 SJCtkjXdFWcDFgYFDPXd
4613+858 3.96 MpRNSIajCaxjbWOxGeDl
4614+77 4.19 tnBtDfXccMjoKXssfnTZ
4615+625 2.60 clrWhxrSVdhpmMuoJqpr
4616+759 7.39 BOHgQDXUYQEZCTGJEnjm
4617+281 1.64 hePfEHzrcuNJCRqvBmfE
4618+976 6.23 hUgIipTXKSatNHGZvnPa
4619+192 8.69 KJPrLjSZTxZGLSogyfIl
4620+272 9.67 suulJBidiCsxEtsLJPXz
4621+784 9.82 PuOALbofWxYYAAPFpxhu
4622+742 0.46 lROKSHzHeEFyRPSoGGgq
4623+427 2.99 QGZUIpDngmQfbWdLiGgF
4624+431 2.85 odAeTWgMbFesukcwSGSz
4625+589 8.87 LaCVLltVFubMVdTsMJaw
4626+335 7.71 UIGNHghfqsRvvQysVnmC
4627+123 1.61 HfCuGmJjnqZogPANFShb
4628+861 2.64 kOmfuePaydwDbxqVxDkc
4629+313 7.93 OZERQTeZNZsVKfoDZqii
4630+89 4.1 WvfImSzUGnAqALNHKIje
4631+808 1.28 QTCKhTcIUWFaVwdwmHWC
4632+272 6.27 MlZrgZXkQMKRCErhnavN
4633+887 9.97 vksEBVPsrIjjJEzienso
4634+128 8.73 SAUsMljcuUHAeUpCfScF
4635+146 9.45 yubOLwcdxuXjREUHhszB
4636+133 4.92 bbqtNfbeQvPzFeKeKpNm
4637+920 7.8 qcADPDdxUaPRwBUNGoPe
4638+707 6.61 xWfsbVaPFalICCFNbNrF
4639+944 6.1 MKDQiwtYJJoChkYVaduo
4640+98 1.16 LVjBXNuotJGHfvwhbOUu
4641+366 6.16 JvQWxeSMZKnvCEwWfkdO
4642+238 6.33 cpBXyzqJdjSgtlADhYwn
4643+664 0.65 WKTGKRELWenQpKNbBDQa
4644+488 8.5 aoXWhqjECruNWEQqKogb
4645+841 0.98 wRvGDWDMYxYGfZNjgPLZ
4646+923 8.1 sWbpzsuxsygtdoGpNdmV
4647+762 2.73 ghtVfGPxISzriCrEcRxa
4648+268 6.96 eOqpdaYgWoVocwDChewK
4649+712 9.80 NjCCgBXbVodOHSWyQnqI
4650+851 7.52 NeuAPcRrdBTcGeDkPsjE
4651+97 6.47 bzZpgZHdpJUKQBkgspIZ
4652+237 9.19 WQOrhqdyoZgEVBoZtNbs
4653+763 5.14 LpvjSWJPvyMpPTdRIBJh
4654+952 3.31 wniuoanPhMZzVwGaZKQi
4655+145 6.55 DwWThCWXkzreoyswWOcm
4656+619 8.38 IcKqPCVXBefXJvEmTCWz
4657+894 6.24 RszFDfdThKnkAMVgWfcY
4658+411 4.68 MnidokwIgxwjlmDPHXbL
4659+976 8.66 KYwtBwvUpmFBvFmclDfB
4660+154 9.78 vHjmwHbimyafbDzSMGhf
4661+780 5.23 cmvPpbPfgnRQyIkdPxre
4662+776 6.72 jESxTrbGnbmrvfgVhIrm
4663+794 0.49 nfqmJtZtxKzszwmwFbMn
4664+378 2.8 APOmsppWHnyBVNaHeuis
4665+240 9.22 UOnvdxPLvRdkBYyYhsGx
4666+599 2.70 oMhMyuKEgNwLWlzuuRxj
4667+963 9.79 lcOnqWKoBmionyzBNQGJ
4668+802 0.76 vsAEnzkHaedQRrLgYYjP
4669+324 9.50 wXnYxuHAYLBIERYGHgXe
4670+311 2.38 nFKzDaDSwoYcHDDeIidT
4671+587 7.32 eNBSPUCRyHaQSJXsGMtl
4672+926 1.62 XyifJlxGaORFBsMmSgVb
4673+493 7.42 MoCNJnECHicCIJHTYLsD
4674+646 9.28 eHBRTtfBenbZIvQbEnmB
4675+617 8.12 MnVPUntngEgmfrfjxGcI
4676+376 3.0 NsSloRjlZuYLWPpyTYcx
4677+284 6.61 WXVHKoxNagUgsSWiaFGR
4678+490 6.48 DSdAOphODhVTRVNcvfPe
4679+959 9.22 HjrqzJycSdjEEkSeEdkb
4680+980 1.50 zHctjFBHUROCnUbkxQdr
4681+947 2.35 oDCGDOCNUDGUabOwSqCR
4682+158 8.92 esBpVVllfWfdPVVVSypg
4683+166 1.50 yfFUjRZCSppnUjxBezVy
4684+591 8.92 gSZzebedXBmGWKcemqol
4685+211 8.83 zrrpMzIscltleXtvcKsu
4686+287 9.11 cAzsUVnbDmJlyKGSVeES
4687+761 7.32 pmAfNAuNBcLceuqgLwuv
4688+622 9.70 wUgAVFVucWEBUNSSwkwX
4689+468 3.36 NYFlnMObVgutevtdPAXN
4690+529 4.88 WMfPZyGvaGbeoPTfuKNr
4691+96 6.38 PSpmPerAPtqFBjNaDpwL
4692+2 2.55 OjyJsmTJymhbblQDiSwd
4693+3 5.75 yDjwaTlyaRKztkgbUSgt
4694+893 2.14 slYhpTYbYlqbkLHMDKzc
4695+524 4.92 kDEqHUcQRAZPziLXASIL
4696+678 0.31 nsaLguBwtWEUFGbMYaMy
4697+931 7.35 KCgquCRLjyVyPIUmDEys
4698+867 8.29 NEPyfvcdZdWprkLEqMNe
4699+100 1.50 hoKqHYiYEZAwzwIrkGJj
4700+746 1.71 veeERjGTYnQMQfKxACdq
4701+826 2.59 gQnPWlEPSQXxdxEkxiDP
4702+539 1.14 oNmEyExhBdmaSYTJOXbS
4703+226 8.53 NuWtUSOpVmbgfWDdOPHp
4704+304 7.41 WaKFaWrBGEzySdPJToTd
4705+162 8.40 XNMcOPBtZHjYIebUtthr
4706+167 2.83 ksrspRMkuhQbQkMNXlVm
4707+219 5.22 rWrmTqhKWQnzBxUOqKdk
4708+181 3.25 qTtVLsHSJTgJELIniLrt
4709+755 8.17 xPIgwGOnubwThOAgvxRX
4710+907 3.80 zCEtnyUMjVYXDIdtjKqS
4711+882 1.54 QwgLYXxcXuUhDdkxpmPy
4712+407 8.36 sBebgTdBqvhKfbAqcJXJ
4713+86 8.21 WUNPBlKGYncVtjNmiEku
4714+640 0.94 FZaXSveJfSKlJGVqJshL
4715+924 2.48 TrCAiDQDiBPtgiCeRWFN
4716+709 6.23 IkkmqxxunVSibSDANfEi
4717+702 1.6 BLTNhNPDXUnaelUaMKsQ
4718+656 5.75 iSRsERaxJgmTIyqlOXfR
4719+64 7.5 NfrqpSzDSrFnWNabmZtZ
4720+561 6.52 BfdQGsXJJamhbGRmnZhF
4721+838 9.27 gwzhOPbcHIrKlYyzylmp
4722+594 3.8 zdhWVEpVkryRDDziblRT
4723+431 6.68 nrWaEHIpEZqNVdrduveT
4724+585 0.2 BLznkxwXmLmFAqTXtsLG
4725+793 7.48 UydrggvJOmMngnjiyGby
4726+711 2.6 BRQCFFLDGHmOjcCoZVeE
4727+963 3.2 dYVgFIyykHShyyEWlwyq
4728+699 5.90 MXmxYHqCPQTyfHjoWXNt
4729+357 1.0 vcMBeilpEQVqWpWxuFPn
4730+874 7.58 fgTKOTitYQwtxjyVheMi
4731+657 1.56 dlGmCjxHTCEYhkqTcZqy
4732+996 4.25 mFOHRuoWHrCZbqQuQWee
4733+752 5.3 HPgaHJLRLTbdAqjfxrVD
4734+14 6.28 hrvSDSigoTaoVrdvkIjz
4735+978 7.12 qpYUewhHKGWgFYGHCKsl
4736+803 8.5 KmirXHpYJFjrSUsprByY
4737+794 4.8 PnirpkAFxPhXUKaRfFSh
4738+255 9.16 VwMUqvdgbDiJuuuffkZA
4739+576 6.63 uKxSaObMYAFWczMCcCeh
4740+501 3.73 nvrjpZJXxVhHlnVRUBCg
4741+747 4.77 GbkUyqSSwzRkbpRbVgUT
4742+398 5.61 ZOnSftpAIYHsNrNXoRbn
4743+457 0.56 lojBbBLzQYhGLhhmihVm
4744+112 2.74 nfFoaFmQOwtmxQApohmS
4745+586 7.25 HgLCKFiBvRwbpxSrAiNz
4746+492 5.89 vDZnaFenpXvBLQrTdVEC
4747+516 9.73 biXEfEzupaXgYYSGJEvj
4748+464 5.3 mOxzsvtZMJXVydfYvwQt
4749+912 7.33 hWoSuRVMPWUxLGYeHKWT
4750+498 8.44 csEBPlIuKcPLYqFpgvPo
4751+317 9.90 xjmCWWuJVyyZLJWitSJu
4752+449 8.45 lbOTYARhIKjsvZrJDDLc
4753+535 4.71 xNsPAvTVOJOTpbGYcaEj
4754+852 2.64 gnlfHhaGDbesWXHqERdF
4755+304 9.69 ZrHCaNXDmQybfSYrvTVw
4756+710 3.79 dRCihjVEcQxXJWqMDxeo
4757+773 2.1 jJdelWwqPoqWfTmWGsZk
4758+991 1.19 NjyCjfpFZupBOpetsrAx
4759+507 9.34 WMiiOWvifiwGeyPfNYED
4760+358 4.97 DhZcLFRhigrudPVyhnCq
4761+662 3.98 vTXayBmDNqzJlYyfWZNt
4762+507 7.75 YyOLbYGdMzcWLpUEMktX
4763+738 8.59 HVANysGlgsFYYENRBJLv
4764+295 8.82 ySqHYVFtksJmfZxZxIKy
4765+984 1.64 SZiTCEsSQYPwEKGrUzXq
4766+949 7.86 yxuIlvnpyHhwgSYCqfzG
4767+168 7.18 lUULhUneHMLZQSAUHBTo
4768+938 2.59 hkNHgcCmoyCsEkNcpXHe
4769+878 1.22 IMlcVToHOvtQoAKtOAOZ
4770+824 8.25 nWoHoqzsqrgmPMHhhBvp
4771+677 8.81 GFlSdWJwuDbhibVxcJIe
4772+754 0.79 lswvYmUipujZGssasZZs
4773+875 3.83 aIiDifayDeyznpPAyDRg
4774+565 5.23 unkzeWMvdDSFoMzpIlZO
4775+120 9.83 gLDFeShLWfyYDoQfCSZM
4776+65 5.57 zxGFAuwltfPNhmLXwGvq
4777+605 6.72 FyjqLLXbmnUFQIifLGDl
4778+962 5.64 FgGVEHmXtWbTjqlpXrZR
4779+687 2.5 OXpbxAdsZzKcozqKashw
4780+652 6.52 EOzUuWTiGudFkdfgvJPx
4781+223 7.89 eXRuLdrMRislqVSPrOPN
4782+825 7.96 wRFENOLBcgIggYOGVxdG
4783+8 9.47 cjhAxVamOWsSdoQNKLqn
4784+153 1.80 BVUyTTLXHmVldMLlywag
4785+554 9.41 RDqlVDVrrKkEeZOWHONI
4786+873 7.7 QriNidzzaKAwEMcrBRxG
4787+726 5.49 YWvtTmqjSduziEzYjDPa
4788+945 2.38 hIybylnSCPmHuEalnKfF
4789+348 3.53 oSTjhbXyDhDYPriXkdAa
4790+477 3.27 uwYAVKhGuNqrASpWjbhS
4791+493 6.14 CVDcxFbnNZDykZFEOxKq
4792+150 9.65 PvptXpcHWiOOOpcAlfUI
4793+752 6.39 ouXYOzGCgKBPjscsJgtI
4794+979 0.92 SPUtqGnWEnRUqggexxLf
4795+394 9.66 tkgzNvlNjKhGxjQHqMTn
4796+812 1.87 ytfRgWZTrXsCbKsMaDEm
4797+75 8.9 gTRNMbGxyLbKegeBqCbk
4798+60 2.59 LchJepJVTxDkSNSCBjwG
4799+87 9.14 pAYJtODZsmItUEbKEHPq
4800+214 8.69 MDODqGCuZbSIecdcNRjh
4801+444 8.64 uQLEcXkaAszAuXtekKYW
4802+273 3.67 caQpkUCIMRhADFxHOJdY
4803+946 1.24 KHRszujDHEqzDWiNbUqn
4804+459 3.0 CMVIjthRPWCGRriRPQNN
4805+838 3.11 jdoZfKkpspAMQDcCHfSO
4806+147 1.18 eWcCpPBfxtvbaKguEOgL
4807+250 2.65 NlstFbCiVIsbFLSsvXyF
4808+218 5.64 EBmbDNcybbLkgDoQyAPX
4809+155 5.94 hqISVwRJGGcUpPsogHEp
4810+757 2.15 qyZiYrZQPLbfEeeVwxbM
4811+808 8.64 sQkcXHKphTqmbeMoQyKd
4812+611 9.94 vANiaAgfgJyRIQhLzjhq
4813+901 5.89 RtElsqTRXOrJfEYyTHNC
4814+907 2.16 IAcqfqbLpIvXlIMbWFIh
4815+599 6.1 uQLFvJlcZYQVNFKVkEOl
4816+375 6.75 sPKkvIqNzbcnlzStgfeg
4817+804 3.8 qCsreKtxOTTKwbpOCcXm
4818+315 3.54 WnlQWsOVYUbosaOLOPQt
4819+855 1.54 OVYVpZRzjEDJrOMibrSI
4820+114 6.19 xnhCusHcpzhKmNNzXMDD
4821+215 0.76 DFBElSengQCWWCKGTmeR
4822+268 3.28 PmfavTNRPYZgNUCZivBI
4823+544 5.53 ZDlQMLtDYNCOtbKWDgOp
4824+120 8.8 vrjDnCVyugNDsKiAYpjX
4825+162 9.85 cAyOTlMgPyJCqigjhHoM
4826+117 4.20 UKURKmjuQxiYkZbrUOiX
4827+972 8.10 ClTGSsUJebREwBUInuTy
4828+772 7.44 lNsiOPZvYqshrPZFnxjC
4829+808 1.33 laWEnkkaRHhnTFPWSRss
4830+262 9.91 EDcVzMXlCgVQtaCeEcfP
4831+702 9.0 rpkEwhnPzbQWRntwGXAM
4832+700 6.52 lzFVaxgJMJOuQylTAUUs
4833+929 5.58 irxLUjAYvhflrKcepdWv
4834+386 7.37 bHxOrDcXxHgCpswxzeRS
4835+946 7.10 mjBaKAnepQGhMbykfSpq
4836+24 0.72 NTcNpjIWpboDmCRCLxkk
4837+997 9.97 HkufAuDNOGmetgsgwKIF
4838+691 1.91 qRuqQGMxObGGbyQhOuym
4839+201 1.78 lJNeEOeENEiQTAJOMtWZ
4840+932 1.63 gssjKuuiBWeKuyPZlXYv
4841+496 6.70 BpXVgtsjPcJKnxoTVgzP
4842+511 2.65 ZhCPNTqiSrZZYwnmIcMz
4843+749 5.45 CriuhVmUitYuLKqVGeeM
4844+652 3.73 JrDrGnOTHMIYgYKPKxqC
4845+913 2.81 sRivrqAHczXCbGLjuWiA
4846+723 7.70 TVolfTbnDLkMksYKwJwp
4847+821 4.13 PgplIumUlymWWvHXFaBU
4848+613 0.8 VAonZFIjlIYyyaZkjLUV
4849+735 5.5 ipAtfieINhaqoTCfRuMB
4850+79 3.90 hnFEUemQmwYOIsNsTnWP
4851+703 4.72 pOkbGLDqEmkOaUhtnFaJ
4852+775 3.29 kijKDMPrtLoDPQDPPdzm
4853+258 4.63 IQhyQMOQkdLgqHwsyBQF
4854+800 0.26 gaozoumOTyvzXPlpmDgv
4855+766 7.3 AjwjksjnSKpZHMtwrzZP
4856+440 0.3 BiChKYZUvwbTQOCmgunV
4857+53 9.77 gVUfBCuOjRwNTSDhZDme
4858+32 9.47 ifzLoYCDjXcYHbbVyvww
4859+749 0.58 dipSHODvHkBzMTiVKcvY
4860+285 5.31 ygoSgfRXudzxmsqNBkEZ
4861+141 1.89 AAFopiHBwWYUPjRHuWZw
4862+248 5.12 KFxTsNEWrMPlCKJIkGum
4863+641 4.67 TojOvtPpaqetlWlpMwcd
4864+649 1.28 ywUnZMHscsXVfAVnxpuq
4865+774 5.4 QProygQPJTBuvQwutgVI
4866+209 2.60 ZbBaaYLvQGfKtuzTSUVt
4867+860 7.59 zmpTjLLVvRjJkfpSCOWW
4868+957 3.87 dKkAuKAaXEgKaMjkDagl
4869+412 4.31 VxAVuOKMQYEJMOIztvOW
4870+930 4.98 lNSgzbFMpKXyAmKcUhPo
4871+860 9.20 NAQYwxbDUXYuZDGtAwFM
4872+846 7.85 NSiFtFPljAAPIRSKrXgy
4873+819 0.33 RVxYhzUvdNprbqrsnjzz
4874+192 6.23 XCuUdIbEpjprxcQzTtkz
4875+446 3.64 tWiNzVnUFwNtaKCbyRHA
4876+452 1.48 BpBbfkMXYcGhLwtogNCN
4877+580 1.56 tseDNgBeKsRorIWkfrRo
4878+823 5.32 CaEbQLnvKKttrComiNct
4879+776 7.79 htvnWLZUPHoCMkCjFTqa
4880+107 8.55 wUZTOVqWLcqWaShSWxrr
4881+122 5.35 BipUWzNXtkrWhEcMebjN
4882+303 5.59 AmfLvEqQeRwGbZmLrVfS
4883+262 4.38 GSwTRNmMYBOFvAlLxBdw
4884+812 6.54 OvfIaKsMVvLnrkNEONQp
4885+980 6.67 bVglLpqYKQAjEuMTwTdk
4886+98 6.21 rFDMoKNLdhnDdAgTTgAe
4887+91 8.11 WTaActKUdEikgQxNlZNC
4888+283 3.62 tkHGYDapLUWEKShowzre
4889+301 8.81 weLWvyBPDBcVNsVhkTgx
4890+764 8.98 luWWpGgxEbsEndwRSSoC
4891+976 0.4 myMJoqbDaleEXfDhDuJh
4892+334 1.63 VpFHTtsUWyeIDmTPRCdN
4893+879 5.64 FeMEZpbfGcJatvxvXvvG
4894+458 3.58 PZbWWATDgivhdQQBycoS
4895+389 3.79 YQTPfQdrfOqYZETgLmMW
4896+969 8.82 jEwGRRFhFrIssnQvQfvC
4897+880 3.81 hAYIuvNZMHxYckABDlOh
4898+482 0.15 xZSzCFAIAnZPprYxFtpO
4899+315 8.48 kwNiyIFCiILOkaRXyKpm
4900+972 2.10 fgbcTJkoRRNsALhHwngZ
4901+906 8.97 IdtZEgnFNzmtsEAicYlm
4902+153 7.28 QBMGyWImeRrrEKEtdMYk
4903+725 1.11 ABKrNPrTXbVbQYfZRdVG
4904+246 7.84 BfGyFnjQkPRmbbNWUCgT
4905+210 4.93 EveCQKDDLMXOzntjTmsW
4906+513 1.0 BNLtwyvUlLuJxUrEdZaf
4907+636 5.41 DLLkJtXfIXCAXCEbwJIw
4908+252 1.28 MOojcVHswqSQxYIBOfAo
4909+768 7.49 usFqWGXJdkMbMVXRYebk
4910+235 6.64 bQtTNXELHzpFStdtlwRt
4911+458 6.47 nBNgHCfoHHegbKFMEAEl
4912+291 2.20 wYUySuiufmsRWfwQrMfj
4913+212 4.30 TeUuWTTXzjhpEOoUFdCw
4914+67 9.4 HbMUofhJJbzIuujOEszx
4915+211 8.80 lUrYCeAhPUNbhOMGzSVs
4916+75 7.30 SFUoPFeFUCpLnSVsPGrI
4917+895 6.50 RdDUXXzeYdaVYSVcENHA
4918+484 7.96 UJNdoiiatlqTfjAihsXE
4919+774 6.8 amkNaHVMzbsbaJtNsNLp
4920+960 9.45 MwIGIBdfGSHSLOMhNdFA
4921+613 3.27 jLizwWOcZiwBECMDhaLS
4922+198 6.8 aQFgqrbjjCYKxVElbPix
4923+763 0.32 NpuoPFLKBkkJxpaZHVDP
4924+233 0.91 jTzFaWskVbkNlwWMmvDp
4925+474 2.73 NIfjcrWlJSAEhtAJPBsM
4926+241 9.62 elsjNxvuxGKyZRwNHTvq
4927+685 9.11 ctjuXmvjOWOqcHVEIEzT
4928+797 0.35 apvUfTtJMDKaHNCZzLyA
4929+405 1.57 KwjnJCmTlzUYoXsXEReA
4930+344 8.60 XyvChRXhioGEsAGKDKZS
4931+256 6.73 ovrqINvYzNaTHyZuBGMZ
4932+364 1.3 CWVleOfvIkiaPqUZyJdK
4933+845 6.16 xrqIYWdMJJMskdxaMWhZ
4934+974 6.14 JFjbDNpaYLtvgbtItCQZ
4935+819 2.40 CdrkqWiCUnMQOVjZFwey
4936+285 7.26 NKHuZkNUlIfzoGhvGZNQ
4937+435 6.81 DiieFEAIbWGMhrdRaPRR
4938+960 1.90 nXOfUqZzHriiPAzqXlmY
4939+518 8.40 yMXUXKrBfCYOphxlWQmZ
4940+599 2.18 VWaVlkkHXNXQssoiVolb
4941+544 5.8 MAicdYDIxNbRpfGuHspL
4942+933 1.67 ZFFUKAsVWEOjbpiwIsSD
4943+547 4.65 YwUJBSJdKNbJfIMSqQJk
4944+185 5.62 qmEnfTsRUFqJHeeBijsQ
4945+798 7.69 EWqDLYUJwrumsCSTjtMz
4946+963 3.69 jwwOloyGyrSEojGfuthl
4947+527 8.81 yNqQBCxVnINNBrymFAcG
4948+615 6.42 pqVBjvmIvOLNLXZrqEVa
4949+564 8.79 PvjyJclAHPjaOGoTJwVc
4950+476 2.53 ivYxeUzAMEKUEQhqupID
4951+775 8.79 JQVhTQcIMJxgvcpsveFB
4952+356 8.51 hOCxGmnEdnrYcKZPxeTl
4953+933 6.38 HyYEXxNvQIUBgtAqiHqP
4954+734 1.25 KUjasKiikmTbOtfqTbFR
4955+522 8.45 WamSGQZFHlSVurtwNRxm
4956+878 3.34 ldCMEyyYjOqIKpvlIrSM
4957+973 0.81 ynUbpbUhuzGREmfJpUGo
4958
4959=== added file 'plugin/filesystem_engine/tests/t/select_big_file.test'
4960--- plugin/filesystem_engine/tests/t/select_big_file.test 1970-01-01 00:00:00 +0000
4961+++ plugin/filesystem_engine/tests/t/select_big_file.test 2010-07-30 13:27:46 +0000
4962@@ -0,0 +1,9 @@
4963+--disable_warnings
4964+DROP TABLE IF EXISTS t1;
4965+--enable_warnings
4966+
4967+CREATE TABLE t1 (c1 INT, c2 DECIMAL(3, 2), c3 VARCHAR(20)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_big_file.data";
4968+
4969+SELECT * FROM t1;
4970+
4971+DROP TABLE t1;
4972
4973=== added file 'plugin/filesystem_engine/tests/t/select_chop_line-master.opt'
4974--- plugin/filesystem_engine/tests/t/select_chop_line-master.opt 1970-01-01 00:00:00 +0000
4975+++ plugin/filesystem_engine/tests/t/select_chop_line-master.opt 2010-07-30 13:27:46 +0000
4976@@ -0,0 +1,1 @@
4977+--plugin_add=filesystem_engine
4978
4979=== added file 'plugin/filesystem_engine/tests/t/select_chop_line.data'
4980--- plugin/filesystem_engine/tests/t/select_chop_line.data 1970-01-01 00:00:00 +0000
4981+++ plugin/filesystem_engine/tests/t/select_chop_line.data 2010-07-30 13:27:46 +0000
4982@@ -0,0 +1,4 @@
4983+618 9.60 LSkNQAZjODwYvOYUeAVb uncessary junk characters
4984+847 2.60 yphkuCaGsgbReRQTcUob test this also
4985+814 3.25 rJDEnFNRTVftDpWPLeRa in create table only two fields
4986+571 4.84 bjQkbVIPlNmlHpKvDBVv
4987
4988=== added file 'plugin/filesystem_engine/tests/t/select_chop_line.test'
4989--- plugin/filesystem_engine/tests/t/select_chop_line.test 1970-01-01 00:00:00 +0000
4990+++ plugin/filesystem_engine/tests/t/select_chop_line.test 2010-07-30 13:27:46 +0000
4991@@ -0,0 +1,9 @@
4992+--disable_warnings
4993+DROP TABLE IF EXISTS t1;
4994+--enable_warnings
4995+
4996+CREATE TABLE t1 (c1 INT, c2 DECIMAL(3, 2)) ENGINE=FILESYSTEM,FILE="../filesystem_ln/select_chop_line.data";
4997+
4998+SELECT * FROM t1;
4999+
5000+DROP TABLE t1;
The diff has been truncated for viewing.