2013-11-14 11 views
8

Se abbiamo migrazioni come:In che modo Flyway ordina i numeri di versione?

V1_6__six.sql 
V1_7__seven.sql 
V1_8__eight.sql 
V1_9__nine.sql 

Cosa dovremmo usare per la prossima versione?

Se usiamo V1_10 verrà dopo V1__9? O dovremmo prefisso i numeri di versione a una cifra con un 0?

In realtà la domanda è: i numeri di versione sono ordinati numericamente o in ordine alfabetico?

risposta

6

In una parola: numericamente. Come ci si aspetterebbe per un numero.

+0

Mi piacerebbe riutilizzare la "parte di ordinamento". quale file dovrei guardare? – piotrek

+0

@ Axel-Fontaine: non sembra esattamente il caso, a meno di non fraintendere che: '1.1.015 | blah1 | | In attesa | 1.2.001 | blah2 | | In attesa | 1.2.1.001 | blah3 | | In attesa | 1.2.1.002 | blah4 | | In attesa | 1.2.002 | blah7 | | In attesa | 1.2.003 | blah8 | | In sospeso | ' –

+0

Siamo spiacenti - Impossibile la formattazione in questo modo: http://pastebin.com/7uvXVsqT –

0

Per una risposta definitiva su come avviene lo smistamento, è possibile fare riferimento al codice. Questo test è particolarmente utile.

@Test 
public void testNumber() { 
    final MigrationVersion a1 = MigrationVersion.fromVersion("1.2.13.3"); 
    final MigrationVersion a2 = MigrationVersion.fromVersion("1.2.3.3"); 
    assertTrue(a1.compareTo(a2) > 0); 
} 

@Test 
public void testLength1() { 
    final MigrationVersion a1 = MigrationVersion.fromVersion("1.2.1.3"); 
    final MigrationVersion a2 = MigrationVersion.fromVersion("1.2.1"); 
    assertTrue(a1.compareTo(a2) > 0); 
} 

@Test 
public void testLength2() { 
    final MigrationVersion a1 = MigrationVersion.fromVersion("1.2.1"); 
    final MigrationVersion a2 = MigrationVersion.fromVersion("1.2.1.1"); 
    assertTrue(a1.compareTo(a2) < 0); 
} 

@Test 
public void leadingZeroes() { 
    final MigrationVersion v1 = MigrationVersion.fromVersion("1.0"); 
    final MigrationVersion v2 = MigrationVersion.fromVersion("001.0"); 
    assertTrue(v1.compareTo(v2) == 0); 
    assertTrue(v1.equals(v2)); 
    assertEquals(v1.hashCode(), v2.hashCode()); 
} 
Problemi correlati