Skip to content

Commit eb99790

Browse files
authored
slave获取报错bug修复 (#2839)
* mongodb comment 检测问题修复 * 修复获取slave的bug * lint * edit mongo test
1 parent b71b2c5 commit eb99790

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

sql/engines/mongo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ def _build_cmd(
368368
else:
369369
cmd_template = (
370370
"{mongo} --quiet {auth_options} {host}:{port}/{auth_db} <<\\EOF\n"
371-
"db=db.getSiblingDB('{db_name}');{slave_ok}printjson({sql})\nEOF"
371+
"db=db.getSiblingDB('{db_name}');{slave_ok}{sql}\nEOF"
372372
)
373373
# 长度不超限直接mongo shell,无需临时文件
374374
common_params["sql"] = sql
@@ -397,7 +397,7 @@ def get_slave(self):
397397

398398
sql = """var host=""; rs.status().members.forEach(function(item) {i=1; if (item.stateStr =="SECONDARY") \
399399
{host=item.name } }); print(host);"""
400-
slave_msg = self.exec_cmd(sql)
400+
slave_msg = self.exec_cmd(sql, db_name=self.db_name)
401401
# 如果是阿里云的云mongodb,会获取不到备节点真实的ip和端口,那就干脆不获取,直接用主节点来执行sql
402402
# 如果是自建mongodb,获取到备节点的ip是192.168.1.33:27019这样的值;但如果是阿里云mongodb,获取到的备节点ip是SECONDARY、hiddenNode这样的值
403403
# 所以,为了使代码更加通用,通过有无冒号来判断自建Mongod还是阿里云mongdb;没有冒号就判定为阿里云mongodb,直接返回false;

sql/engines/test_mongo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def test_build_cmd_without_load(mongo_engine):
4848
# Expected command template
4949
expected_cmd = (
5050
"mongo --quiet -u test_user -p 'test_password' localhost:27017/admin <<\\EOF\n"
51-
"db=db.getSiblingDB('test_db');rs.slaveOk();printjson(db.test_collection.find())\nEOF"
51+
"db=db.getSiblingDB('test_db');rs.slaveOk();db.test_collection.find()\nEOF"
5252
)
5353

5454
# Assertions
@@ -72,7 +72,7 @@ def test_build_cmd_without_auth(mongo_engine):
7272
# Expected command template
7373
expected_cmd = (
7474
"mongo --quiet localhost:27017/admin <<\\EOF\n"
75-
"db=db.getSiblingDB('test_db');rs.slaveOk();printjson(db.test_collection.find())\nEOF"
75+
"db=db.getSiblingDB('test_db');rs.slaveOk();db.test_collection.find()\nEOF"
7676
)
7777

7878
# Assertions

0 commit comments

Comments
 (0)