daff 1.2.6 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -6
  3. data/bin/daff.rb +0 -0
  4. data/lib/daff.rb +6 -0
  5. data/lib/lib/coopy/alignment.rb +146 -169
  6. data/lib/lib/coopy/cell_builder.rb +1 -1
  7. data/lib/lib/coopy/cell_info.rb +2 -1
  8. data/lib/lib/coopy/column_change.rb +16 -0
  9. data/lib/lib/coopy/compare_flags.rb +33 -5
  10. data/lib/lib/coopy/compare_table.rb +219 -99
  11. data/lib/lib/coopy/coopy.rb +205 -99
  12. data/lib/lib/coopy/csv.rb +17 -22
  13. data/lib/lib/coopy/diff_render.rb +16 -8
  14. data/lib/lib/coopy/flat_cell_builder.rb +11 -8
  15. data/lib/lib/coopy/highlight_patch.rb +363 -63
  16. data/lib/lib/coopy/highlight_patch_unit.rb +1 -1
  17. data/lib/lib/coopy/index.rb +21 -8
  18. data/lib/lib/coopy/index_item.rb +7 -3
  19. data/lib/lib/coopy/index_pair.rb +13 -10
  20. data/lib/lib/coopy/merger.rb +3 -3
  21. data/lib/lib/coopy/meta.rb +17 -0
  22. data/lib/lib/coopy/mover.rb +7 -5
  23. data/lib/lib/coopy/ndjson.rb +2 -2
  24. data/lib/lib/coopy/nested_cell_builder.rb +7 -7
  25. data/lib/lib/coopy/ordering.rb +6 -2
  26. data/lib/lib/coopy/property_change.rb +16 -0
  27. data/lib/lib/coopy/row.rb +1 -0
  28. data/lib/lib/coopy/row_change.rb +42 -0
  29. data/lib/lib/coopy/row_stream.rb +11 -0
  30. data/lib/lib/coopy/simple_table.rb +84 -30
  31. data/lib/lib/coopy/simple_view.rb +8 -8
  32. data/lib/lib/coopy/sparse_sheet.rb +1 -1
  33. data/lib/lib/coopy/sql_column.rb +22 -10
  34. data/lib/lib/coopy/sql_compare.rb +397 -85
  35. data/lib/lib/coopy/sql_database.rb +2 -0
  36. data/lib/lib/coopy/sql_helper.rb +5 -0
  37. data/lib/lib/coopy/sql_table.rb +122 -19
  38. data/lib/lib/coopy/sql_table_name.rb +1 -1
  39. data/lib/lib/coopy/sqlite_helper.rb +250 -3
  40. data/lib/lib/coopy/table.rb +1 -0
  41. data/lib/lib/coopy/table_diff.rb +643 -464
  42. data/lib/lib/coopy/table_io.rb +19 -6
  43. data/lib/lib/coopy/table_modifier.rb +1 -1
  44. data/lib/lib/coopy/table_stream.rb +102 -0
  45. data/lib/lib/coopy/terminal_diff_render.rb +4 -3
  46. data/lib/lib/coopy/unit.rb +22 -2
  47. data/lib/lib/coopy/viterbi.rb +4 -4
  48. data/lib/lib/haxe/ds/int_map.rb +1 -1
  49. data/lib/lib/haxe/ds/string_map.rb +1 -1
  50. data/lib/lib/haxe/format/json_parser.rb +1 -1
  51. data/lib/lib/haxe/format/json_printer.rb +1 -1
  52. data/lib/lib/haxe/io/bytes.rb +2 -2
  53. data/lib/lib/haxe/io/eof.rb +1 -1
  54. data/lib/lib/haxe/io/output.rb +1 -1
  55. data/lib/lib/hx_overrides.rb +1 -1
  56. data/lib/lib/hx_sys.rb +9 -5
  57. data/lib/lib/lambda.rb +3 -3
  58. data/lib/lib/list.rb +1 -1
  59. data/lib/lib/rb/ruby_iterator.rb +2 -2
  60. data/lib/lib/reflect.rb +1 -1
  61. data/lib/lib/sys/io/file_output.rb +1 -1
  62. data/lib/lib/sys/io/hx_file.rb +1 -1
  63. data/lib/lib/x_list/list_iterator.rb +2 -2
  64. metadata +29 -25
  65. data/lib/lib/coopy/table_text.rb +0 -26
  66. data/lib/lib/haxe/io/bytes_buffer.rb +0 -19
  67. data/lib/lib/haxe/io/bytes_input.rb +0 -13
  68. data/lib/lib/haxe/io/bytes_output.rb +0 -33
  69. data/lib/lib/haxe/io/input.rb +0 -11
@@ -10,7 +10,7 @@ module Coopy
10
10
  def update(local,remote) puts "Abstract CellBuilder.update called" end
11
11
  def conflict(parent,local,remote) puts "Abstract CellBuilder.conflict called" end
12
12
  def marker(label) puts "Abstract CellBuilder.marker called" end
13
- def links(unit) puts "Abstract CellBuilder.links called" end
13
+ def links(unit,row_like) puts "Abstract CellBuilder.links called" end
14
14
  haxe_me ["coopy", "CellBuilder"]
15
15
  end
16
16
 
@@ -19,11 +19,12 @@ module Coopy
19
19
  attr_accessor :pvalue
20
20
  attr_accessor :lvalue
21
21
  attr_accessor :rvalue
22
+ attr_accessor :meta
22
23
 
23
24
  def to_s
24
25
  return @value if !@updated
25
26
  return _hx_str(@lvalue) + "::" + _hx_str(@rvalue) if !@conflicted
26
- return _hx_str(@pvalue) + "||" + _hx_str(@lvalue) + "::" + _hx_str(@rvalue)
27
+ _hx_str(@pvalue) + "||" + _hx_str(@lvalue) + "::" + _hx_str(@rvalue)
27
28
  end
28
29
 
29
30
  haxe_me ["coopy", "CellInfo"]
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ module Coopy
5
+ class ColumnChange
6
+
7
+ def initialize
8
+ end
9
+
10
+ attr_accessor :prev_name
11
+ attr_accessor :name
12
+ attr_accessor :props
13
+ haxe_me ["coopy", "ColumnChange"]
14
+ end
15
+
16
+ end
@@ -17,6 +17,13 @@ module Coopy
17
17
  @ids = nil
18
18
  @columns_to_ignore = nil
19
19
  @allow_nested_cells = false
20
+ @warnings = nil
21
+ @diff_strategy = nil
22
+ @show_meta = true
23
+ @show_unchanged_meta = false
24
+ @tables = nil
25
+ @parent = nil
26
+ @count_like_a_spreadsheet = true
20
27
  end
21
28
 
22
29
  attr_accessor :ordered
@@ -30,7 +37,14 @@ module Coopy
30
37
  attr_accessor :acts
31
38
  attr_accessor :ids
32
39
  attr_accessor :columns_to_ignore
40
+ attr_accessor :tables
33
41
  attr_accessor :allow_nested_cells
42
+ attr_accessor :warnings
43
+ attr_accessor :diff_strategy
44
+ attr_accessor :show_meta
45
+ attr_accessor :show_unchanged_meta
46
+ attr_accessor :parent
47
+ attr_accessor :count_like_a_spreadsheet
34
48
 
35
49
  def filter(act,allow)
36
50
  if @acts == nil
@@ -41,22 +55,22 @@ module Coopy
41
55
  end
42
56
  return false if !@acts.include?(act)
43
57
  @acts[act] = allow
44
- return true
58
+ true
45
59
  end
46
60
 
47
61
  def allow_update
48
62
  return true if @acts == nil
49
- return @acts.include?("update")
63
+ @acts.include?("update")
50
64
  end
51
65
 
52
66
  def allow_insert
53
67
  return true if @acts == nil
54
- return @acts.include?("insert")
68
+ @acts.include?("insert")
55
69
  end
56
70
 
57
71
  def allow_delete
58
72
  return true if @acts == nil
59
- return @acts.include?("delete")
73
+ @acts.include?("delete")
60
74
  end
61
75
 
62
76
  def get_ignored_columns
@@ -71,7 +85,7 @@ module Coopy
71
85
  ignore[@columns_to_ignore[i]] = true
72
86
  end
73
87
  end
74
- return ignore
88
+ ignore
75
89
  end
76
90
 
77
91
  def add_primary_key(column)
@@ -84,6 +98,20 @@ module Coopy
84
98
  @columns_to_ignore.push(column)
85
99
  end
86
100
 
101
+ def add_table(table)
102
+ @tables = Array.new if @tables == nil
103
+ @tables.push(table)
104
+ end
105
+
106
+ def add_warning(warn)
107
+ @warnings = Array.new if @warnings == nil
108
+ @warnings.push(warn)
109
+ end
110
+
111
+ def get_warning
112
+ @warnings.join("\n")
113
+ end
114
+
87
115
  haxe_me ["coopy", "CompareFlags"]
88
116
  end
89
117
 
@@ -6,6 +6,9 @@ module Coopy
6
6
 
7
7
  def initialize(comp)
8
8
  @comp = comp
9
+ if comp.compare_flags != nil
10
+ comp.p = comp.compare_flags.parent if comp.compare_flags.parent != nil
11
+ end
9
12
  end
10
13
 
11
14
  protected
@@ -16,11 +19,15 @@ module Coopy
16
19
  public
17
20
 
18
21
  def run
22
+ if self.use_sql
23
+ @comp.completed = true
24
+ return false
25
+ end
19
26
  more = self.compare_core
20
27
  while(more && @comp.run_to_completion)
21
28
  more = self.compare_core
22
29
  end
23
- return !more
30
+ !more
24
31
  end
25
32
 
26
33
  def align
@@ -29,16 +36,34 @@ module Coopy
29
36
  end
30
37
  alignment = ::Coopy::Alignment.new
31
38
  self.align_core(alignment)
32
- return alignment
39
+ alignment
33
40
  end
34
41
 
35
42
  def get_comparison_state
36
- return @comp
43
+ @comp
37
44
  end
38
45
 
39
46
  protected
40
47
 
41
48
  def align_core(align)
49
+ if self.use_sql
50
+ tab1 = nil
51
+ tab2 = nil
52
+ tab3 = nil
53
+ if @comp.p == nil
54
+ tab1 = @comp.a
55
+ tab2 = @comp.b
56
+ else
57
+ align.reference = ::Coopy::Alignment.new
58
+ tab1 = @comp.p
59
+ tab2 = @comp.b
60
+ tab3 = @comp.a
61
+ end
62
+ sc = ::Coopy::SqlCompare.new(tab1.get_database,tab1,tab2,tab3,align)
63
+ sc.apply
64
+ align.meta.reference = align.reference.meta if @comp.p != nil
65
+ return
66
+ end
42
67
  if @comp.p == nil
43
68
  self.align_core2(align,@comp.a,@comp.b)
44
69
  return
@@ -90,8 +115,13 @@ module Coopy
90
115
  end
91
116
  end
92
117
  end
118
+ index_top = nil
119
+ pending_ct = ha
120
+ reverse_pending_ct = hb
121
+ used = {}
122
+ used_reverse = {}
93
123
  if ids != nil
94
- index = ::Coopy::IndexPair.new
124
+ index_top = ::Coopy::IndexPair.new
95
125
  ids_as_map = {}
96
126
  begin
97
127
  _g2 = 0
@@ -112,23 +142,27 @@ module Coopy
112
142
  na = av.to_s(a.get_cell(unit1.l,0))
113
143
  nb = av.to_s(b.get_cell(unit1.r,0))
114
144
  if ids_as_map.include?(na) || ids_as_map.include?(nb)
115
- index.add_columns(unit1.l,unit1.r)
145
+ index_top.add_columns(unit1.l,unit1.r)
116
146
  align.add_index_columns(unit1)
117
147
  end
118
148
  end
119
149
  end
120
- index.index_tables(a,b)
121
- @indexes.push(index) if @indexes != nil
150
+ index_top.index_tables(a,b,1)
151
+ @indexes.push(index_top) if @indexes != nil
122
152
  begin
123
153
  _g4 = 0
124
154
  while(_g4 < ha)
125
155
  j = _g4
126
156
  _g4+=1
127
- cross = index.query_local(j)
157
+ cross = index_top.query_local(j)
128
158
  spot_a = cross.spot_a
129
159
  spot_b = cross.spot_b
130
160
  next if spot_a != 1 || spot_b != 1
131
- align.link(j,cross.item_b.lst[0])
161
+ jb = cross.item_b.lst[0]
162
+ align.link(j,jb)
163
+ used[jb] = 1
164
+ reverse_pending_ct-=1 if !used_reverse.include?(j)
165
+ used_reverse[j] = 1
132
166
  end
133
167
  end
134
168
  else
@@ -179,11 +213,11 @@ module Coopy
179
213
  return -1 if a1[1] > b1[1]
180
214
  return 1 if a1[0] > b1[0]
181
215
  return -1 if a1[0] < b1[0]
182
- return 0
216
+ 0
183
217
  }
184
- columns_eval.sort{|a,b| sorter.call(a,b)}
218
+ columns_eval.sort!{|a,b| sorter.call(a,b)}
185
219
  columns = Lambda.array(Lambda.map(columns_eval,lambda {|v|
186
- return v[0]
220
+ v[0]
187
221
  }))
188
222
  columns = columns.slice(0,n - 1)
189
223
  else
@@ -209,10 +243,8 @@ module Coopy
209
243
  pending[j3] = j3
210
244
  end
211
245
  end
212
- pending_ct = ha
213
246
  added_columns = {}
214
247
  index_ct = 0
215
- index_top = nil
216
248
  begin
217
249
  _g8 = 0
218
250
  while(_g8 < top)
@@ -228,7 +260,7 @@ module Coopy
228
260
  kk >>= 1
229
261
  at+=1
230
262
  end
231
- index1 = ::Coopy::IndexPair.new
263
+ index = ::Coopy::IndexPair.new
232
264
  begin
233
265
  _g23 = 0
234
266
  _g13 = active_columns.length
@@ -237,36 +269,42 @@ module Coopy
237
269
  _g23+=1
238
270
  col = active_columns[k1]
239
271
  unit2 = common_units[col]
240
- index1.add_columns(unit2.l,unit2.r)
272
+ index.add_columns(unit2.l,unit2.r)
241
273
  if !added_columns.include?(col)
242
274
  align.add_index_columns(unit2)
243
275
  added_columns[col] = true
244
276
  end
245
277
  end
246
278
  end
247
- index1.index_tables(a,b)
248
- index_top = index1 if k == top - 1
279
+ index.index_tables(a,b,1)
280
+ index_top = index if k == top - 1
249
281
  h = a.get_height
250
282
  h = b.get_height if b.get_height > h
251
283
  h = 1 if h < 1
252
- wide_top_freq = index1.get_top_freq
284
+ wide_top_freq = index.get_top_freq
253
285
  ratio = wide_top_freq
254
286
  ratio /= h + 20
255
287
  if ratio >= 0.1
256
288
  next if index_ct > 0 || k < top - 1
257
289
  end
258
290
  index_ct+=1
259
- @indexes.push(index1) if @indexes != nil
291
+ @indexes.push(index) if @indexes != nil
260
292
  fixed = Array.new
261
293
  _it = ::Rb::RubyIterator.new(pending.keys)
262
294
  while(_it.has_next) do
263
295
  j4 = _it._next
264
- cross1 = index1.query_local(j4)
296
+ cross1 = index.query_local(j4)
265
297
  spot_a1 = cross1.spot_a
266
298
  spot_b1 = cross1.spot_b
267
299
  next if spot_a1 != 1 || spot_b1 != 1
268
- fixed.push(j4)
269
- align.link(j4,cross1.item_b.lst[0])
300
+ val = cross1.item_b.lst[0]
301
+ if !used.include?(val)
302
+ fixed.push(j4)
303
+ align.link(j4,val)
304
+ used[val] = 1
305
+ reverse_pending_ct-=1 if !used_reverse.include?(j4)
306
+ used_reverse[j4] = 1
307
+ end
270
308
  end
271
309
  begin
272
310
  _g24 = 0
@@ -280,47 +318,107 @@ module Coopy
280
318
  end
281
319
  end
282
320
  end
283
- if index_top != nil
284
- offset = 0
285
- scale = 1
286
- begin
287
- _g9 = 0
288
- while(_g9 < 2)
289
- sgn = _g9
290
- _g9+=1
291
- if pending_ct > 0
292
- xb = nil
293
- xb = hb - 1 if scale == -1 && hb > 0
294
- begin
295
- _g15 = 0
296
- while(_g15 < ha)
297
- xa0 = _g15
298
- _g15+=1
299
- xa = xa0 * scale + offset
300
- xb2 = align.a2b(xa)
301
- if xb2 != nil
302
- xb = xb2 + scale
303
- break if xb >= hb || xb < 0
304
- next
305
- end
306
- next if xb == nil
307
- ka = index_top.local_key(xa)
308
- kb = index_top.remote_key(xb)
309
- next if ka != kb
310
- align.link(xa,xb)
311
- pending_ct-=1
312
- xb += scale
321
+ end
322
+ if index_top != nil
323
+ offset = 0
324
+ scale = 1
325
+ begin
326
+ _g9 = 0
327
+ while(_g9 < 2)
328
+ sgn = _g9
329
+ _g9+=1
330
+ if pending_ct > 0
331
+ xb = nil
332
+ xb = hb - 1 if scale == -1 && hb > 0
333
+ begin
334
+ _g15 = 0
335
+ while(_g15 < ha)
336
+ xa0 = _g15
337
+ _g15+=1
338
+ xa = xa0 * scale + offset
339
+ xb2 = align.a2b(xa)
340
+ if xb2 != nil
341
+ xb = xb2 + scale
313
342
  break if xb >= hb || xb < 0
314
- break if pending_ct == 0
343
+ next
315
344
  end
345
+ next if xb == nil
346
+ ka = index_top.local_key(xa)
347
+ kb = index_top.remote_key(xb)
348
+ next if ka != kb
349
+ next if used.include?(xb)
350
+ align.link(xa,xb)
351
+ used[xb] = 1
352
+ used_reverse[xa] = 1
353
+ pending_ct-=1
354
+ xb += scale
355
+ break if xb >= hb || xb < 0
356
+ break if pending_ct == 0
316
357
  end
317
358
  end
318
- offset = ha - 1
319
- scale = -1
320
359
  end
360
+ offset = ha - 1
361
+ scale = -1
362
+ end
363
+ end
364
+ offset = 0
365
+ scale = 1
366
+ begin
367
+ _g10 = 0
368
+ while(_g10 < 2)
369
+ sgn1 = _g10
370
+ _g10+=1
371
+ if reverse_pending_ct > 0
372
+ xa1 = nil
373
+ xa1 = ha - 1 if scale == -1 && ha > 0
374
+ begin
375
+ _g16 = 0
376
+ while(_g16 < hb)
377
+ xb0 = _g16
378
+ _g16+=1
379
+ xb1 = xb0 * scale + offset
380
+ xa2 = align.b2a(xb1)
381
+ if xa2 != nil
382
+ xa1 = xa2 + scale
383
+ break if xa1 >= ha || xa1 < 0
384
+ next
385
+ end
386
+ next if xa1 == nil
387
+ ka1 = index_top.local_key(xa1)
388
+ kb1 = index_top.remote_key(xb1)
389
+ next if ka1 != kb1
390
+ next if used_reverse.include?(xa1)
391
+ align.link(xa1,xb1)
392
+ used[xb1] = 1
393
+ used_reverse[xa1] = 1
394
+ reverse_pending_ct-=1
395
+ xa1 += scale
396
+ break if xa1 >= ha || xa1 < 0
397
+ break if reverse_pending_ct == 0
398
+ end
399
+ end
400
+ end
401
+ offset = hb - 1
402
+ scale = -1
321
403
  end
322
404
  end
323
405
  end
406
+ begin
407
+ _g17 = 1
408
+ while(_g17 < ha)
409
+ i2 = _g17
410
+ _g17+=1
411
+ align.link(i2,-1) if !used_reverse.include?(i2)
412
+ end
413
+ end
414
+ begin
415
+ _g18 = 1
416
+ while(_g18 < hb)
417
+ i3 = _g18
418
+ _g18+=1
419
+ align.link(-1,i3) if !used.include?(i3)
420
+ end
421
+ end
324
422
  align.link(0,0) if ha > 0 && hb > 0
325
423
  end
326
424
 
@@ -345,57 +443,59 @@ module Coopy
345
443
  while(_g < slop)
346
444
  ra = _g
347
445
  _g+=1
348
- break if ra >= a.get_height
349
446
  begin
350
447
  _g1 = 0
351
448
  while(_g1 < slop)
352
449
  rb1 = _g1
353
450
  _g1+=1
354
- break if rb1 >= b.get_height
355
451
  ma = {}
356
452
  mb = {}
357
453
  ct = 0
358
454
  uniques = 0
359
- begin
360
- _g3 = 0
361
- _g2 = a.get_width
362
- while(_g3 < _g2)
363
- ca = _g3
364
- _g3+=1
365
- key = va.to_s(a.get_cell(ca,ra))
366
- if ma.include?(key)
367
- ma[key] = -1
368
- uniques-=1
369
- else
370
- ma[key] = ca
371
- uniques+=1
455
+ if ra < a.get_height
456
+ begin
457
+ _g3 = 0
458
+ _g2 = a.get_width
459
+ while(_g3 < _g2)
460
+ ca = _g3
461
+ _g3+=1
462
+ key = va.to_s(a.get_cell(ca,ra))
463
+ if ma.include?(key)
464
+ ma[key] = -1
465
+ uniques-=1
466
+ else
467
+ ma[key] = ca
468
+ uniques+=1
469
+ end
372
470
  end
373
471
  end
374
- end
375
- if uniques > ra_uniques
376
- ra_header = ra
377
- ra_uniques = uniques
472
+ if uniques > ra_uniques
473
+ ra_header = ra
474
+ ra_uniques = uniques
475
+ end
378
476
  end
379
477
  uniques = 0
380
- begin
381
- _g31 = 0
382
- _g21 = b.get_width
383
- while(_g31 < _g21)
384
- cb = _g31
385
- _g31+=1
386
- key1 = vb.to_s(b.get_cell(cb,rb1))
387
- if mb.include?(key1)
388
- mb[key1] = -1
389
- uniques-=1
390
- else
391
- mb[key1] = cb
392
- uniques+=1
478
+ if rb1 < b.get_height
479
+ begin
480
+ _g31 = 0
481
+ _g21 = b.get_width
482
+ while(_g31 < _g21)
483
+ cb = _g31
484
+ _g31+=1
485
+ key1 = vb.to_s(b.get_cell(cb,rb1))
486
+ if mb.include?(key1)
487
+ mb[key1] = -1
488
+ uniques-=1
489
+ else
490
+ mb[key1] = cb
491
+ uniques+=1
492
+ end
393
493
  end
394
494
  end
395
- end
396
- if uniques > rb_uniques
397
- rb_header = rb1
398
- rb_uniques = uniques
495
+ if uniques > rb_uniques
496
+ rb_header = rb1
497
+ rb_uniques = uniques
498
+ end
399
499
  end
400
500
  _it = ::Rb::RubyIterator.new(ma.keys)
401
501
  while(_it.has_next) do
@@ -430,7 +530,20 @@ module Coopy
430
530
  key3 = _it2._next
431
531
  i01 = ma_best[key3]
432
532
  i11 = mb_best[key3]
433
- align.link(i01,i11) if i11 != nil && i01 != nil
533
+ if i01 != nil && i11 != nil
534
+ align.link(i01,i11)
535
+ elsif i01 != nil
536
+ align.link(i01,-1)
537
+ elsif i11 != nil
538
+ align.link(-1,i11)
539
+ end
540
+ end
541
+ _it3 = ::Rb::RubyIterator.new(mb_best.keys)
542
+ while(_it3.has_next) do
543
+ key4 = _it3._next
544
+ i02 = ma_best[key4]
545
+ i12 = mb_best[key4]
546
+ align.link(-1,i12) if i02 == nil && i12 != nil
434
547
  end
435
548
  align.headers(ra_header,rb_header)
436
549
  end
@@ -443,7 +556,7 @@ module Coopy
443
556
  eq = self.has_same_columns2(p,a) if eq && p != nil
444
557
  @comp.has_same_columns = eq
445
558
  @comp.has_same_columns_known = true
446
- return true
559
+ true
447
560
  end
448
561
 
449
562
  def has_same_columns2(a,b)
@@ -468,7 +581,7 @@ module Coopy
468
581
  return false if !av.equals(a.get_cell(i,0),b.get_cell(i,0))
469
582
  end
470
583
  end
471
- return true
584
+ true
472
585
  end
473
586
 
474
587
  def test_is_equal
@@ -479,7 +592,7 @@ module Coopy
479
592
  eq = self.is_equal2(p,a) if eq && p != nil
480
593
  @comp.is_equal = eq
481
594
  @comp.is_equal_known = true
482
- return true
595
+ true
483
596
  end
484
597
 
485
598
  def is_equal2(a,b)
@@ -502,7 +615,7 @@ module Coopy
502
615
  end
503
616
  end
504
617
  end
505
- return true
618
+ true
506
619
  end
507
620
 
508
621
  def compare_core
@@ -510,7 +623,7 @@ module Coopy
510
623
  return self.test_is_equal if !@comp.is_equal_known
511
624
  return self.test_has_same_columns if !@comp.has_same_columns_known
512
625
  @comp.completed = true
513
- return false
626
+ false
514
627
  end
515
628
 
516
629
  public
@@ -520,7 +633,14 @@ module Coopy
520
633
  end
521
634
 
522
635
  def get_indexes
523
- return @indexes
636
+ @indexes
637
+ end
638
+
639
+ protected
640
+
641
+ def use_sql
642
+ return false if @comp.compare_flags == nil
643
+ @comp.compare_flags.diff_strategy == "sql"
524
644
  end
525
645
 
526
646
  haxe_me ["coopy", "CompareTable"]