标签: dirtyread

Postgres中的脏读

我有一个长时间运行的功能,应插入新行.如何查看此功能的进度?

我认为脏读将起作用所以我阅读http://www.postgresql.org/docs/8.4/interactive/sql-set-transaction.html并提出以下代码并在新会话中运行它:


SET SESSION CHARACTERISTICS AS SERIALIZABLE;

SELECT * FROM MyTable;
Run Code Online (Sandbox Code Playgroud)

Postgres给我一个语法错误.我究竟做错了什么?如果我做对了,那么当长函数仍在运行时,我会看到插入的记录吗?

谢谢

postgresql dirtyread

6
推荐指数
2
解决办法
8009
查看次数

运行H2时的DB2语法(限制和脏读)(在DB2模式下)

我有一些方法,我正在尝试单元测试.这些方法使用Spring JdbcTemplates对DB2 v8运行正常(在生产中).

每个SQL通过在语句中附加"WITH UR"来允许"脏读".此外,它们中的一些通过添加例如"FETCH FIRST 1 ROWS ONLY"来使用"限制".

这对于真正的DB2工作正常,但我想对内存数据库进行单元测试 - 这就是H2进入的地方.

如果我删除"WITH UR"和"FETCH FIRST ..",一切正常,但我不想更改方法,只需更改后端数据库.

据我所知,这不是直接使用H2,因为语法不同(虽然我使用MODE = DB2).

现在,该怎么办?我应该/可以使用另一个内存数据库吗?我不想改变方法,也不想添加"测试"功能/黑客,所以这是不行的.

想法和同样非常感谢!

编辑

我不确定它是我还是什么,但我得到以下错误.注意,我使用的是Spring 3.1和H2 1.3.166,数据库的url是"jdbc:h2:〜/ testdb; MODE = DB2".我不知道它为什么会失败,因为sql在H2控制台中运行时起作用,但不是来自我的单元测试(猜测它不是H2坏了):

Tests run: 3, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.109 sec <<< FAILURE!
getAdvisor(impl.AdvisorServiceDaoImplTest)  Time elapsed: 0.078 sec  <<< ERROR!
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM ADVISOR FETCH FIRST 1 ROWS ONLY ]; nested exception is org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT * FROM ADVISOR FETCH[*] …
Run Code Online (Sandbox Code Playgroud)

java spring h2 limit dirtyread

3
推荐指数
1
解决办法
4460
查看次数

Java:对ArrayList进行脏检查?

如何ArrayList在Java中执行脏检查?

我有一个对象

Animal
{
    String animalName;
    String animalType;
    String animalPlace
}
Run Code Online (Sandbox Code Playgroud)

我有两个清单:

List<Animal> animalList1 = new ArrayList<Animal>();
List<Animal> animalList2 = new ArrayList<Animal>();
Run Code Online (Sandbox Code Playgroud)

在第一个列表中,我有值:

[0][lion,Carnivorous,Africa]
[1][tiger,Carnivorous,Zambia]
[2][Goat,Herbivorous,Zimbabwe]
Run Code Online (Sandbox Code Playgroud)

在第二个列表中,我有以下值:

[0][lion,Carnivorous,Africa]
[1][tiger,Carnivorous,Zambia]
[2][Goat,Herbivorous,Norway]
Run Code Online (Sandbox Code Playgroud)

在第二个清单中,animalPlace索引2的元素已从津巴布韦变为挪威.如何比较两个列表值和已更改的值将该对象放在单独的列表中?

List<Animal> animalList3 = new ArrayList<Animal>();

[0] [Goat,Herbivorous,Norway]
Run Code Online (Sandbox Code Playgroud)

通过使用for循环比较列表,我知道传统的方法:

for (int i = 0; i < list1.size(); i++) 
{
  for (int j = i+1; j < list2.size(); j++) 
  {
    // compare list1 and list2 values
  }
}
Run Code Online (Sandbox Code Playgroud)

有更快更好的方式吗?

java arraylist dirtyread java-8

1
推荐指数
1
解决办法
488
查看次数

标签 统计

dirtyread ×3

java ×2

arraylist ×1

h2 ×1

java-8 ×1

limit ×1

postgresql ×1

spring ×1