Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.h2spatial / org.gvsig.h2spatial.h2gis132 / org.gvsig.h2spatial.h2gis132.provider / src / test / java / org / gvsig / fmap / dal / store / h2 / operations / sql / TestResultSetForSetProvider.java @ 46105

History | View | Annotate | Download (18.2 KB)

1
package org.gvsig.fmap.dal.store.h2.operations.sql;
2

    
3
import java.util.List;
4
import junit.framework.TestCase;
5
import org.gvsig.expressionevaluator.ExpressionUtils;
6
import org.gvsig.fmap.dal.DataTypes;
7
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
8
import org.gvsig.fmap.dal.feature.EditableFeatureType;
9
import org.gvsig.fmap.dal.feature.FeatureQuery;
10
import org.gvsig.fmap.dal.feature.FeatureStore;
11
import org.gvsig.fmap.dal.feature.FeatureType;
12
import org.gvsig.fmap.dal.impl.expressionevaluator.DefaultFeatureAttributeEmulatorExpression;
13
import org.gvsig.fmap.dal.store.h2.TestUtils;
14
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
15
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
16
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
17
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
18
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.ResultSetForSetProviderOperation;
19
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
20
import org.slf4j.Logger;
21
import org.slf4j.LoggerFactory;
22

    
23
@SuppressWarnings("UseSpecificCatch")
24
public class TestResultSetForSetProvider extends TestCase {
25

    
26
        private static final Logger LOGGER = LoggerFactory.getLogger(TestResultSetForSetProvider.class);
27

    
28
        public TestResultSetForSetProvider(String testName) {
29
                super(testName);
30
        }
31

    
32
        @Override
33
        protected void setUp() throws Exception {
34
                super.setUp();
35
                new DefaultLibrariesInitializer().fullInitialize();
36
        }
37

    
38
        @Override
39
        protected void tearDown() throws Exception {
40
                super.tearDown();
41
        }
42

    
43
        public void testSimple() throws Exception {
44
                JDBCHelper helper = TestUtils.createJDBCHelper();
45
                JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
46
                OperationsFactory operations = helper.getOperations();
47

    
48
                List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
49

    
50
                FeatureStore sourceStore = TestUtils.openSourceStore1();
51

    
52
                TableReference table = operations.createTableReference(
53
                        "dbtest",
54
                        sqlbuilder.default_schema(),
55
                        "test",
56
                        null
57
                );
58
                FeatureType featureType = sourceStore.getDefaultFeatureType();
59
                ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
60
                        table,
61
                        null,
62
                        null,
63
                        null,
64
                        featureType,
65
                        featureType,
66
                        0,
67
                        0,
68
                        0
69
                );
70
                String sql = resultSetForSetProvider.getSQL();
71
                System.out.println("###### SQL:" + sql);
72
                System.out.println("###### EXP:" + expectedSQLs.get(0));
73
                assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(0), sql);
74
        }
75

    
76
        public void testComputedAttribute() throws Exception {
77
                try {
78
                        JDBCHelper helper = TestUtils.createJDBCHelper();
79
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
80
                        OperationsFactory operations = helper.getOperations();
81

    
82
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
83

    
84
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
85

    
86
                        TableReference table = operations.createTableReference(
87
                                "dbtest",
88
                                sqlbuilder.default_schema(),
89
                                "test",
90
                                null
91
                        );
92
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
93
                        EditableFeatureType eFeatureType = featureType.getEditable();
94
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
95

    
96
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
97
                                table,
98
                                null,
99
                                null,
100
                                null,
101
                                eFeatureType,
102
                                eFeatureType,
103
                                0,
104
                                0,
105
                                0
106
                        );
107
                        String sql = resultSetForSetProvider.getSQL();
108
                        System.out.println("###### SQL:" + sql);
109
                        System.out.println("###### EXP:" + expectedSQLs.get(5));
110
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(5), sql);
111
                } catch (Exception ex) {
112
                        ex.printStackTrace();
113
                        throw ex;
114
                }
115
        }
116

    
117
        public void testComputedAttribute2() throws Exception {
118
                try {
119
                        JDBCHelper helper = TestUtils.createJDBCHelper();
120
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
121
                        OperationsFactory operations = helper.getOperations();
122

    
123
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
124

    
125
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
126

    
127
                        TableReference table = operations.createTableReference(
128
                                "dbtest",
129
                                sqlbuilder.default_schema(),
130
                                "test",
131
                                null
132
                        );
133
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
134
                        EditableFeatureType eFeatureType = featureType.getEditable();
135
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
136
                        eFeatureType.add("Compu2", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
137

    
138
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
139
                                table,
140
                                null,
141
                                null,
142
                                null,
143
                                eFeatureType,
144
                                eFeatureType,
145
                                0,
146
                                0,
147
                                0
148
                        );
149
                        String sql = resultSetForSetProvider.getSQL();
150
                        System.out.println("###### SQL:" + sql);
151
                        System.out.println("###### EXP:" + expectedSQLs.get(6));
152
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(6), sql);
153
                } catch (Exception ex) {
154
                        ex.printStackTrace();
155
                        throw ex;
156
                }
157
        }
158

    
159
        public void testComputedExtraColumn() throws Exception {
160
                try {
161
                        JDBCHelper helper = TestUtils.createJDBCHelper();
162
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
163
                        OperationsFactory operations = helper.getOperations();
164

    
165
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
166

    
167
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
168

    
169
                        TableReference table = operations.createTableReference(
170
                                "dbtest",
171
                                sqlbuilder.default_schema(),
172
                                "test",
173
                                null
174
                        );
175
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
176
                        EditableFeatureType eFeatureType = featureType.getEditable();
177
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
178

    
179
                        FeatureQuery query = sourceStore.createFeatureQuery();
180
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
181
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
182

    
183
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
184
                                table,
185
                                null,
186
                                null,
187
                                query,
188
                                eFeatureType,
189
                                eFeatureType,
190
                                0,
191
                                0,
192
                                0
193
                        );
194
                        String sql = resultSetForSetProvider.getSQL();
195
                        System.out.println("###### SQL:" + sql);
196
                        System.out.println("###### EXP:" + expectedSQLs.get(7));
197
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(7), sql);
198
                } catch (Exception ex) {
199
                        ex.printStackTrace();
200
                        throw ex;
201
                }
202
        }
203

    
204
        public void testComputedExtraColumn2() throws Exception {
205
                try {
206
                        JDBCHelper helper = TestUtils.createJDBCHelper();
207
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
208
                        OperationsFactory operations = helper.getOperations();
209

    
210
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
211

    
212
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
213

    
214
                        TableReference table = operations.createTableReference(
215
                                "dbtest",
216
                                sqlbuilder.default_schema(),
217
                                "test",
218
                                null
219
                        );
220
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
221
                        EditableFeatureType eFeatureType = featureType.getEditable();
222

    
223
                        FeatureQuery query = sourceStore.createFeatureQuery();
224
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
225
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
226
                        EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
227
                        extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Extra1")));
228

    
229
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
230
                                table,
231
                                null,
232
                                null,
233
                                query,
234
                                eFeatureType,
235
                                eFeatureType,
236
                                0,
237
                                0,
238
                                0
239
                        );
240
                        String sql = resultSetForSetProvider.getSQL();
241
                        System.out.println("###### SQL:" + sql);
242
                        System.out.println("###### EXP:" + expectedSQLs.get(8));
243
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(8), sql);
244
                } catch (Exception ex) {
245
                        ex.printStackTrace();
246
                        throw ex;
247
                }
248
        }
249

    
250
        public void testComputedExtraColumnWithWhere() throws Exception {
251
                try {
252
                        JDBCHelper helper = TestUtils.createJDBCHelper();
253
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
254
                        OperationsFactory operations = helper.getOperations();
255

    
256
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
257

    
258
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
259

    
260
                        TableReference table = operations.createTableReference(
261
                                "dbtest",
262
                                sqlbuilder.default_schema(),
263
                                "test",
264
                                null
265
                        );
266

    
267
                        StringBuilder filter = new StringBuilder();
268
                        filter.append("Extra1 > 10");
269

    
270
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
271

    
272
                        EditableFeatureType eFeatureType = featureType.getEditable();
273
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
274

    
275
                        FeatureQuery query = sourceStore.createFeatureQuery();
276
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
277
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
278
                        query.addFilter(filter.toString());
279
                        query.getOrder().add("Extra1");
280

    
281
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
282
                                table,
283
                                null,
284
                                null,
285
                                query,
286
                                eFeatureType,
287
                                eFeatureType,
288
                                0,
289
                                0,
290
                                0
291
                        );
292
                        String sql = resultSetForSetProvider.getSQL();
293
                        System.out.println("###### SQL:" + sql);
294
                        System.out.println("###### EXP:" + expectedSQLs.get(9));
295
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(9), sql);
296
                } catch (Exception ex) {
297
                        ex.printStackTrace();
298
                        throw ex;
299
                }
300
        }
301

    
302
        public void testSimpleGroup() throws Exception {
303
                try {
304
                        JDBCHelper helper = TestUtils.createJDBCHelper();
305
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
306
                        OperationsFactory operations = helper.getOperations();
307

    
308
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
309

    
310
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
311

    
312
                        TableReference table = operations.createTableReference(
313
                                "dbtest",
314
                                sqlbuilder.default_schema(),
315
                                "test",
316
                                null
317
                        );
318
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
319
                        FeatureQuery query = sourceStore.createFeatureQuery();
320
                        query.getGroupByColumns().add("Long");
321
                        query.getAggregateFunctions().put("ID", "MIN");
322
                        query.getAggregateFunctions().put("Byte", "MAX");
323
                        query.getAggregateFunctions().put("Double", "SUM");
324
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
325
                                table,
326
                                null,
327
                                null,
328
                                query,
329
                                featureType,
330
                                featureType,
331
                                0,
332
                                0,
333
                                0
334
                        );
335
                        String sql = resultSetForSetProvider.getSQL();
336
                        System.out.println("###### SQL:" + sql);
337
                        System.out.println("###### EXP:" + expectedSQLs.get(1));
338

    
339
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(1), sql);
340
                } catch (Throwable th) {
341
                    LOGGER.warn("",th);
342
                        throw th;
343
                }
344
        }
345

    
346
        public void testGroupByComputed() throws Exception {
347
                try {
348
                        JDBCHelper helper = TestUtils.createJDBCHelper();
349
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
350
                        OperationsFactory operations = helper.getOperations();
351

    
352
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
353

    
354
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
355

    
356
                        TableReference table = operations.createTableReference(
357
                                "dbtest",
358
                                sqlbuilder.default_schema(),
359
                                "test",
360
                                null
361
                        );
362
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
363
                        FeatureQuery query = sourceStore.createFeatureQuery();
364
                        EditableFeatureType eFeatureType = featureType.getEditable();
365
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
366
                        eFeatureType.add("Compu2", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+300")));
367
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
368
                        EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
369
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
370
                        extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("20+Byte+Compu1")));
371
                        query.getGroupByColumns().add("Long");
372
                        query.getGroupByColumns().add("Extra1");
373
                        query.getGroupByColumns().add("Compu1");
374
                        query.getAggregateFunctions().put("ID", "MIN");
375
                        query.getAggregateFunctions().put("Byte", "MAX");
376
                        query.getAggregateFunctions().put("Double", "SUM");
377
                        query.getAggregateFunctions().put("Extra2", "SUM");
378
                        query.getAggregateFunctions().put("Compu2", "SUM");
379
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
380
                                table,
381
                                null,
382
                                null,
383
                                query,
384
                                eFeatureType,
385
                                eFeatureType,
386
                                0,
387
                                0,
388
                                0
389
                        );
390
                        String sql = resultSetForSetProvider.getSQL();
391
                        System.out.println("###### SQL:" + sql);
392
                        System.out.println("###### EXP:" + expectedSQLs.get(10));
393

    
394
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(10), sql);
395
                } catch (Throwable th) {
396
                    LOGGER.warn("", th);
397
                        throw th;
398
                }
399
        }
400

    
401
        public void testSubselect() throws Exception {
402
                JDBCHelper helper = TestUtils.createJDBCHelper();
403
                JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
404
                OperationsFactory operations = helper.getOperations();
405

    
406
                List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
407

    
408
                FeatureStore sourceStore = TestUtils.openSourceStore1();
409

    
410
                TableReference table = operations.createTableReference(
411
                        "dbtest",
412
                        sqlbuilder.default_schema(),
413
                        "test",
414
                        null
415
                );
416
                StringBuilder filter = new StringBuilder();
417
                filter.append("EXISTS(");
418
                filter.append(" SELECT \"ISO_A2\" FROM countries");
419
                filter.append("   WHERE ");
420
                filter.append("     TEST.STRING = countries.CONTINENT AND ");
421
                filter.append("     countries.LASTCENSUS < 0 ");
422
                filter.append("   LIMIT 1;, ");
423
                filter.append(" 'EXISTS62a964cd7bc24f409b97c03b9170408d' ");
424
                filter.append(")");
425
                FeatureType featureType = sourceStore.getDefaultFeatureType();
426
                FeatureQuery query = sourceStore.createFeatureQuery();
427
                query.addFilter(filter.toString());
428
                ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
429
                        table,
430
                        null,
431
                        null,
432
                        query,
433
                        featureType,
434
                        featureType,
435
                        0,
436
                        0,
437
                        0
438
                );
439
                String sql = resultSetForSetProvider.getSQL();
440
                System.out.println("###### SQL:" + sql);
441
                System.out.println("###### EXP:" + expectedSQLs.get(2));
442

    
443
                assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(2), sql);
444
        }
445

    
446
        public void testGroupAndSubselect() throws Exception {
447
                JDBCHelper helper = TestUtils.createJDBCHelper();
448
                JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
449
                OperationsFactory operations = helper.getOperations();
450

    
451
                List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
452

    
453
                FeatureStore sourceStore = TestUtils.openSourceStore1();
454

    
455
                TableReference table = operations.createTableReference(
456
                        "dbtest",
457
                        sqlbuilder.default_schema(),
458
                        "test",
459
                        null
460
                );
461
                StringBuilder filter = new StringBuilder();
462
                filter.append("EXISTS(");
463
                filter.append(" SELECT \"ISO_A2\" FROM countries");
464
                filter.append("   WHERE ");
465
                filter.append("     TEST.STRING = countries.CONTINENT AND ");
466
                filter.append("     countries.LASTCENSUS < 0 ");
467
                filter.append("   LIMIT 1;, ");
468
                filter.append(" 'EXISTS62a964cd7bc24f409b97c03b9170408d' ");
469
                filter.append(")");
470
                FeatureType featureType = sourceStore.getDefaultFeatureType();
471
                FeatureQuery query = sourceStore.createFeatureQuery();
472
                query.getGroupByColumns().add("Long");
473
                query.getAggregateFunctions().put("ID", "MIN");
474
                query.getAggregateFunctions().put("Byte", "MAX");
475
                query.getAggregateFunctions().put("Double", "SUM");
476
                query.addFilter(filter.toString());
477
                ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
478
                        table,
479
                        null,
480
                        null,
481
                        query,
482
                        featureType,
483
                        featureType,
484
                        0,
485
                        0,
486
                        0
487
                );
488
                String sql = resultSetForSetProvider.getSQL();
489
                System.out.println("###### SQL:" + sql);
490
                System.out.println("###### EXP:" + expectedSQLs.get(3));
491

    
492
                assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(3), sql);
493
        }
494

    
495
        public void testConstantColumnPrimaryKey() throws Exception {
496
                JDBCHelper helper = TestUtils.createJDBCHelper();
497
                JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
498
                OperationsFactory operations = helper.getOperations();
499

    
500
                List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
501

    
502
                FeatureStore sourceStore = TestUtils.openSourceStore1();
503

    
504
                TableReference table = operations.createTableReference(
505
                        "dbtest",
506
                        sqlbuilder.default_schema(),
507
                        "test",
508
                        null
509
                );
510
//    meterle como constantCOlumn ID
511

    
512
                FeatureType featureType = sourceStore.getDefaultFeatureType();
513
                FeatureQuery query = sourceStore.createFeatureQuery();
514

    
515
                query.setConstantsAttributeNames(new String[]{"ID"});
516

    
517
                ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
518
                        table,
519
                        null,
520
                        null,
521
                        query,
522
                        featureType,
523
                        featureType,
524
                        0,
525
                        0,
526
                        0
527
                );
528
                String sql = resultSetForSetProvider.getSQL();
529
                System.out.println("###### SQL:" + sql);
530
                System.out.println("###### EXP:" + expectedSQLs.get(4));
531

    
532
                assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(4), sql);
533
        }
534

    
535
        // TODO: a?adir un test con where, group y order.
536
}