From 9701d4144edfbfd133d84873a42849abd660fe34 Mon Sep 17 00:00:00 2001 From: Student For <58420932+Student-For@users.noreply.github.com> Date: Fri, 7 Apr 2023 12:20:08 +0800 Subject: [PATCH] =?UTF-8?q?table=20=E4=BF=AE=E5=A4=8Dselcet=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=AD=97=E6=AE=B5=E6=9F=A5=E8=AF=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../top/guoziyang/mydb/backend/tbm/Table.java | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/main/java/top/guoziyang/mydb/backend/tbm/Table.java b/src/main/java/top/guoziyang/mydb/backend/tbm/Table.java index 05a7a70..c124f05 100644 --- a/src/main/java/top/guoziyang/mydb/backend/tbm/Table.java +++ b/src/main/java/top/guoziyang/mydb/backend/tbm/Table.java @@ -138,7 +138,7 @@ public int update(long xid, Update update) throws Exception { entry.put(fd.fieldName, value); raw = entry2Raw(entry); long uuid = ((TableManagerImpl)tbm).vm.insert(xid, raw); - + count ++; for (Field field : fields) { @@ -157,7 +157,7 @@ public String read(long xid, Select read) throws Exception { byte[] raw = ((TableManagerImpl)tbm).vm.read(xid, uid); if(raw == null) continue; Map entry = parseEntry(raw); - sb.append(printEntry(entry)).append("\n"); + sb.append(printEntry(entry, read)).append("\n"); } return sb.toString(); } @@ -261,12 +261,31 @@ private CalWhereRes calWhere(Field fd, Where where) throws Exception { return res; } - private String printEntry(Map entry) { + private String printEntry(Map entry, Select select) { StringBuilder sb = new StringBuilder("["); - for (int i = 0; i < fields.size(); i++) { - Field field = fields.get(i); - sb.append(field.printValue(entry.get(field.fieldName))); - if(i == fields.size()-1) { + + //获取select中需要的字段 + int selectFieldsLen = select.fields.length; + List printField = new ArrayList<>(); + if(selectFieldsLen > 0 && select.fields[0].equals("*")) { + printField = fields; + } else { + for (int i = 0; i < selectFieldsLen; i++) { + for(Field field : fields) { + if(field.fieldName.equals(select.fields[i])) { + printField.add(field); + break; + } + } + } + } + + //向sb中添加需要字段的value + int len = printField.size(); + for (int i = 0; i < len; i++) { + Field fd = printField.get(i); + sb.append(fd.printValue(entry.get(fd.fieldName))); + if(i == len-1) { sb.append("]"); } else { sb.append(", ");