Verify support for H2 database aliases in SQL scripts
This commit introduces a test to demonstrate how to define an alias in an SQL script executed against an embedded H2 database. Issue: SPR-15896
This commit is contained in:
parent
582014e944
commit
4e81ee5fdf
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2014 the original author or authors.
|
* Copyright 2002-2017 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -38,7 +38,7 @@ import static org.mockito.Mockito.*;
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractDatabasePopulatorTests extends AbstractDatabaseInitializationTests {
|
public abstract class AbstractDatabasePopulatorTests extends AbstractDatabaseInitializationTests {
|
||||||
|
|
||||||
private final ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
|
protected final ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2014 the original author or authors.
|
* Copyright 2002-2017 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -16,8 +16,12 @@
|
||||||
|
|
||||||
package org.springframework.jdbc.datasource.init;
|
package org.springframework.jdbc.datasource.init;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.*;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sam Brannen
|
* @author Sam Brannen
|
||||||
* @since 4.0.3
|
* @since 4.0.3
|
||||||
|
@ -28,4 +32,22 @@ public class H2DatabasePopulatorTests extends AbstractDatabasePopulatorTests {
|
||||||
return EmbeddedDatabaseType.H2;
|
return EmbeddedDatabaseType.H2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://jira.spring.io/browse/SPR-15896
|
||||||
|
*
|
||||||
|
* @since 5.0
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void scriptWithH2Alias() throws Exception {
|
||||||
|
databasePopulator.addScript(usersSchema());
|
||||||
|
databasePopulator.addScript(resource("db-test-data-h2-alias.sql"));
|
||||||
|
// Set statement separator to double newline so that ";" is not
|
||||||
|
// considered a statement separator within the source code of the
|
||||||
|
// aliased function 'REVERSE'.
|
||||||
|
databasePopulator.setSeparator("\n\n");
|
||||||
|
DatabasePopulatorUtils.execute(databasePopulator, db);
|
||||||
|
String sql = "select REVERSE(first_name) from users where last_name='Brannen'";
|
||||||
|
assertThat(jdbcTemplate.queryForObject(sql, String.class), equalTo("maS"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
DROP ALIAS IF EXISTS REVERSE;
|
||||||
|
|
||||||
|
-- REVERSE function borrowed from http://www.h2database.com/html/grammar.html#create_alias
|
||||||
|
CREATE ALIAS REVERSE AS $$
|
||||||
|
String reverse(String s) {
|
||||||
|
return new StringBuilder(s).reverse().toString();
|
||||||
|
}
|
||||||
|
$$;
|
||||||
|
|
||||||
|
INSERT INTO users(first_name, last_name) values('Sam', 'Brannen');
|
Loading…
Reference in New Issue