gpt_academic icon indicating copy to clipboard operation
gpt_academic copied to clipboard

支持过滤代码中不重要的部份

Open timlincool opened this issue 1 year ago • 3 comments

以starrocks项目为例 https://github.com/StarRocks/starrocks/blob/branch-2.3/be/src/common/config.h

前面会有 // This file is made available under Elastic License 2.0. // This file is based on code available under the Apache license here: // https://github.com/apache/incubator-doris/blob/master/be/src/common/config.h

// Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License.

这每个文件都有 ,其实是不需要的, 可以极大减少token

另外import 什么类 ,这个不确定是否必须 ,如果没有import出来的结果也差不多的话 也可以不需要

timlincool avatar Apr 13 '23 12:04 timlincool

由于这些输入 会导致许多不重要的输出 例如引用了什么类 ,属于什么包 ,路径在哪 , 包含了 Apache 开源许可证 等等例如 :

[1851/2191] 请对下面的程序文件做一个概述: E:\github-code\starrocks\fe\fe-core\src\main\java\com\starrocks\sql\optimizer\rule\implementation\NestLoopJoinImplementationRule.java

该文件是一个Java源代码文件,位于路径com/starrocks/sql/optimizer/rule/implementation/NestLoopJoinImplementationRule.java。该文件定义了一个实现规则(Implementation Rule),即NestLoopJoinImplementationRule类,用于将逻辑Join操作转换为物理Nest Loop Join操作。这个类具有以下功能:

实现了JoinImplementationRule抽象类中的抽象方法,包括检查是否适用于实现规则(check)和实际的实现转换(transform)。

重写了check方法,该方法检查传递进来的表达式是否包含等值连接谓词,并且其连接类型是否是INNER/CROSS/OUTER/LEFT ANTI/LEFT SEMI类型之一。如果不是,则不适用于Nest Loop Join实现。

重写了transform方法,该方法将逻辑Join操作转换为物理Nest Loop Join操作。具体转换过程包括将右连接转换为左连接、创建物理Nest Loop Join操作符并将逻辑Join操作的属性(如连接类型、连接谓词等)设置到物理操作符中、创建新的OptExpression对象并返回。

该文件还导入了其他Java包和类,包括: - com.google.common.collect.Lists - com.starrocks.analysis.JoinOperator - com.starrocks.sql.analyzer.SemanticException - com.starrocks.sql.optimizer.OptExpression - com.starrocks.sql.optimizer.OptimizerContext - com.starrocks.sql.optimizer.operator.logical.LogicalJoinOperator - com.starrocks.sql.optimizer.operator.physical.PhysicalNestLoopJoinOperator - com.starrocks.sql.optimizer.operator.scalar.BinaryPredicateOperator - com.starrocks.sql.optimizer.rule.RuleType - com.starrocks.sql.optimizer.rule.transformation.JoinCommutativityRule - org.apache.commons.collections.CollectionUtils

[1850/2191] 请对下面的程序文件做一个概述: E:\github-code\starrocks\fe\fe-core\src\main\java\com\starrocks\sql\optimizer\rule\implementation\MysqlScanImplementationRule.java

该程序文件是一个Java类,位于com.starrocks.sql.optimizer.rule.implementation包中,文件名为MysqlScanImplementationRule.java。该文件实现了一个实现规则,将逻辑的MysqlScanOperator转换为物理的PhysicalMysqlScanOperator,以进行实际的扫描操作。它使用了OptExpression和OptimizerContext类,重写了父类ImplementationRule中的transform方法。

[588/2191] 请对下面的程序文件做一个概述: E:\github-code\starrocks\fe\fe-core\src\main\java\com\starrocks\connector\iceberg\rest\IcebergRESTCatalog.java

该文件是 com.starrocks.connector.iceberg.rest 包下的一个 IcebergRESTCatalog 类的实现代码文件。该类通过继承 RESTCatalog 实现了 IcebergCatalog 接口,是一个 IcebergCatalog 的 REST 实现。类中定义了多个方法,包括获取 Catalog 类型、加载表、列出所有数据库、获取数据库等。同时,类中也引入了 Iceberg 和 Google Guava 等第三方包。

[122/2191] 请对下面的程序文件做一个概述: E:\github-code\starrocks\fe\fe-core\src\main\java\com\starrocks\backup\SnapshotInfo.java

该文件是Java编写的,位于路径com/starrocks/backup/SnapshotInfo.java。该文件定义了SnapshotInfo类,实现了Writable接口。

SnapshotInfo类包含如下属性:

dbId: long类型,表示数据库ID tblId: long类型,表示表ID partitionId: long类型,表示分区ID indexId: long类型,表示索引ID tabletId: long类型,表示Tablet ID beId: long类型,表示Backend ID schemaHash: int类型,表示模式哈希 path: String类型,表示快照路径 files: List类型,表示文件列表 同时,该文件包含如下函数:

SnapshotInfo():构造函数 SnapshotInfo(long dbId, long tblId, long partitionId, long indexId, long tabletId,long beId, int schemaHash, String path, List files):构造函数 getDbId():获取dbId属性 getTblId():获取tblId属性 getPartitionId():获取partitionId属性 getIndexId():获取indexId属性 getTabletId():获取tabletId属性 getBeId():获取beId属性 getSchemaHash():获取schemaHash属性 getPath():获取path属性 getFiles():获取files属性 setFiles(List files):设置files属性 getTabletPath():获取表路径 read(DataInput in):读入操作 write(DataOutput out):写出操作 readFields(DataInput in):读取字段 toString():获取字符串形式的SnapshotInfo equals(Object o):比较两个SnapshotInfo对象是否相同 hashCode():获取哈希码

[106/2191] 请对下面的程序文件做一个概述: E:\github-code\starrocks\fe\fe-core\src\main\java\com\starrocks\authentication\UserProperty.java

该程序文件是一个 Java 类文件,文件名为 UserProperty,位于 com.starrocks.authentication 包下。该类定义了用户属性,其中包含了一个用于设置最大连接数的方法 update 和获取最大连接数的方法 getMaxConn。该类还包含了一个静态常量 PROP_MAX_USER_CONNECTIONS,用于存储最大用户连接数的属性名。该类使用了 com.google.gson 和 com.starrocks.common 两个包,并引用了 com.starrocks.sql.ast.SetUserPropertyVar 类。该类还声明了一个 SerializedName 注解,用于设置序列化时使用的名称。该程序文件还包含了 Apache 开源许可证。

该程序文件是一个 Java 类文件,文件名为 UserProperty,位于 com.starrocks.authentication 包下。该类定义了用户属性,其中包含了一个用于设置最大连接数的方法 update 和获取最大连接数的方法 getMaxConn。该类还包含了一个静态常量 PROP_MAX_USER_CONNECTIONS,用于存储最大用户连接数的属性名。该类使用了 com.google.gson 和 com.starrocks.common 两个包,并引用了 com.starrocks.sql.ast.SetUserPropertyVar 类。该类还声明了一个 SerializedName 注解,用于设置序列化时使用的名称。该程序文件还包含了 Apache 开源许可证。

timlincool avatar Apr 13 '23 14:04 timlincool

最终整合的时后也有问题 , 总共花了七刀,看到最后的总结,估计不可能可以生成表格 , 还是果断停止了 , 会出现 [Local Message] 警告,文本过长将进行截断,Token溢出数:不详。 因为要生成表格 ,要把之前的类也放进去 ,但是长度过长 ,就一直重试 ,导致重复生成相同的前缀

timlincool avatar Apr 13 '23 14:04 timlincool

如果不介意直接将所有注释删除的话 实现应该并不复杂,但是只是做到去重的话可能可以利用cache优化?

codycjy avatar Apr 24 '23 07:04 codycjy