Giter Site home page Giter Site logo

lealone / lealone Goto Github PK

View Code? Open in Web Editor NEW
2.4K 238.0 516.0 27.48 MB

比 MySQL 和 MongoDB 快10倍的 OLTP 关系数据库和文档数据库

License: Other

Java 99.95% Batchfile 0.05%
newsql rdbms database async sharding replication acid orm oltp lealone

lealone's Introduction

Lealone 是什么

  • 是一个高性能的面向 OLTP 场景的关系数据库

  • 也是一个兼容 MongoDB 的高性能文档数据库

  • 同时还高度兼容 MySQL 和 PostgreSQL 的协议和 SQL 语法

Lealone 有哪些特性

高亮特性
  • 并发写性能极其炸裂

  • 全链路异步化,使用少量线程就能处理大量并发

  • 可暂停的、渐进式的 SQL 引擎

  • 基于 SQL 优先级的抢占式调度,慢查询不会长期霸占 CPU

  • 创建 JDBC 连接非常快速,占用资源少,不再需要 JDBC 连接池

  • 插件化存储引擎架构,内置 AOSE 引擎,采用新颖的异步化 B-Tree

  • 插件化事务引擎架构,事务处理逻辑与存储分离,内置 AOTE 引擎

  • 支持 Page 级别的行列混合存储,对于有很多字段的表,只读少量字段时能大量节约内存

  • 支持通过 CREATE SERVICE 语句创建可托管的后端服务

  • 只需要一个不到 2M 的 jar 包就能运行,不需要安装

普通特性
  • 支持索引、视图、Join、子查询、触发器、自定义函数、Order By、Group By、聚合
云服务版
  • 支持高性能分布式事务、支持强一致性复制、支持全局快照隔离

  • 支持自动化分片 (Sharding),用户不需要关心任何分片的规则,没有热点,能够进行范围查询

  • 支持混合运行模式,包括4种模式: 嵌入式、Client/Server 模式、复制模式、Sharding 模式

  • 支持不停机快速手动或自动转换运行模式: Client/Server 模式 -> 复制模式 -> Sharding 模式

Lealone 文档

Lealone 插件

  • 兼容 MongoDB、MySQL、PostgreSQL 的插件

  • 插件首页

Lealone 微服务框架

  • 非常新颖的基于数据库技术实现的微服务框架,开发分布式微服务应用跟开发单体应用一样简单

  • 微服务框架文档

Lealone ORM 框架

  • 超简洁的类型安全的 ORM 框架,不需要配置文件和注解

  • ORM 框架文档

Lealone 名字的由来

  • Lealone 发音 ['li:ləʊn] 这是我新造的英文单词,
    灵感来自于办公桌上那些叫绿萝的室内植物,一直想做个项目以它命名。
    绿萝的拼音是 lv luo,与 Lealone 英文发音有点相同,
    Lealone 是 lea + lone 的组合,反过来念更有意思哦。:)

Lealone 历史

lealone's People

Contributors

codefollower avatar j1031 avatar lealonex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lealone's Issues

BenchAggregation 报错

Exception in thread "main" com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.NullPointerException"; SQL statement:
CREATE HBASE TABLE IF NOT EXISTS BENCHAGGREGATION (SPLIT KEYS('RK120000','RK140000','RK160000','RK180000'), COLUMN FAMILY cf(id int, name varchar(500), age long, salary double)) [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:239)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:365)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at com.codefollower.lealone.hbase.zookeeper.TcpPortTracker.getTcpPort(TcpPortTracker.java:117)
at com.codefollower.lealone.hbase.zookeeper.ZooKeeperAdmin.getTcpPort(ZooKeeperAdmin.java:133)
at com.codefollower.lealone.hbase.util.HBaseUtils.createURL(HBaseUtils.java:208)
at com.codefollower.lealone.hbase.util.HBaseUtils.getMasterURL(HBaseUtils.java:250)
at com.codefollower.lealone.hbase.engine.SessionRemotePool.getMasterSessionRemote(SessionRemotePool.java:78)
at com.codefollower.lealone.hbase.engine.SessionRemotePool.getMasterCommandRemote(SessionRemotePool.java:86)
at com.codefollower.lealone.hbase.command.ddl.DefineCommandWrapper.update(DefineCommandWrapper.java:61)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
... 3 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:199)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:127)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:112)
at com.codefollower.lealone.test.benchmark.BenchAggregation.createTable(BenchAggregation.java:78)
at com.codefollower.lealone.test.benchmark.BenchAggregation.run(BenchAggregation.java:50)
at com.codefollower.lealone.test.benchmark.BenchAggregation.main(BenchAggregation.java:30)

能否用多线程实现region的操作

我测试发现,lealone的性能与region的数量和大小关系很大。
region数量多且region不是很大时,效果会好;反之则不然;

能否实现在针对一个region中用多线程来实现查询;比如某个region的大小超过某个值就开启多个线程;
或者给用户留一个配置每个region用多个线程的参数的地方;这样用户可以根据场景来调优!

create table 的情况下,rowkey的获取问题

create table方式创建的表是static的;如果表有primarykey;是否考虑用primary key做为rowkey,而不是uuid;
看了一下代码,感觉lealone是在没有设置primarykey,或者多列组合做primarykey的时候会用uuid;

那么有个问题;如果用uuid做rowkey,在insert时没问题,那么在selec时,如何通过反过来得到row对应的uuid呢?
因为没有做大数据量的实验,所以不知道lealone是否实现了。

select count 统计好像有遗漏

用hbase count的数量是7千万;但用lealone在客户端统计只有2千多万;

不知道为什么会漏掉这么多;是否也是慢的原因之一?

在select语句中简化表别名的使用

目前把表别名放在字段名前,需要在中间加列族名,
例如: select t.cf.f1 from mytable t
当多个cf中不存在相同的列名时,希望能去掉列族名,
变成: select t.f1 from mytable t

还是不能select

013-08-26 20:59:17,630 INFO org.apache.zookeeper.server.persistence.FileTxnSnapLog: Snapshotting: 0x0 to /home/hadoop/zookeeper/version-2/snapshot.0
2013-08-26 20:59:17,661 INFO org.apache.zookeeper.server.quorum.LearnerHandler: Follower sid: 0 : info : org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer@42197bb7
2013-08-26 20:59:17,661 INFO org.apache.zookeeper.server.quorum.LearnerHandler: Follower sid: 1 : info : org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer@17094d48
2013-08-26 20:59:17,727 INFO org.apache.zookeeper.server.quorum.LearnerHandler: Synchronizing with Follower sid: 0 maxCommittedLog=0x0 minCommittedLog=0x0 peerLastZxid=0x0
2013-08-26 20:59:17,727 INFO org.apache.zookeeper.server.quorum.LearnerHandler: Sending DIFF
2013-08-26 20:59:17,739 INFO org.apache.zookeeper.server.quorum.LearnerHandler: Synchronizing with Follower sid: 1 maxCommittedLog=0x0 minCommittedLog=0x0 peerLastZxid=0x0
2013-08-26 20:59:17,749 INFO org.apache.zookeeper.server.quorum.LearnerHandler: Sending DIFF
2013-08-26 20:59:17,771 WARN org.apache.zookeeper.server.quorum.Leader: Commiting zxid 0x100000000 from /192.168.2.28:2888 not first!
2013-08-26 20:59:17,772 WARN org.apache.zookeeper.server.quorum.Leader: First is 0x0
2013-08-26 20:59:17,772 INFO org.apache.zookeeper.server.quorum.Leader: Have quorum of supporters; starting up and setting last processed zxid: 0x100000000
2013-08-26 20:59:19,240 INFO org.apache.zookeeper.server.persistence.FileTxnLog: Creating new log file: log.100000001
2013-08-26 20:59:20,715 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x140bab4fb820000 type:delete cxid:0x13 zxid:0x100000014 txntype:-1 reqpath:n/a Error Path:/hbase/backup-masters/ubuntu-26,60000,1377521958838 Error:KeeperErrorCode = NoNode for /hbase/backup-masters/ubuntu-26,60000,1377521958838
2013-08-26 20:59:20,750 INFO org.apache.zookeeper.server.NIOServerCnxnFactory: Accepted socket connection from /192.168.2.28:57106
2013-08-26 20:59:20,758 WARN org.apache.zookeeper.server.NIOServerCnxn: Exception causing close of session 0x0 due to java.io.IOException: ZooKeeperServer not running
2013-08-26 20:59:20,758 INFO org.apache.zookeeper.server.NIOServerCnxn: Closed socket connection for client /192.168.2.28:57106 (no session established for client)
2013-08-26 20:59:22,541 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x40bab4fb610000 type:create cxid:0x7 zxid:0x10000001c txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot Error:KeeperErrorCode = NoNode for /hbase/online-snapshot
2013-08-26 20:59:22,543 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x40bab4fb610002 type:create cxid:0x7 zxid:0x10000001d txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot Error:KeeperErrorCode = NoNode for /hbase/online-snapshot
2013-08-26 20:59:22,572 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x40bab4fb610000 type:create cxid:0x8 zxid:0x10000001f txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot Error:KeeperErrorCode = NodeExists for /hbase/online-snapshot
2013-08-26 20:59:22,584 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x40bab4fb610000 type:create cxid:0x9 zxid:0x100000021 txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot/acquired Error:KeeperErrorCode = NodeExists for /hbase/online-snapshot/acquired
2013-08-26 20:59:22,590 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x140bab4fb820000 type:create cxid:0x1e zxid:0x100000022 txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot/acquired Error:KeeperErrorCode = NodeExists for /hbase/online-snapshot/acquired
2013-08-26 20:59:22,597 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x40bab4fb610000 type:create cxid:0xb zxid:0x100000024 txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot/reached Error:KeeperErrorCode = NodeExists for /hbase/online-snapshot/reached
2013-08-26 20:59:22,604 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x140bab4fb820000 type:create cxid:0x20 zxid:0x100000025 txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot/reached Error:KeeperErrorCode = NodeExists for /hbase/online-snapshot/reached
2013-08-26 20:59:22,612 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x40bab4fb610000 type:create cxid:0xd zxid:0x100000027 txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot/abort Error:KeeperErrorCode = NodeExists for /hbase/online-snapshot/abort
2013-08-26 20:59:22,617 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x140bab4fb820000 type:create cxid:0x22 zxid:0x100000028 txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot/abort Error:KeeperErrorCode = NodeExists for /hbase/online-snapshot/abort
2013-08-26 20:59:23,154 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x140bab4fb820003 type:create cxid:0x7 zxid:0x100000030 txntype:-1 reqpath:n/a Error Path:/hbase/online-snapshot/acquired Error:KeeperErrorCode = NodeExists for /hbase/online-snapshot/acquired
2013-08-26 20:59:28,382 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x140bab4fb820000 type:delete cxid:0x32 zxid:0x100000032 txntype:-1 reqpath:n/a Error Path:/hbase/root-region-server Error:KeeperErrorCode = NoNode for /hbase/root-region-server
2013-08-26 20:59:28,447 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x140bab4fb820000 type:delete cxid:0x3a zxid:0x100000035 txntype:-1 reqpath:n/a Error Path:/hbase/table92/-ROOT- Error:KeeperErrorCode = NoNode for /hbase/table92/-ROOT-
2013-08-26 20:59:30,450 INFO org.apache.zookeeper.server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x140bab4fb820000 type:delete cxid:0x4e zxid:0x10000003f txntype:-1 reqpath:n/a Error Path:/hbase/table92/.META. Error:KeeperErrorCode = NoNode for /hbase/table92/.META.
2013-08-26 21:00:24,784 INFO org.apache.zookeeper.server.PrepRequestProcessor: Processed session termination for sessionid: 0x140bab4fb820007
2013-08-26 21:00:25,950 INFO org.apache.zookeeper.server.PrepRequestProcessor: Processed session termination for sessionid: 0x40bab4fb610005
2013-08-26 21:00:25,985 INFO org.apache.zookeeper.server.NIOServerCnxnFactory: Accepted socket connection from /192.168.2.27:58822
2013-08-26 21:00:25,990 INFO org.apache.zookeeper.server.ZooKeeperServer: Client attempting to establish new session at /192.168.2.27:58822

已经是用最新的版本编译过,hadoop 为安全起见已经是 format 过。还是上次相同的错误。 这是dead 中 日志

TINYINT数据类型错误

在建表时,如果定义了TINYINT类型,按照H2的DataTYPE应该是写入一个Java中的BYTE类型,但lealone处理中是安装short类型读取的,这样会导致读取数据失败。异常信息如下:
com.codefollower.lealone.jdbc.JdbcSQLException: General error: "com.codefollower.lealone.hbase.command.RetryableCommand$RetriesExhaustedException: java.lang.IllegalArgumentException: offset (0) + length (2) exceed the capacity of the array: 1"; SQL statement:
IN THE REGION 'MP,,1376623215891.e08edb9c828bcbbf4486f3cba3ab96b8.' SELECT * FROM MP [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.command.RetryableCommand.execute(RetryableCommand.java:79)
at com.codefollower.lealone.hbase.command.RetryableCommand.queryInternal(RetryableCommand.java:35)
at com.codefollower.lealone.command.CommandContainer.query(CommandContainer.java:91)
at com.codefollower.lealone.command.Command.executeQuery(Command.java:196)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:348)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:136)
at java.lang.Thread.run(Thread.java:662)
Caused by: com.codefollower.lealone.hbase.command.RetryableCommand$RetriesExhaustedException: java.lang.IllegalArgumentException: offset (0) + length (2) exceed the capacity of the array: 1
... 7 more
Caused by: java.lang.IllegalArgumentException: offset (0) + length (2) exceed the capacity of the array: 1
at org.apache.hadoop.hbase.util.Bytes.explainWrongLengthOrOffset(Bytes.java:516)
at org.apache.hadoop.hbase.util.Bytes.toShort(Bytes.java:738)
at org.apache.hadoop.hbase.util.Bytes.toShort(Bytes.java:714)
at com.codefollower.lealone.hbase.util.HBaseUtils.toValue(HBaseUtils.java:113)
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndexCursor.get(HBasePrimaryIndexCursor.java:209)
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndexCursor.getSearchRow(HBasePrimaryIndexCursor.java:220)
at com.codefollower.lealone.dbobject.index.IndexCursor.getSearchRow(IndexCursor.java:234)
at com.codefollower.lealone.dbobject.table.TableFilter.next(TableFilter.java:363)
at com.codefollower.lealone.command.dml.Select.queryFlat(Select.java:646)
at com.codefollower.lealone.command.dml.Select.queryWithoutCache(Select.java:751)
at com.codefollower.lealone.command.dml.Query.query(Query.java:314)
at com.codefollower.lealone.hbase.command.dml.HBaseSelect.query(HBaseSelect.java:60)
at com.codefollower.lealone.command.dml.Query.query(Query.java:284)
at com.codefollower.lealone.hbase.command.RetryableCommand.execute(RetryableCommand.java:46)
... 6 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:597)
at com.codefollower.lealone.command.CommandRemote.executeQuery(CommandRemote.java:163)
at com.codefollower.lealone.hbase.command.dml.HBaseSelect.query(HBaseSelect.java:79)
at com.codefollower.lealone.command.dml.Query.query(Query.java:284)
at com.codefollower.lealone.hbase.command.RetryableCommand.execute(RetryableCommand.java:46)
at com.codefollower.lealone.hbase.command.RetryableCommand.queryInternal(RetryableCommand.java:35)
at com.codefollower.lealone.command.CommandContainer.query(CommandContainer.java:91)
at com.codefollower.lealone.command.Command.executeQuery(Command.java:196)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:348)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:136)
at java.lang.Thread.run(Thread.java:662)

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:597)
at com.codefollower.lealone.command.CommandRemote.executeQuery(CommandRemote.java:163)
at com.codefollower.lealone.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:79)
at lealone.LealoneTest.testSelect(LealoneTest.java:245)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

数据insert的时候挂了,但是从60010界面看是OK,的过一会又好了,很不稳定,之前用其他HTable测试都OK

com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing"; SQL statement:
insert into WEB_STAT1 values(1646212,'aaaa',11,'21212dsjdjsd','ma') [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:279)
at com.codefollower.lealone.command.dml.Insert.insertRows(Insert.java:116)
at com.codefollower.lealone.command.dml.Insert.update(Insert.java:85)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.internalUpdate(HBaseInsert.java:70)
at com.codefollower.lealone.hbase.command.dml.InsertOrMergeSupport.update(InsertOrMergeSupport.java:111)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.update(HBaseInsert.java:55)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:365)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.add(HBasePrimaryIndex.java:72)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:261)
... 10 more
Caused by: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing
at org.apache.hadoop.hbase.regionserver.HRegion.startRegionOperation(HRegion.java:5775)
at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:2066)
at org.apache.hadoop.hbase.regionserver.HRegionServer.put(HRegionServer.java:2236)
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.add(HBasePrimaryIndex.java:62)
... 11 more

    at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
    at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:199)
    at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:127)
    at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:112)
    at com.sunshine.test.TestLealone.insert(TestLealone.java:116)
    at com.sunshine.test.TestLealone.main(TestLealone.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

cost:777125
com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing"; SQL statement:
select * from WEB_STAT1 where ID=500000 [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.command.Command.executeQuery(Command.java:200)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:330)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndexCursor.(HBasePrimaryIndexCursor.java:150)
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.find(HBasePrimaryIndex.java:115)
at com.codefollower.lealone.hbase.dbobject.index.HBaseDelegateIndex.find(HBaseDelegateIndex.java:61)
at com.codefollower.lealone.dbobject.index.IndexCursor.find(IndexCursor.java:79)
at com.codefollower.lealone.dbobject.table.TableFilter.next(TableFilter.java:331)
at com.codefollower.lealone.command.dml.Select.queryFlat(Select.java:646)
at com.codefollower.lealone.command.dml.Select.queryWithoutCache(Select.java:751)
at com.codefollower.lealone.command.dml.Query.query(Query.java:314)
at com.codefollower.lealone.hbase.command.dml.HBaseSelect.query(HBaseSelect.java:76)
at com.codefollower.lealone.command.dml.Query.query(Query.java:284)
at com.codefollower.lealone.command.CommandContainer.query(CommandContainer.java:87)
at com.codefollower.lealone.command.Command.executeQuery(Command.java:196)
... 3 more
Caused by: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing
at org.apache.hadoop.hbase.regionserver.HRegion.startRegionOperation(HRegion.java:5775)
at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1807)
at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1793)
at org.apache.hadoop.hbase.regionserver.HRegionServer.openScanner(HRegionServer.java:2557)
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndexCursor.(HBasePrimaryIndexCursor.java:148)
... 14 more

    at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
    at com.codefollower.lealone.command.CommandRemote.executeQuery(CommandRemote.java:158)
    at com.codefollower.lealone.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:77)
    at com.sunshine.test.TestLealone.query(TestLealone.java:139)
    at com.sunshine.test.TestLealone.main(TestLealone.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

query:12
com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing"; SQL statement:
insert into WEB_STAT1 values(10000001,'aaaa',11,'21212dsjdjsd','ma') [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:279)
at com.codefollower.lealone.command.dml.Insert.insertRows(Insert.java:116)
at com.codefollower.lealone.command.dml.Insert.update(Insert.java:85)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.internalUpdate(HBaseInsert.java:70)
at com.codefollower.lealone.hbase.command.dml.InsertOrMergeSupport.update(InsertOrMergeSupport.java:111)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.update(HBaseInsert.java:55)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:365)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.add(HBasePrimaryIndex.java:72)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:261)
... 10 more
Caused by: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing
at org.apache.hadoop.hbase.regionserver.HRegion.startRegionOperation(HRegion.java:5775)
at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:2066)
at org.apache.hadoop.hbase.regionserver.HRegionServer.put(HRegionServer.java:2236)
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.add(HBasePrimaryIndex.java:62)
... 11 more

    at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
    at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:199)
    at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:127)
    at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:112)
    at com.sunshine.test.TestLealone.insert(TestLealone.java:116)
    at com.sunshine.test.TestLealone.main(TestLealone.java:68)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

cost:3
com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing"; SQL statement:
select * from WEB_STAT1 where ID=500000 [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.command.Command.executeQuery(Command.java:200)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:330)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: WEB_STAT1,,1374572414782.05253885f45a396dbc2a03dc6bd97c5f. is closing
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndexCursor.(HBasePrimaryIndexCursor.java:150)
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.find(HBasePrimaryIndex.java:115)
at com.codefollower.lealone.hbase.dbobject.index.HBaseDelegateIndex.find(HBaseDelegateIndex.java:61)
at com.codefollower.lealone.dbobject.index.IndexCursor.find(IndexCursor.java:79)
at com.codefollower.lealone.dbobject.table.TableFilter.next(TableFilter.java:331)

建立索引问题

hbase表有CF3列簇和F3列,已经做了mapping到lealone的处理,建立索引SQL如下:
CREATE INDEX IDXNAME ON QUERY(CF3.F3 DESC)

执行报错:
com.codefollower.lealone.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE INDEX IDXNAME ON QUERY(CF3.[*]F3 DESC) "; expected "ASC, DESC, NULLS, ,, )"; SQL statement:
CREATE INDEX IDXNAME ON QUERY(CF3.F3 DESC) [42001-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:170)
at com.codefollower.lealone.message.DbException.getSyntaxError(DbException.java:195)
at com.codefollower.lealone.command.Parser.getSyntaxError(Parser.java:504)
at com.codefollower.lealone.command.Parser.read(Parser.java:2866)
at com.codefollower.lealone.command.Parser.parseIndexColumnList(Parser.java:783)
at com.codefollower.lealone.command.Parser.parseCreate(Parser.java:3931)
at com.codefollower.lealone.hbase.command.HBaseParser.parseCreate(HBaseParser.java:95)
at com.codefollower.lealone.command.Parser.parsePrepared(Parser.java:337)
at com.codefollower.lealone.command.Parser.parse(Parser.java:285)
at com.codefollower.lealone.command.Parser.parse(Parser.java:261)
at com.codefollower.lealone.hbase.command.HBaseParser.parse(HBaseParser.java:309)
at com.codefollower.lealone.command.Parser.prepareCommand(Parser.java:224)
at com.codefollower.lealone.engine.Session.prepareCommand(Session.java:437)
at com.codefollower.lealone.engine.Session.prepareCommand(Session.java:417)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:267)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
at com.codefollower.lealone.command.CommandRemote.prepare(CommandRemote.java:67)
at com.codefollower.lealone.command.CommandRemote.<init>(CommandRemote.java:47)
at com.codefollower.lealone.engine.SessionRemote.prepareCommand(SessionRemote.java:456)
at com.codefollower.lealone.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1110)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:123)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:112)
at com.sunshine.test.TestLealone.main(TestLealone.java:82)

新更新的#24的代码,部署后连接无法建立jdbc连接

用新编译的包部署了下,然后用新的client的jar加载到客户端,连老版本的数据库时可以的,连最新的部署的显示异常,具体如下:
Exception in thread "main" com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.NullPointerException" [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.engine.HBaseDatabase.openMetaTable(HBaseDatabase.java:102)
at com.codefollower.lealone.engine.Database.open(Database.java:509)
at com.codefollower.lealone.engine.Database.openDatabase(Database.java:236)
at com.codefollower.lealone.engine.Database.init(Database.java:231)
at com.codefollower.lealone.hbase.engine.HBaseDatabase.init(HBaseDatabase.java:62)
at com.codefollower.lealone.engine.DatabaseEngineBase.openSession(DatabaseEngineBase.java:156)
at com.codefollower.lealone.engine.DatabaseEngineBase.openSession(DatabaseEngineBase.java:91)
at com.codefollower.lealone.engine.DatabaseEngineBase.createSessionAndValidate(DatabaseEngineBase.java:73)
at com.codefollower.lealone.engine.DatabaseEngineBase.createSession(DatabaseEngineBase.java:57)
at com.codefollower.lealone.hbase.server.HBaseTcpServerThread.createSession(HBaseTcpServerThread.java:86)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:120)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at org.apache.hadoop.hbase.util.Bytes.toInt(Bytes.java:662)
at org.apache.hadoop.hbase.util.Bytes.toInt(Bytes.java:639)
at com.codefollower.lealone.hbase.metadata.MetaDataTable.getMetaRecord(MetaDataTable.java:110)
at com.codefollower.lealone.hbase.metadata.MetaDataTable.loadMetaRecords(MetaDataTable.java:63)
at com.codefollower.lealone.hbase.engine.HBaseDatabase.openMetaTable(HBaseDatabase.java:100)
... 11 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
at com.codefollower.lealone.engine.SessionRemote.initTransfer(SessionRemote.java:122)
at com.codefollower.lealone.engine.SessionRemote.connectServer(SessionRemote.java:412)
at com.codefollower.lealone.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:298)
at com.codefollower.lealone.jdbc.JdbcConnection.<init>(JdbcConnection.java:113)
at com.codefollower.lealone.jdbc.JdbcConnection.<init>(JdbcConnection.java:95)
at com.codefollower.lealone.Driver.connect(Driver.java:73)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at lealone.LealoneTest.setupBeforeClass(LealoneTest.java:43)
at lealone.LealoneTest.main(LealoneTest.java:283)

不能编译

mvn clean install
输出:
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone-client:jar:0.12-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.codefollower.lealone:lealone-client:${lealone.version}, /Users/linkerlin/gits/Lealone/lealone-client/pom.xml, line 12, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ com.codefollower.lealone:lealone:0.1.0, /Users/linkerlin/gits/Lealone/pom.xml, line 33, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone-sql:jar:0.12-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.codefollower.lealone:lealone-sql:${lealone.version}, /Users/linkerlin/gits/Lealone/lealone-sql/pom.xml, line 12, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ com.codefollower.lealone:lealone:0.1.0, /Users/linkerlin/gits/Lealone/pom.xml, line 33, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone-regular:jar:0.12-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.codefollower.lealone:lealone-regular:${lealone.version}, /Users/linkerlin/gits/Lealone/lealone-regular/pom.xml, line 12, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ com.codefollower.lealone:lealone:0.1.0, /Users/linkerlin/gits/Lealone/pom.xml, line 33, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone-mvstore:jar:0.12-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.codefollower.lealone:lealone-mvstore:${lealone.version}, /Users/linkerlin/gits/Lealone/lealone-mvstore/pom.xml, line 12, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ com.codefollower.lealone:lealone:0.1.0, /Users/linkerlin/gits/Lealone/pom.xml, line 33, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone-hbase:jar:0.12-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.codefollower.lealone:lealone-hbase:${lealone.version}, /Users/linkerlin/gits/Lealone/lealone-hbase/pom.xml, line 12, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ com.codefollower.lealone:lealone:0.1.0, /Users/linkerlin/gits/Lealone/pom.xml, line 33, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone-olap:jar:0.12-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.codefollower.lealone:lealone-olap:${lealone.version}, /Users/linkerlin/gits/Lealone/lealone-olap/pom.xml, line 12, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ com.codefollower.lealone:lealone:0.1.0, /Users/linkerlin/gits/Lealone/pom.xml, line 33, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone-omid:jar:0.12-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.codefollower.lealone:lealone-omid:${lealone.version}, /Users/linkerlin/gits/Lealone/lealone-omid/pom.xml, line 12, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ com.codefollower.lealone:lealone:0.1.0, /Users/linkerlin/gits/Lealone/pom.xml, line 33, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone-test:jar:0.12-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.codefollower.lealone:lealone-test:${lealone.version}, /Users/linkerlin/gits/Lealone/lealone-test/pom.xml, line 12, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ com.codefollower.lealone:lealone:0.1.0, /Users/linkerlin/gits/Lealone/pom.xml, line 33, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.codefollower.lealone:lealone:pom:0.1.0
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ line 33, column 12
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] lealone project
[INFO] lealone client
[INFO] lealone sql
[INFO] lealone regular
[INFO] lealone mvstore
[INFO] lealone omid
[INFO] lealone hbase
[INFO] lealone olap
[INFO] lealone test
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building lealone project 0.1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ lealone ---
[INFO]
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) @ lealone >>>
[INFO]
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) @ lealone <<<
[INFO]
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ lealone ---
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ lealone ---
[INFO] Installing /Users/linkerlin/gits/Lealone/pom.xml to /Users/linkerlin/.m2/repository/com/codefollower/lealone/lealone/0.1.0/lealone-0.1.0.pom
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building lealone client 0.12-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ lealone-client ---
[INFO] Deleting /Users/linkerlin/gits/Lealone/lealone-client/target
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ lealone-client ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 11 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ lealone-client ---
[INFO] Compiling 131 source files to /Users/linkerlin/gits/Lealone/lealone-client/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcConnection.java:[67,7] error: JdbcConnection is not abstract and does not override abstract method getNetworkTimeout() in Connection
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcStatement.java:[28,7] error: JdbcStatement is not abstract and does not override abstract method isCloseOnCompletion() in Statement
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcResultSet.java:[81,7] error: JdbcResultSet is not abstract and does not override abstract method getObject(String,Class) in ResultSet
[ERROR]
T extends Object declared in method getObject(String,Class)
/Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcPreparedStatement.java:[62,7] error: JdbcPreparedStatement is not abstract and does not override abstract method isCloseOnCompletion() in Statement
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/tools/SimpleResultSet.java:[60,7] error: SimpleResultSet is not abstract and does not override abstract method getObject(String,Class) in ResultSet
[ERROR]
T extends Object declared in method getObject(String,Class)
/Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcCallableStatement.java:[46,7] error: JdbcCallableStatement is not abstract and does not override abstract method getObject(String,Class) in CallableStatement
[ERROR]
T extends Object declared in method getObject(String,Class)
/Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcDatabaseMetaData.java:[28,7] error: JdbcDatabaseMetaData is not abstract and does not override abstract method generatedKeyAlwaysReturned() in DatabaseMetaData
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/Driver.java:[36,7] error: com.codefollower.lealone.Driver is not abstract and does not override abstract method getParentLogger() in java.sql.Driver
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbcx/JdbcDataSource.java:[67,7] error: JdbcDataSource is not abstract and does not override abstract method getParentLogger() in CommonDataSource
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbcx/JdbcConnectionPool.java:[68,7] error: JdbcConnectionPool is not abstract and does not override abstract method getParentLogger() in CommonDataSource
[INFO] 10 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] lealone project ................................... SUCCESS [2.130s]
[INFO] lealone client .................................... FAILURE [8.754s]
[INFO] lealone sql ....................................... SKIPPED
[INFO] lealone regular ................................... SKIPPED
[INFO] lealone mvstore ................................... SKIPPED
[INFO] lealone omid ...................................... SKIPPED
[INFO] lealone hbase ..................................... SKIPPED
[INFO] lealone olap ...................................... SKIPPED
[INFO] lealone test ...................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.311s
[INFO] Finished at: Fri Mar 22 12:05:07 CST 2013
[INFO] Final Memory: 12M/45M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project lealone-client: Compilation failure: Compilation failure:
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcConnection.java:[67,7] error: JdbcConnection is not abstract and does not override abstract method getNetworkTimeout() in Connection
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcStatement.java:[28,7] error: JdbcStatement is not abstract and does not override abstract method isCloseOnCompletion() in Statement
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcResultSet.java:[81,7] error: JdbcResultSet is not abstract and does not override abstract method getObject(String,Class) in ResultSet
[ERROR]
[ERROR] T extends Object declared in method getObject(String,Class)
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcPreparedStatement.java:[62,7] error: JdbcPreparedStatement is not abstract and does not override abstract method isCloseOnCompletion() in Statement
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/tools/SimpleResultSet.java:[60,7] error: SimpleResultSet is not abstract and does not override abstract method getObject(String,Class) in ResultSet
[ERROR]
[ERROR] T extends Object declared in method getObject(String,Class)
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcCallableStatement.java:[46,7] error: JdbcCallableStatement is not abstract and does not override abstract method getObject(String,Class) in CallableStatement
[ERROR]
[ERROR] T extends Object declared in method getObject(String,Class)
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbc/JdbcDatabaseMetaData.java:[28,7] error: JdbcDatabaseMetaData is not abstract and does not override abstract method generatedKeyAlwaysReturned() in DatabaseMetaData
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/Driver.java:[36,7] error: com.codefollower.lealone.Driver is not abstract and does not override abstract method getParentLogger() in java.sql.Driver
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbcx/JdbcDataSource.java:[67,7] error: JdbcDataSource is not abstract and does not override abstract method getParentLogger() in CommonDataSource
[ERROR] /Users/linkerlin/gits/Lealone/lealone-client/src/main/java/com/codefollower/lealone/jdbcx/JdbcConnectionPool.java:[68,7] error: JdbcConnectionPool is not abstract and does not override abstract method getParentLogger() in CommonDataSource
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :lealone-client

编译成功,但运行的时候出错,我用的Hbase是0.94.6

(Message HY000 not found) [50000-170]
com.codefollower.lealone.jdbc.JdbcSQLException: (Message HY000 not found) [50000-170]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.server.TcpServerThread.sendError(TcpServerThread.java:222)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:134)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.RuntimeException: java.lang.NullPointerException
at com.codefollower.lealone.hbase.command.CommandProxy.parseRowKey(CommandProxy.java:118)
at com.codefollower.lealone.hbase.command.CommandProxy.(CommandProxy.java:79)
at com.codefollower.lealone.hbase.command.CommandProxy.(CommandProxy.java:84)
at com.codefollower.lealone.hbase.command.HBaseParser.prepareCommand(HBaseParser.java:298)
at com.codefollower.lealone.engine.Session.prepareCommand(Session.java:432)
at com.codefollower.lealone.engine.Session.prepareCommand(Session.java:412)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:264)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:132)
... 1 more
Caused by: java.lang.NullPointerException
at com.codefollower.lealone.hbase.zookeeper.TcpPortTracker.getTcpPort(TcpPortTracker.java:115)
at com.codefollower.lealone.hbase.zookeeper.ZooKeeperAdmin.getTcpPort(ZooKeeperAdmin.java:129)
at com.codefollower.lealone.hbase.command.CommandProxy.parseRowKey(CommandProxy.java:97)
... 8 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:576)
at com.codefollower.lealone.command.CommandRemote.prepare(CommandRemote.java:68)
at com.codefollower.lealone.command.CommandRemote.<init>(CommandRemote.java:48)
at com.codefollower.lealone.engine.SessionRemote.prepareCommand(SessionRemote.java:448)
at com.codefollower.lealone.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1117)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:123)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:112)
at com.ie4j.anterior.persist.lealone.test.LealoneTest.main(LealoneTest.java:16)

先drop table 成功;但show table还能看到

先drop table splittest;成功;
然后show tables;发现table还在;
到hbase下看,其实没有了;
这时再drop table 报下面的错;但是show table还有;

Error: Table "SPLITTEST" not found; SQL statement:
drop table SPLITTEST [42102-171]
SQLState: 42S02
ErrorCode: 42102

批量insert 出错;导致后续仍然无法insert以及select

我们在用insert进行批量插入;插入到一段时间其实也不算多,可能10万条的时候就出现了以下问题:根据分析应该是region进行split造成的。
region split时 导致region closing;这个我可以理解;我不能理解的是split完成之后,还是不能插入,甚至select也不行;客户端重启也没用;只有重启hbase;才可以。
我觉得是在insert和select时要去找region信息,但好像region split后,就不能得到正常的region了
com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: STOCK,,1373862124629.cf0dd79a39373aa2e52384d04eb91288. is closing"; SQL statement:
INSERT INTO stock(code,sdate,op,hp,lp,cp,volumn,money,rate) VALUES (?,?,?,?,?,?,?,?,?) [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:279)
at com.codefollower.lealone.command.dml.Insert.insertRows(Insert.java:116)
at com.codefollower.lealone.command.dml.Insert.update(Insert.java:85)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.internalUpdate(HBaseInsert.java:70)
at com.codefollower.lealone.hbase.command.dml.InsertOrMergeSupport.update(InsertOrMergeSupport.java:111)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.update(HBaseInsert.java:55)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:365)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: STOCK,,1373862124629.cf0dd79a39373aa2e52384d04eb91288. is closing
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.add(HBasePrimaryIndex.java:72)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:261)
... 10 more

后面的insert或者select都显示 “region is not online”
com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: Region is not online: STOCK,,1373862124629.cf0dd79a39373aa2e52384d04eb91288."; SQL statement:
INSERT INTO stock(code,sdate,op,hp,lp,cp,volumn,money,rate) VALUES (?,?,?,?,?,?,?,?,?) [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:279)
at com.codefollower.lealone.command.dml.Insert.insertRows(Insert.java:116)
at com.codefollower.lealone.command.dml.Insert.update(Insert.java:85)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.internalUpdate(HBaseInsert.java:70)
at com.codefollower.lealone.hbase.command.dml.InsertOrMergeSupport.update(InsertOrMergeSupport.java:111)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.update(HBaseInsert.java:55)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:365)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: Region is not online: STOCK,,1373862124629.cf0dd79a39373aa2e52384d04eb91288.
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.add(HBasePrimaryIndex.java:72)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:261)
... 10 more

在hadoop 集群下,执行select 出现 Connection is broken: "session closed" 异常

在hadoop 1.1.2 ,hbase 0.94.10 的集群情况下,建表,新增数据都正常。
只有,执行 select 语句,就会出现
Exception in thread "main" com.codefollower.lealone.jdbc.JdbcSQLException: Connection is broken: "session closed" [90067-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:170)
at com.codefollower.lealone.message.DbException.get(DbException.java:147)
at com.codefollower.lealone.engine.SessionRemote.checkClosed(SessionRemote.java:522)
at com.codefollower.lealone.engine.SessionRemote.removeServer(SessionRemote.java:454)
at com.codefollower.lealone.command.CommandRemote.executeQuery(CommandRemote.java:177)
at com.codefollower.lealone.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:79)
at com.miteno.rmcs.lealone.LealoneTest.main(LealoneTest.java:53)
异常,这时节点就会dead
hbase(main):002:0> status
2 servers, 1 dead, 3.5000 average load

导入数据后,手动进行了region的split;lealone还是会出现 region not online的问题

Error: General error: "com.codefollower.lealone.hbase.command.RetryableCommand$RetriesExhaustedException: com.codefollower.lealone.message.DbException: IO Exception: ""org.apache.hadoop.hbase.NotServingRegionException: Region is not online: TEST50M,,1377499990496.a67eb9c3a733c8a23c53b4fe4e4f1fb0."" [90028-171]"; SQL statement:
IN THE REGION 'TEST50M,,1377499990496.a67eb9c3a733c8a23c53b4fe4e4f1fb0.','TEST50M,1970-02-06 03:59:36,1377499990496.b5114efe1059fc2680abb583c339fb8d.','TEST50M,1970-03-14 08:04:11,1377499934082.79b4a2095055a58c8504a838aaf0daee.','TEST50M,1970-04-19 12:06:16,1377499934082.a4be994c6fa497cd6b431d1b8317ef0b.','TEST50M,1970-05-25 16:10:50,1377499883344.8c0807a0e29e50a63a91961d90e81d37.','TEST50M,1970-08-06 00:17:29,1377499883344.1b4ca2649ddbc50a814f546c72c6f059.' SELECT
COUNT()
FROM PUBLIC.TEST50M
/
PUBLIC.TEST50M_DATA */ [50000-171]
SQLState: HY000
ErrorCode: 50000

为何Cpu的利用率只有30%左右

5亿行记录,5个rs,20个region,用select count统计,发现每个rs的cpu利用率只有30%左右,最后统计时间要300多秒,同样的环境,用hive也只要100多秒,发现cpu,内存,io都不算高,而hive的MR则cpu可达90%甚至100%,是否并行模型哪里有问题?

主键查询性能不高是怎么回事?

我最近使用lealone做了一个简单实验:

  1. 通过hbase client写入了5千万条记录到表test50m;
  2. 使用select * from test50m limit 100会很快返回结果,并且结果正确;
  3. 但是查询加了where条件后
    select * from test50m where date_time='1970-06-23 14:40:01';会耗时在500多秒才出结果。为什么性能会这么差呢?
    date_time是表test50m的主键,也是hbase表的rowkey。
    另外通过监控整个查询过程,我发现表test50m所在的regionserver会轮流响应查询,对于这种简单查询,不是应该通过主键定位到某个region,只在该region响应查询就行了码?

配置完成,启动hbase报错

伪分布式环境,hadoop 1.0.4+hbase 0.94.0
根据文档,打包,然后配置,启动start-hbase.sh 报错

hadooptest: starting regionserver, logging to /opt/hbase/bin/../logs/hbase-hadoop-regionserver-hadooptest.out
hadooptest: Exception in thread "regionserver60020" java.lang.NullPointerException
hadooptest: at com.codefollower.lealone.hbase.server.HBaseTcpServer.init(HBaseTcpServer.java:141)
hadooptest: at com.codefollower.lealone.hbase.server.HBaseTcpServer.(HBaseTcpServer.java:74)
hadooptest: at com.codefollower.lealone.hbase.engine.HBaseRegionServer.run(HBaseRegionServer.java:39)
hadooptest: at java.lang.Thread.run(Thread.java:662)
hadooptest: Exception in thread "Shutdownhook:regionserver60020" java.lang.NullPointerException
hadooptest: at org.apache.hadoop.hbase.regionserver.HRegionServer.stop(HRegionServer.java:1676)
hadooptest: at org.apache.hadoop.hbase.regionserver.ShutdownHook$ShutdownHookThread.run(ShutdownHook.java:113)

spring 集成lealone,执行建表操作,表有创建到hbase中,但是lealone这边查找不到,这是什么原因

这个是我的创建脚本

private static final String CREATE_STUDENT="CREATE HBASE TABLE IF NOT EXISTS STUDENT(" +
"COLUMN FAMILY STU(" +
"OPTIONS(MIN_VERSIONS=1, KEEP_DELETED_CELLS=false), "+
"ID VARCHAR(32) PRIMARY KEY, " +
"NAME VARCHAR(32), " +
"SEX VARCHAR(32), " +
"AGE INT" +
")" +
") ";

private void createStudent()
{
this.getLealoneJdbcTemplate().execute(CREATE_STUDENT);
this.getLealoneJdbcTemplate().execute("CREATE INDEX IF NOT EXISTS STUDENT_INDEX_ID ON STUDENT(ID)");
this.getLealoneJdbcTemplate().execute("CREATE INDEX IF NOT EXISTS STUDENT_INDEX_NAME ON STUDENT(NAME)");
}

JdbcSQLException: (Message 90117 not found) [90117-170]

wesley@ubuntu-5124:~$ telnet 10.45.44.185 9091
Trying 10.45.44.185...
Connected to 10.45.44.185.
Escape character is '^]'.
com.codefollower.lealone.jdbc.JdbcSQLException: (Message 90117 not found) [90117-170]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:170)
at com.codefollower.lealone.message.DbException.get(DbException.java:147)
at com.codefollower.lealone.message.DbException.get(DbException.java:136)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:81)
at java.lang.Thread.run(Thread.java:662)
Connection closed by foreign host.

BenchAggregation 时,zk报错

13/07/23 09:15:54 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=10.9.2.129:2181 sessionTimeout=180000 watcher=hconnection
13/07/23 09:15:54 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 1224@tyy-HP-WRI-PC
13/07/23 09:15:54 INFO zookeeper.ClientCnxn: Opening socket connection to server server129/10.9.2.129:2181. Will not attempt to authenticate using SASL (无法定位登录配置)
13/07/23 09:15:54 INFO zookeeper.ClientCnxn: Socket connection established to server129/10.9.2.129:2181, initiating session
13/07/23 09:15:54 INFO zookeeper.ClientCnxn: Session establishment complete on server server129/10.9.2.129:2181, sessionid = 0x1400461879f0027, negotiated timeout = 180000
13/07/23 09:15:54 WARN client.HConnectionManager$HConnectionImplementation: Encountered problems when prefetch META table:
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in .META. for table: BENCHAGGREGATION, row=BENCHAGGREGATION,,99999999999999
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:164)
at org.apache.hadoop.hbase.client.MetaScanner.access$000(MetaScanner.java:54)
at org.apache.hadoop.hbase.client.MetaScanner$1.connect(MetaScanner.java:133)
at org.apache.hadoop.hbase.client.MetaScanner$1.connect(MetaScanner.java:130)
at org.apache.hadoop.hbase.client.HConnectionManager.execute(HConnectionManager.java:383)
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:130)
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:105)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:947)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1002)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:889)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:846)
at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:234)
at org.apache.hadoop.hbase.client.HTable.(HTable.java:174)
at com.codefollower.lealone.test.benchmark.BenchWrite.initHTable(BenchWrite.java:128)
at com.codefollower.lealone.test.benchmark.BenchAggregation.run(BenchAggregation.java:51)
at com.codefollower.lealone.test.benchmark.BenchAggregation.main(BenchAggregation.java:30)
Exception in thread "main" org.apache.hadoop.hbase.TableNotFoundException: BENCHAGGREGATION
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1024)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:889)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:846)
at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:234)
at org.apache.hadoop.hbase.client.HTable.(HTable.java:174)
at com.codefollower.lealone.test.benchmark.BenchWrite.initHTable(BenchWrite.java:128)
at com.codefollower.lealone.test.benchmark.BenchAggregation.run(BenchAggregation.java:51)
at com.codefollower.lealone.test.benchmark.BenchAggregation.main(BenchAggregation.java:30)

性能为什么比不上coprocessor?

3千万的记录,用coprocessor count 只要27秒;
1千3百万的记录,用Lealone count则要43秒;
环境是一样的;
为什么性能比coprocessor差这么大?原理应该是差不多的呀?

insert 在split时还是出错,还是要重启;

Caused by: java.lang.RuntimeException: org.apache.hadoop.hbase.NotServingRegionException: HUGE30MSQL,207136,1374717578545.0fc800c17071d827872359419cebf181. is closing
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.add(HBasePrimaryIndex.java:72)
at com.codefollower.lealone.hbase.dbobject.table.HBaseTable.addRow(HBaseTable.java:261)
... 10 more
Caused by: org.apache.hadoop.hbase.NotServingRegionException: HUGE30MSQL,207136,1374717578545.0fc800c17071d827872359419cebf181. is closing
at org.apache.hadoop.hbase.regionserver.HRegion.startRegionOperation(HRegion.java:5675)
at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:1997)
at org.apache.hadoop.hbase.regionserver.HRegionServer.put(HRegionServer.java:2113)
at com.codefollower.lealone.hbase.dbobject.index.HBasePrimaryIndex.add(HBasePrimaryIndex.java:62)
... 11 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:199)
at com.codefollower.lealone.hbase.command.CommandParallel.executeUpdate(CommandParallel.java:128)
at com.codefollower.lealone.hbase.command.dml.InsertOrMergeSupport.update(InsertOrMergeSupport.java:122)
at com.codefollower.lealone.hbase.command.dml.HBaseInsert.update(HBaseInsert.java:55)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:365)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:199)
at com.codefollower.lealone.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:156)
at com.codefollower.lealone.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:142)
at lealone.LealoneTest.testSqlBatch(LealoneTest.java:162)
at lealone.LealoneTest.main(LealoneTest.java:285)

感觉获取的region信息还是以前的;

请教 次级索引支持的问题

我使用create index做了如下测试,有几个问题想请教一下:
按照如下步骤顺序操作

  1. CREATE TABLE IF NOT EXISTS mytest (id int primary key, name int, age int)
  2. INSERT INTO mytest(id, name, age) VALUES(1, 2, 3)
  3. create index idx on mytest(name)
  4. insert into mytest values(2,3,4)
    发现mytest表中有2条数据,但索引表idx中只有1条数据:
  5. create index之后需要什么命令触发index rebuild操作吗?
  6. 我看到idx表的column=CF:C的value=0,请问现在lealone在次级索引的value是否没有启用,直接使用了idx列name的值和id、age列的值组合而成?

下面是我在hbase中看到的情况:
scan表mytest有2条记录:
hbase(main):008:0> scan 'MYTEST'
ROW COLUMN+CELL
1 column=CF:AGE, timestamp=800052, value=\x00\x00\x00\x03
1 column=CF:ID, timestamp=800052, value=\x00\x00\x00\x01
1 column=CF:NAME, timestamp=800052, value=\x00\x00\x00\x02
1 column=CF:LEALONE_TRANSACTION_META, timestamp=800052, value=PC05:36020,800050,1
2 column=CF:AGE, timestamp=800077, value=\x00\x00\x00\x04
2 column=CF:ID, timestamp=800077, value=\x00\x00\x00\x02
2 column=CF:NAME, timestamp=800077, value=\x00\x00\x00\x03
2 column=CF:LEALONE_TRANSACTION_META, timestamp=800077, value=PC05:36020,800075,1
scan索引表idx只有1条记录:
hbase(main):007:0> scan 'IDX'
ROW COLUMN+CELL
\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x0 column=CF:C, timestamp=800051, value=0
12
\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x0 column=CF:LEALONE_TRANSACTION_META, timestamp=800051, value=PC04:36020,800049,1
12

今天重新编译新的包,执行建表报错,hbase目录以及清空,同时集群已经重启

Exception in thread "main" com.codefollower.lealone.jdbc.JdbcSQLException: General error: "com.codefollower.lealone.hbase.command.RetryableCommand$RetriesExhaustedException: java.lang.NullPointerException"; SQL statement:
create table STUDENT (ID bigint primary key,NAME varchar ,SEX char(2),AGE int,BIRTHDAY date) [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.command.RetryableCommand.execute(RetryableCommand.java:79)
at com.codefollower.lealone.hbase.command.RetryableCommand.updateInternal(RetryableCommand.java:30)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:387)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:135)
at java.lang.Thread.run(Thread.java:724)
Caused by: com.codefollower.lealone.hbase.command.RetryableCommand$RetriesExhaustedException: java.lang.NullPointerException
... 7 more
Caused by: java.lang.NullPointerException
at com.codefollower.lealone.hbase.zookeeper.TcpPortTracker.getTcpPort(TcpPortTracker.java:117)
at com.codefollower.lealone.hbase.zookeeper.ZooKeeperAdmin.getTcpPort(ZooKeeperAdmin.java:133)
at com.codefollower.lealone.hbase.util.HBaseUtils.createURL(HBaseUtils.java:208)
at com.codefollower.lealone.hbase.util.HBaseUtils.getMasterURL(HBaseUtils.java:250)
at com.codefollower.lealone.hbase.engine.SessionRemotePool.getMasterSessionRemote(SessionRemotePool.java:78)
at com.codefollower.lealone.hbase.engine.SessionRemotePool.getMasterCommandRemote(SessionRemotePool.java:86)
at com.codefollower.lealone.hbase.command.ddl.DefineCommandWrapper.update(DefineCommandWrapper.java:61)
at com.codefollower.lealone.hbase.command.RetryableCommand.execute(RetryableCommand.java:44)
... 6 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:588)
at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:199)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:129)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:114)
at lealone.demo.CreateTableDemo.main(CreateTableDemo.java:19)

关闭connection的时候,经常会阻塞,代码就是一个普通的select

名称: main
状态: RUNNABLE
总阻止数: 1, 总等待数: 1

堆栈跟踪:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
java.net.SocketInputStream.read(Unknown Source)
java.io.BufferedInputStream.fill(Unknown Source)
java.io.BufferedInputStream.read(Unknown Source)

  • 已锁定java.io.BufferedInputStream@41fbfa37
    java.io.DataInputStream.readChar(Unknown Source)
    com.codefollower.lealone.value.Transfer.readString(Transfer.java:255)
    com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
    com.codefollower.lealone.engine.SessionRemote.getUndoLogPos(SessionRemote.java:150)
    com.codefollower.lealone.jdbc.JdbcConnection.close(JdbcConnection.java:351)
  • 已锁定com.codefollower.lealone.engine.SessionRemote@5e852b9
  • 已锁定com.codefollower.lealone.jdbc.JdbcConnection@578ef2b6
    lealone.demo.SelectDemo.main(SelectDemo.java:28)

代码
Connection con = ConnectionDemo.getConnection();

    Statement st = con.createStatement();
    ResultSet rs = st.executeQuery("select * from student where name like '%test1%' ");

    //show result
    //Utils.dump(rs);
    rs.close();

    st.close();
    con.close();

SelectTest测试用例在伪分布式模式下出现Column not found

com.codefollower.lealone.jdbc.JdbcSQLException: Column "CF1.F1" not found; SQL statement:
IN THE REGION 'SELECTTEST,25,1374639371702.1c5c375c6a86318ee26319cafd3dea76.','SELECTTEST,75,1374639371703.ab7cc139a862802769724204a379b506.' SELECT
    CF1.F1,
    COUNT(CF1.F1),
    (CF1.F1 >= 'a1')
FROM PUBLIC.SELECTTEST
    /* PUBLIC.SELECTTEST_DATA */
GROUP BY CF1.F1
HAVING CF1.F1 >= 'a1' [42122-171]
    at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
    at com.codefollower.lealone.message.DbException.get(DbException.java:170)
    at com.codefollower.lealone.message.DbException.get(DbException.java:147)
    at com.codefollower.lealone.expression.ExpressionColumn.optimize(ExpressionColumn.java:199)
    at com.codefollower.lealone.expression.Comparison.optimize(Comparison.java:164)
    at com.codefollower.lealone.command.dml.Select.prepare(Select.java:949)
    at com.codefollower.lealone.hbase.command.dml.HBaseSelect.prepare(HBaseSelect.java:42)
    at com.codefollower.lealone.command.Parser.prepare(Parser.java:205)
    at com.codefollower.lealone.engine.Session.prepare(Session.java:397)
    at com.codefollower.lealone.hbase.command.CommandParallel.executeQuery(CommandParallel.java:83)
    at com.codefollower.lealone.hbase.command.dml.HBaseSelect.query(HBaseSelect.java:65)
    at com.codefollower.lealone.command.dml.Query.query(Query.java:284)
    at com.codefollower.lealone.hbase.command.RetryableCommand.execute(RetryableCommand.java:46)
    at com.codefollower.lealone.hbase.command.RetryableCommand.queryInternal(RetryableCommand.java:35)
    at com.codefollower.lealone.command.CommandContainer.query(CommandContainer.java:91)
    at com.codefollower.lealone.command.Command.executeQuery(Command.java:196)
    at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:330)
    at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
    at java.lang.Thread.run(Thread.java:662)

    at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
    at com.codefollower.lealone.command.CommandRemote.executeQuery(CommandRemote.java:158)
    at com.codefollower.lealone.hbase.command.CommandParallel$1.call(CommandParallel.java:105)
    at com.codefollower.lealone.hbase.command.CommandParallel$1.call(CommandParallel.java:1)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

    at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
    at com.codefollower.lealone.command.CommandRemote.executeQuery(CommandRemote.java:158)
    at com.codefollower.lealone.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:77)
    at com.codefollower.lealone.test.jdbc.TestBase.printResultSet(TestBase.java:227)
    at com.codefollower.lealone.test.jdbc.dml.SelectTest.groupBy(SelectTest.java:92)
    at com.codefollower.lealone.test.jdbc.dml.SelectTest.testSelect(SelectTest.java:67)
    at com.codefollower.lealone.test.jdbc.dml.SelectTest.run(SelectTest.java:35)

我的测试程序和BenchAggregation的差异

我的测试程序是通过JDBC在客户端建的表;建表语句如下;
和你的不同在于,有一个primary key 和timestamp类型;
另外我们的数据是通过JDBC的客户端用insert插入的;而不是hbase put;

最终的差别就是在select时,你的测试方法在十几秒;而我的测试结果是几百秒。
我想差别就是,create table的方法和insert数据的方法不同。
但不知道是什么原因;

public void createTable() {

    String url = "jdbc:lealone:tcp://10.9.0.192:9092/hbasedb";
    try {
        conn = DriverManager.getConnection(url, "sa", "");
        Statement stmt = conn.createStatement();
         //stmt.executeUpdate("Delete from hugetest1");
        stmt.executeUpdate("DROP TABLE IF EXISTS " + tableName);
        stmt.executeUpdate("CREATE TABLE IF NOT EXISTS " + tableName + "("
                + "       id varchar2(30) PRIMARY KEY, "
                + "          date_time    TIMESTAMP,"
                + "              micro_sec    INT,"
                + "                host_id TINYINT,"
                + "                station_id TINYINT,"
                + "                direct  FLOAT,"
                + "                strength     FLOAT ,"
                + "                stroke  TINYINT,"
                + "                save_time    TIMESTAMP"
                + "               )");
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Exception in thread "main" com.codefollower.lealone.jdbc.JdbcSQLException: (Message 90086 not found)

错误:
CREATE TABLE IF NOT EXISTS test (f1 int primary key, f2 long) [90086-170]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.util.Utils.loadUserClass(Utils.java:587)
at com.codefollower.lealone.dbobject.Schema.createTable(Schema.java:550)
at com.codefollower.lealone.command.ddl.CreateTable.update(CreateTable.java:135)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:241)
at com.codefollower.lealone.hbase.command.CommandProxy.executeUpdate(CommandProxy.java:228)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:354)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:132)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: HBASE
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at com.codefollower.lealone.util.Utils.loadUserClass(Utils.java:582)
... 8 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:578)
at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:197)
at com.codefollower.lealone.hbase.command.CommandProxy.executeUpdate(CommandProxy.java:228)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:354)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:132)
at java.lang.Thread.run(Thread.java:662)

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:578)
at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:197)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:127)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:112)

删除表的时候报错

Exception in thread "main" com.codefollower.lealone.jdbc.JdbcSQLException: Table "STUDENT" already exists; SQL statement:
drop table IF EXISTS COURSE [42101-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:170)
at com.codefollower.lealone.message.DbException.get(DbException.java:147)
at com.codefollower.lealone.command.ddl.CreateTable.update(CreateTable.java:109)
at com.codefollower.lealone.hbase.command.ddl.DefineCommandWrapper.update(DefineCommandWrapper.java:52)
at com.codefollower.lealone.hbase.engine.HBaseDatabase.executeSQL(HBaseDatabase.java:124)
at com.codefollower.lealone.hbase.metadata.DDLRedoTable.redoRecords(DDLRedoTable.java:105)
at com.codefollower.lealone.hbase.zookeeper.DDLRedoTableTracker.refresh(DDLRedoTableTracker.java:54)
at com.codefollower.lealone.hbase.engine.HBaseDatabase.refreshDDLRedoTable(HBaseDatabase.java:79)
at com.codefollower.lealone.hbase.command.ddl.DefineCommandWrapper.refreshMetaTable(DefineCommandWrapper.java:90)
at com.codefollower.lealone.hbase.command.ddl.DefineCommandWrapper.update(DefineCommandWrapper.java:66)
at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:365)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:724)

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
at com.codefollower.lealone.command.CommandRemote.executeUpdate(CommandRemote.java:199)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:127)
at com.codefollower.lealone.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:112)
at lealone.demo.CreateTableDemo.main(CreateTableDemo.java:30)

删除的又不是student表,怎么会提示student存在呢,也没设置主外键

讨论一个问题:有没有可能,在hbase中修改region split的方法;

hbase现在region split之后,就会发生 region 找不到的现象,影响系统性能。
有没有可能采取一种方法split后原来的region还保留,只是增加一个新的region;

这样rowkey的排序就无法保持了;

如果既要保持rowkey排序,又要保持region,有什么好的方法吗?

limit1, 结果为5;

select * from benchAggregation limit = 1;
出来的结果是5个;
应该是每个region做了limit,但最后merge的时候好像没有;

顺便提个建议;
你找一个sql的工具,然后随便测试sql语句,发现的问题,比写测试程序发现的问题会多些,就目前来说。

使用serial字段类型时, insert记录会报错[90036-171]

测试sql:

CREATE TABLE IF NOT EXISTS test (f1 serial PRIMARY KEY, f2 long)
INSERT INTO test(f1, f2) VALUES(1, 2)

异常信息:

com.codefollower.lealone.jdbc.JdbcSQLException: Sequence "SYSTEM_SEQUENCE_41FD523C_7EF8_4756_B45A_D0C9C1498877" not found; SQL statement:
ALTER SEQUENCE PUBLIC.SYSTEM_SEQUENCE_41FD523C_7EF8_4756_B45A_D0C9C1498877 NEXT VALUE MARGIN [90036-171]
    at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
    at com.codefollower.lealone.message.DbException.get(DbException.java:170)
    at com.codefollower.lealone.message.DbException.get(DbException.java:147)
    at com.codefollower.lealone.dbobject.Schema.getSequence(Schema.java:470)
    at com.codefollower.lealone.hbase.command.HBaseParser.parseAlterSequence(HBaseParser.java:180)
    at com.codefollower.lealone.command.Parser.parseAlter(Parser.java:4392)
    at com.codefollower.lealone.command.Parser.parsePrepared(Parser.java:315)
    at com.codefollower.lealone.command.Parser.parse(Parser.java:281)
    at com.codefollower.lealone.command.Parser.parse(Parser.java:253)
    at com.codefollower.lealone.hbase.command.HBaseParser.parse(HBaseParser.java:293)
    at com.codefollower.lealone.command.Parser.prepareCommand(Parser.java:220)
    at com.codefollower.lealone.engine.Session.prepareCommand(Session.java:433)
    at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:289)
    at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:136)
    at java.lang.Thread.run(Thread.java:662)

    at com.codefollower.lealone.engine.SessionRemote.parseError(SessionRemote.java:607)
    at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:589)
    at com.codefollower.lealone.command.CommandRemote.prepare(CommandRemote.java:67)
    at com.codefollower.lealone.command.CommandRemote.<init>(CommandRemote.java:47)
    at com.codefollower.lealone.engine.SessionRemote.prepareCommand(SessionRemote.java:462)
    at com.codefollower.lealone.hbase.engine.SessionRemotePool.getCommandRemote(SessionRemotePool.java:123)
    at com.codefollower.lealone.hbase.dbobject.HBaseSequence.flush(HBaseSequence.java:46)
    at com.codefollower.lealone.dbobject.table.Column.updateSequenceIfRequired(Column.java:428)
    at com.codefollower.lealone.dbobject.table.Column.validateConvertUpdateSequence(Column.java:410)
    at com.codefollower.lealone.dbobject.table.Table.validateConvertUpdateSequence(Table.java:709)
    at com.codefollower.lealone.command.dml.Insert.insertRows(Insert.java:112)
    at com.codefollower.lealone.command.dml.Insert.update(Insert.java:85)
    at com.codefollower.lealone.hbase.command.dml.HBaseInsert.internalUpdate(HBaseInsert.java:70)
    at com.codefollower.lealone.hbase.command.dml.InsertOrMergeSupport.update(InsertOrMergeSupport.java:123)
    at com.codefollower.lealone.hbase.command.dml.HBaseInsert.update(HBaseInsert.java:55)
    at com.codefollower.lealone.hbase.command.RetryableCommand.execute(RetryableCommand.java:44)
    at com.codefollower.lealone.hbase.command.RetryableCommand.updateInternal(RetryableCommand.java:30)
    at com.codefollower.lealone.command.CommandContainer.update(CommandContainer.java:76)
    at com.codefollower.lealone.command.Command.executeUpdate(Command.java:235)
    at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:382)
    at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:136)
    at java.lang.Thread.run(Thread.java:662)

关于 lealone关联查询的问题

能正常查询:
select s.* from student s left join student_class sc where s.stu.ID = sc.student_id
无法正常查询:
select s.* from student s left join student_class sc on s.stu.ID = sc.student_id;
目前使用ON 的方式查询都无法正常查询。
目前,测试好像不支持 H2 的其它的 如: right join 之类的查询,是否是当前没有实现完成。

同时,如果主键上再建索引,是无法通过主键查询的数据的。

更新后,数据库连接时会报错

已经清掉了老的元数据表,重启了几次hbase才重新创建成功,但是使用jdbc进行查询时候,会报异常。
com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.RuntimeException: com.codefollower.lealone.message.DbException: General error: ""java.lang.NullPointerException"" [50000-171]"; SQL statement:
SELECT count(*) FROM HUGE10M [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.command.dml.HBaseSelect.query(HBaseSelect.java:71)
at com.codefollower.lealone.command.dml.Query.query(Query.java:284)
at com.codefollower.lealone.hbase.command.RetryableCommand.execute(RetryableCommand.java:46)
at com.codefollower.lealone.hbase.command.RetryableCommand.queryInternal(RetryableCommand.java:35)
at com.codefollower.lealone.command.CommandContainer.query(CommandContainer.java:91)
at com.codefollower.lealone.command.Command.executeQuery(Command.java:196)
at com.codefollower.lealone.server.TcpServerThread.process(TcpServerThread.java:330)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:133)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: com.codefollower.lealone.message.DbException: General error: "java.lang.NullPointerException" [50000-171]
at com.codefollower.lealone.hbase.util.HBaseUtils.getSQLRoutingInfo(HBaseUtils.java:458)
at com.codefollower.lealone.hbase.command.dml.HBaseSelect.query(HBaseSelect.java:69)
... 8 more
Caused by: com.codefollower.lealone.message.DbException: General error: "java.lang.NullPointerException" [50000-171]
at com.codefollower.lealone.message.DbException.convert(DbException.java:270)
at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:590)
at com.codefollower.lealone.engine.SessionRemote.initTransfer(SessionRemote.java:122)
at com.codefollower.lealone.engine.SessionRemote.connectServer(SessionRemote.java:412)
at com.codefollower.lealone.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:298)
at com.codefollower.lealone.hbase.engine.SessionRemotePool.getSessionRemote(SessionRemotePool.java:71)
at com.codefollower.lealone.hbase.engine.SessionRemotePool.getCommandRemote(SessionRemotePool.java:97)
at com.codefollower.lealone.hbase.util.HBaseUtils.getSQLRoutingInfo(HBaseUtils.java:453)
... 9 more
Caused by: com.codefollower.lealone.jdbc.JdbcSQLException: General error: "java.lang.NullPointerException" [50000-171]
at com.codefollower.lealone.message.DbException.getJdbcSQLException(DbException.java:330)
at com.codefollower.lealone.message.DbException.get(DbException.java:159)
at com.codefollower.lealone.message.DbException.convert(DbException.java:282)
at com.codefollower.lealone.hbase.engine.HBaseDatabase.openMetaTable(HBaseDatabase.java:102)
at com.codefollower.lealone.engine.Database.open(Database.java:509)
at com.codefollower.lealone.engine.Database.openDatabase(Database.java:236)
at com.codefollower.lealone.engine.Database.init(Database.java:231)
at com.codefollower.lealone.hbase.engine.HBaseDatabase.init(HBaseDatabase.java:62)
at com.codefollower.lealone.engine.DatabaseEngineBase.openSession(DatabaseEngineBase.java:156)
at com.codefollower.lealone.engine.DatabaseEngineBase.openSession(DatabaseEngineBase.java:91)
at com.codefollower.lealone.engine.DatabaseEngineBase.createSessionAndValidate(DatabaseEngineBase.java:73)
at com.codefollower.lealone.engine.DatabaseEngineBase.createSession(DatabaseEngineBase.java:57)
at com.codefollower.lealone.hbase.server.HBaseTcpServerThread.createSession(HBaseTcpServerThread.java:86)
at com.codefollower.lealone.server.TcpServerThread.run(TcpServerThread.java:120)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at org.apache.hadoop.hbase.util.Bytes.toInt(Bytes.java:662)
at org.apache.hadoop.hbase.util.Bytes.toInt(Bytes.java:639)
at com.codefollower.lealone.hbase.metadata.MetaDataTable.getMetaRecord(MetaDataTable.java:110)
at com.codefollower.lealone.hbase.metadata.MetaDataTable.loadMetaRecords(MetaDataTable.java:63)
at com.codefollower.lealone.hbase.engine.HBaseDatabase.openMetaTable(HBaseDatabase.java:100)
... 11 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
... 15 more

at com.codefollower.lealone.engine.SessionRemote.done(SessionRemote.java:583)
at com.codefollower.lealone.command.CommandRemote.executeQuery(CommandRemote.java:158)
at com.codefollower.lealone.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:77)
at lealone.LealoneTest.testCount(LealoneTest.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

两个表依据各自的ID无法join

com.codefollower.lealone.jdbc.JdbcSQLException: Ambiguous column name "ID"; SQL statement: select aa.cf.name from stu aa join grade s on aa.cf.id = s.cf.uid [90059-171]

stu表和grade表都有id的

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.