hsqldb Oracle 模式选择立即更新

2024-04-08

Oracle语法中的HSQLDB似乎不支持NOWAIT。

HSQLDB版本:2.3.3

with

SET DATABASE SQL SYNTAX ORA TRUE;

SQL 产生异常

select a, b, c from sometable where id=1 for update NOWAIT

例外情况

Caused by: org.hsqldb.HsqlException: unexpected token: NOWAIT
at org.hsqldb.error.Error.parseError(Unknown Source)
at org.hsqldb.ParserBase.unexpectedToken(Unknown Source)
at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
at org.hsqldb.Session.compileStatement(Unknown Source)
at org.hsqldb.StatementManager.compile(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
  1. 有谁知道 HSQLDB 是否不支持这个?
  2. 任何想法如何在不修改原始 SQL 的情况下避免此异常。我可以忽略单元测试中的NOWAIT 功能,但无法修改 SQL。附加信息:我们使用 spring-jbdc 和 JdbcTemplate 并考虑拦截它以用 NOWAIT 替换 sql,作为 JUnit 测试设置中的一种 hack。

在 sourceforge 上挖掘 hsqldb 源代码后终于找到了我自己问题的答案。

HSQLDB 2.3.3 版本不支持NOWAIT。

我在他们的讨论论坛中提出了这个问题并提出了这个问题,但是它不像 GitHub,您可以在其中创建问题,因此没有打开正式的问题/请求。

我正在与一个糟糕的黑客相处,现在正在修改HSQLDB我自己编码org.hsqldb.ParserDQL类以忽略 select-for-update SQL 中的 NOWAIT。

如果有人有更好的答案,我会接受他们的答案。

更新:(2015 年 8 月 24 日)

收到 HSQLDB 论坛的确认,NOWAIT 将被忽略。同时,我发布了代码片段以忽略从 HSQLDB sourceforge 论坛收到的NOWAIT。您可能想要等待 HSQLDB 的下一个版本,而不是将其添加到您的代码库中(作为黑客)。

 if (Tokens.T_NOWAIT.equals(token.tokenString)) {
        read();
 }

已更新以显示有关在 ParserDQL.java 中添加上述代码片段的完整上下文

    /**
 * Retrieves a SELECT or other query expression Statement from this parse context.
 */
StatementQuery compileCursorSpecification(RangeGroup[] rangeGroups,
        int props, boolean isRoutine) {

    OrderedHashSet  colNames        = null;
    QueryExpression queryExpression = XreadQueryExpression();

    if (token.tokenType == Tokens.FOR) {
        read();

        if (token.tokenType == Tokens.READ
                || token.tokenType == Tokens.FETCH) {
            read();
            readThis(Tokens.ONLY);

            props = ResultProperties.addUpdatable(props, false);
        } else {
            readThis(Tokens.UPDATE);

            props = ResultProperties.addUpdatable(props, true);

            if (token.tokenType == Tokens.OF) {
                readThis(Tokens.OF);

                colNames = new OrderedHashSet();

                readColumnNameList(colNames, null, false);
            }
            if (Tokens.T_NOWAIT.equalsIgnoreCase(token.tokenString)) {
                readIfThis(Tokens.X_IDENTIFIER);
            }
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hsqldb Oracle 模式选择立即更新 的相关文章

  • 创建每 5 分钟刷新一次的物化视图

    我创建了一个每 5 分钟刷新一次的物化视图 但是当我在物化视图上插入并执行选择时 我会得到相同的旧数据吗 需要手动刷新吗 CREATE MATERIALIZED VIEW MVW TEST REFRESH FORCE ON DEMAND S
  • 无效号码错误!似乎无法绕过它

    Oracle 10g 数据库 我有一张桌子叫s contact 这个表有一个字段叫做person uid This person uid字段是 varchar2 但包含某些行的有效数字和其他行的无效数字 例如 一行可能有一个person u
  • 相当于 Oracle 的 SQL*Plus 中 MySQL 的 \G

    在 Oracle 的 SQL Plus 中 SELECT 的结果以表格方式显示 有没有办法以键值方式显示一行 例如MySQL的 G option http slaptijack com software enabling vertical
  • 如何选择集合的第一个元素作为查询的列

    表 t 有两列 a 和 b a是整数 b是集合 我想为每一行选择 a 和集合 b 的第一个值 我试过了 但没用 WITH s a b AS SELECT 1 ff FROM DUAL UNION ALL SELECT 1 ee FROM D
  • 为什么Mysql的Group By和Oracle的Group by行为不同

    为什么Mysql的Group By和Oracle的Group by行为不同 我多次发现 Mysql group By 功能和 Oracle 的 GroupBy 功能表现不同 很多时候我在Oracle中发现错误 这实际上是错误的查询 但是My
  • oracle 数据透视表中的列

    示例选择 select from select 1 cnt 2 sm 55 name 12 month 2011 year 12 2011 mnth txt from dual union all select 1 cnt 2 sm 54
  • Rails 建模:将 HABTM 转换为 has_many :through

    我正在现有的 Rails 站点上进行维护工作 并且遇到了一些由多对多关联引起的问题 看起来该网站最初是使用has and belongs to many对于一些业务逻辑变得更加复杂的关系 所以我需要使用has many through而是支
  • 从 oracle 中为每个组选择最新行

    我在留言簿中有一张包含用户评论的表格 列有 id user id 标题 评论 时间戳 我需要为每个用户选择最新行 我尝试使用 group by 执行此操作 但没有管理它 因为我无法在按 user id 分组的同一查询中选择任何其他内容 SE
  • SQL*Loader - 如何忽略具有特定字符的某些行

    如果我有一个以下格式的 CSV 文件 fd sdf dsfds dsfd fd asdf dsfds dsfd fd sdf rdsfds dsfd fdd sdf dsfds fdsfd fd sdf dsfds dsfd fd sdf
  • Oracle中如何转义单引号? [复制]

    这个问题在这里已经有答案了 我有一列包含某些存储为文本字符串的表达式 其中包括单个引号 例如 错过的交易 包括引号 发生这种情况时如何使用 where 子句 select from table where reason missed tra
  • 如何对Oracle进行SQL注入

    我正在对一个系统进行审计 开发人员坚称该系统可以防止 SQL 注入 他们通过去掉登录表单中的单引号来实现这一点 但后面的代码没有参数化 它仍然使用字面 SQL 如下所示 username username Replace var sql s
  • 想要从字符格式转换为带小数的数字格式

    想要将字符格式 00001000000 转换为10000 00 请帮我 我已经尝试过 select to number 00012300 9999999999 99 nls numeric characters from dual 这个脚本
  • 仅使用 SQL 中的 MAX 函数更新重复行

    我有一张这样的桌子 假设为了举例 NAME是一个唯一的标识符 NAME AGE VALUE Jack Under 65 3 Jack 66 74 5 John 66 74 7 John Over 75 9 Gill 25 35 11 Som
  • 如何在 Oracle 上生成版本 4(随机)UUID?

    该博客解释说 输出sys guid 对于每个系统来说不是随机的 http feuerthoughts blogspot de 2006 02 watch out for sequential oracle guids html http f
  • Hibernate 本机查询 - char(3) 列

    我在 Oracle 中有一个表 其中列 SC CUR CODE 是 CHAR 3 当我做 Query q2 em createNativeQuery select sc cur code sc amount from sector cost
  • Oracle - 获取星期几

    今天是星期二 为什么当我运行这个 SQL 语句时 它说今天不是星期二 SELECT CASE WHEN TO CHAR sysdate Day Tuesday THEN Its Tuesday ELSE Its Not Tuesday EN
  • 如何检查oracle数据库中分配给模式、角色的对象的权限(DDL、DML、DCL)?

    大多数时候 我们都在与愚蠢的事情作斗争 以获取架构 角色及其对象的权限详细信息 并尝试找到一些简单的方法来获取有关它的所有详细信息以及伪查询代码 以批量生成授予语句以供进一步使用执行 所以我们在这里得到它 关于数据字典视图前缀的一些简单介绍
  • 如何计算选择查询的最佳获取大小

    在 JDBC 中 默认获取大小为 10 但我想当我有一百万行时 这不是最佳获取大小 据我所知 获取大小太低会降低性能 但如果获取大小太高也会降低性能 我怎样才能找到最佳尺寸 这对数据库端有影响吗 它会占用大量内存吗 如果您的行很大 请记住
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 将数据从 oracle 移动到 HDFS,处理并从 HDFS 移动到 Teradata

    我的要求是 将数据从 Oracle 移至 HDFS 处理HDFS上的数据 将处理后的数据移至 Teradata 还需要每 15 分钟执行一次整个处理 源数据量可能接近50GB 处理后的数据也可能相同 在网上搜索了很多之后 我发现 PRARO

随机推荐

  • 错误:无法使用反射定义类

    我正在用这个制作应用程序webpage https hackernoon com a guide to tdd a react redux todolist app part 1 b8a200bb7091 我尝试测试 e2e tests 但
  • 有没有便宜或免费的 VB6 编程 IDE? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么 NSNumber 是不可变的?

    为什么 NSNumber 是不可变的 有充分的理由吗 因为现在我正在考虑创建自己的类只是为了可变性 一个数字是一个very基本数据类型 数字就是一个数字 如果你改变它 它就会变成别的东西 数字根本无法改变 与更复杂的数据相比 对象本身仍然代
  • WPF RadioButton InverseBooleanConverter 不工作

    我有两个 RadioButtons 我将它们绑定到 ViewModel 中的布尔属性 不幸的是 我在转换器中收到错误 因为 targetType 参数为空 现在我并不期望 targetType 参数为空 我期望 True 或 False 但
  • 仅将唯一项目添加到列表中

    当远程设备通过网络宣布自己时 我将其添加到列表中 我只想将之前未添加过的设备添加到列表中 这些公告是通过异步套接字侦听器发出的 因此添加设备的代码可以在多个线程上运行 我不确定我做错了什么 但无论我尝试什么 最终都会出现重复 这是我目前拥有
  • 开源项目如何实现有效的民主治理? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何成功实施民主 非BDFL http en wikipedia org wiki Benevolent Dictator For L
  • Node.JS PM2 内存泄漏

    我正在运行我的服务器pm2 start and pm2 monit正在向我展示3GB memory2个小时之后 所以我附加了memwatch 现在我又等了2个小时 再次显示内存pm2 monit到达3GB 因此 我检查了 memwatch
  • Gitlab - Xcode 无法连接远程存储库

    当我通过 Xcode 连接我的存储库时遇到问题 我在远程服务器上的 TurnkeyLinux 虚拟设备上安装了 Gitlab 版本 完全预装 在 Gitlab Web 界面中 我创建了一个新的测试用户 testuser 密码为 passwo
  • 通过“getDisplayMedia”检查浏览器/平台是否支持屏幕捕获

    我们可以通过以下方式请求媒体流到屏幕或窗口navigator mediaDevices getDisplayMedia 然而 这会立即提示用户决定使用哪种捕获 我需要检查浏览器 平台是否支持屏幕捕获 当然 也可以检查一下 getDispla
  • 如何判断时区是否在一年中的任何时间遵守夏令时?

    在 PHP 中 您可以使用如下方法判断给定日期是否在夏令时期间 isDST date I myDate 1 or 0 问题是 这只能告诉您该时间点是否处于夏令时 有没有可靠的方法来检查 DST 在该时区的任何时间是否生效 编辑以澄清 澳大利
  • 使用 Silverlight 的多个屏幕/监视器

    我想编写一个 Silverlight 应用程序 它有 2 个或更多可以 交互 的浏览器窗口 一个示例是父 详细信息显示 其中选择 父 列表 在一个浏览器窗口中 中的项目将在另一个窗口中显示该项目的详细信息 要点是 在多显示器设置中 用户可以
  • Django-manage.py sql APPNAME 不生成模型 SQL

    我正在开发一个相对较大的平面应用程序 为了保持关注点分离 我将模型和视图文件分成auth models dashboard models taxonomy models和更多 这些已放置在文件夹结构中 如下所示 APPNAME app mo
  • 为什么在循环外部和内部声明具有相同名称的变量不会产生错误?

    int i for i 0 i lt 5 i int i 10 printf d i 我有两个问题 为什么没有重新声明错误i 为什么输出会是105次和没有10 1 time 这一切都与scope的标识符 标识符只是 C 中赋予实体 对象 函
  • 单个 Blazor 项目可以同时包含 WebAssembly 部分和服务器端部分吗? [复制]

    这个问题在这里已经有答案了 现在 Blazor WebAssembly 已正式发布 我尝试使用该模板创建我的第一个 Blazor wasm 项目 但很快发现有一点与我的预期完全不同 模板中似乎没有 服务器 部分 并且发布的结果仅包含静态资产
  • 延迟 LINQ 查询执行实际上是如何工作的?

    最近我遇到这样的问题 What numbers will be printed considering the following code class Program static void Main string args int nu
  • ASP.Net Core MVC - 自定义属性的客户端验证

    在以前版本的 MVC 框架中 自定义验证将通过实现IClientValidatable和GetClientValidationRules method 然而在 ASP Net Core MVC 中 虽然我们确实有IClientModelVa
  • Pyramid 的 add_static_view 是如何工作的?

    Pyramid 中的 add static view name path 如何工作 从文档字符串 The name参数是一个表示应用程序相关的字符串 本地 URL 前缀 它也可以是完整的 URL 这path参数是静态文件在磁盘上的路径 居住
  • Java 8 流,为什么要编译第 2 部分...或者什么是方法引用,真的吗?

    好的 这个 系列 中的第一个问题是this one https stackoverflow com questions 22561614 java 8 streams min and max why does this compile 现在
  • http 路径的处理方法不明确?

    我有一个 Spring 应用程序 我在其中声明了我的类 如下所示 Controller RequestMapping value rest api datasources produces MediaType APPLICATION JSO
  • hsqldb Oracle 模式选择立即更新

    Oracle语法中的HSQLDB似乎不支持NOWAIT HSQLDB版本 2 3 3 with SET DATABASE SQL SYNTAX ORA TRUE SQL 产生异常 select a b c from sometable wh