问题标签 [search-path]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5110 浏览

r - 我们是否能够在 R 中生成已加载包的列表?

是否有一个函数可以在 R 中生成所需包的列表?类似于“pip freeze”的东西,所以我们可以快速复制环境?

0 投票
3 回答
497 浏览

sql - 关于 search_path,默认值表达式函数何时/如何绑定?

出于测试目的,我提供了我自己的now()函数实现,即public.now(). 使用我自己的版本search_path覆盖默认值pg_catalog.now()主要是可行的,但我有一个表,其中表的默认表达式为now(). 显示该表会产生类似于以下内容的内容:

但是,在模式保存和恢复(到测试数据库)之后,相同的显示表会产生

我由此假设,最初默认表达式中的函数未绑定到任何模式,search_path 将用于查找正确的模式。但是,转储或恢复操作似乎将该功能“绑定”到当前功能。

我对函数的“绑定状态”的理解是否正确?有没有办法在转储/恢复边界上保持函数的无限性?

0 投票
2 回答
6068 浏览

delphi - Delphi - 定位编译器无法在其默认路径中搜索的单元的路径

我已经下载了一个包含许多包的组件,然后我安装了所有设计时包并生成了所有其他 dcu 文件。每次创建新应用程序时,我都必须在 Delphi 搜索路径中分配其路径。有没有办法将其路径分配给 Delphi 编译器搜索路径一次,所有应用程序都可以访问这些单元,这样我就不需要每次都手动设置新应用程序的路径。

0 投票
1 回答
5751 浏览

postgresql - 强制 PostgreSQL 在函数中使用不同的模式

我想为 PG SQL 数据库中的模式创建一个更新函数。测试功能如下。它不起作用,因为它永远不应该发出通知,但会在运行时发出通知test_schema_update('second')

问题是 PG SQL 似乎SELECT每个会话只分析一次语句,然后将表固定到特定模式。有趣的是你会得到Schema was: second.

那么有没有办法重置SELECT语句分析或其他方法来解决这个问题?

旁注:所有模式创建功能(ALTER TABLECREATE TABLE...)都可以正常工作。似乎只有数据操作函数受到影响(SELECT, INSERT, UPDATE)。

解决方法

前:

后:

编辑:问题出现在 PostgreSQL 9.2 中,但似乎没有出现在 9.3 中。也许它是固定的?

0 投票
1 回答
252 浏览

python - 在开发和安装时查找资产文件(C++/Python,主要在 Linux 上)

我的项目有一个/usr/share/openage包含各种文件(图形、文本等)的全局资产目录()和一个用户特定的资产目录(~/.openage),允许用户覆盖一些全局资产/添加他们自己的。

我的理解是,在构建时,您将安装前缀传递给构建系统(例如./configure --install-prefix=/usr),然后生成一个文件(例如configure.h),该文件使安装前缀可用于代码(例如#define INSTALL_PREFIX="/usr")。然后代码将在INSTALL_PREFIX "share/openage". 到现在为止还挺好。

但是,当项目尚未安装时(对于我作为开发人员来说,99.9% 的情况都是如此),该目录/usr/share/openage显然还不存在;相反,我想./assets在当前目录中使用。更糟糕的是,如果安装的目录存在(例如,来自独立的早期安装),它可能与当前的开发版本不兼容。

同样,如果运行已安装的项目,我希望它使用用户的主目录(~/.openage)作为用户资产目录,而在“devmode”中,它应该使用像“./userassets”这样的目录。

当考虑非 POSIX 平台时,情况会变得更糟。在 Windows 上,INSTALL_PREFIX这是无用的,因为程序基本上可以安装在任何地方(程序只是使用当前工作目录还是作为资产目录?),我不知道 Mac 如何处理这个问题。

所以我的问题是:是否有普遍接受的“最好的方法”?当然,数百个项目(基本上每个具有资产目录的项目)都以一种或另一种方式处理了这个问题。

不幸的是,我什至不知道用谷歌搜索什么。我什至不知道如何标记这个问题。当前的想法(和相关问题)包括:

  • 查找openage_version仅存在于源目录中的文件cwd. 如果存在,则假定该项目当前已卸载。
    • 问题:即使在“开发模式”下,cwd也可能并不总是项目根目录。
  • 检查是否readlink("/proc/self/exe")INSTALL_PREFIX
    • 问题:特定于平台
    • 问题:理论上,项目根目录可能在/usr/myweirdhomedirectory/git/openage
  • 强制开发者指定一个参数--not-installed,或者设置一个环境变量,OPENAGE_INSTALLED=0
    • 问题:不方便
    • 问题:使用错误的资产目录时忘记指定参数会导致混淆
  • 在开发过程中,调用./configure不同的INSTALL_PREFIX
    • 问题:为安装而构建项目时,建议make test在未安装项目时运行测试
  • 前两个选项的组合:检查dirname(readlink("proc/self/exe")) + "/openage_version"
    • 问题:更加特定于平台
    • 这似乎是迄今为止最强大的选择
0 投票
3 回答
4072 浏览

postgresql - PostgreSQL \dt 命令在 search_path 模式中不显示 *ALL* 表

为什么在 PostgreSQL 中,当不同模式中存在同名表时,\dt只包含搜索路径中列出的第一个模式中的表,如下例所示?

我感兴趣的是:

  1. 这将是可取的原因,以及

  2. 给定底层查询\dt(见下文),它是如何实际实现的。

(顺便说一句,我从这个答案中意识到,\dt *.*它将列出每个模式中的每个表——但对于下面的示例,除了我做的两个之外,这给了我 58 个我不想要的系统表!)


例子

查询底层\dt(当 psql 使用 -E 命令启动时显示,例如 psql -E dt_test)

0 投票
0 回答
681 浏览

ios - 尝试在整个 Xcode 工作区中共享代码时出现“无法识别的选择器发送到类”崩溃

重现步骤:

创建一个新的 Xcode 工作区 (WorkspaceTest)。

创建一个名为“One”的单视图项目。

在工作区(不是项目)中,创建一个名为“Shared”的组。在该文件夹中创建一个名为 UIColor+Hex 的类别:

。H:

米:

转到“一个”目标构建设置并将其添加到标题搜索路径:

转到默认的 ViewController.h 并添加以下内容:

该项目编译良好,这意味着它找到了 UIColor+Hex.h。

但是,当它运行时,我得到了这个:

此方法存在于 UIColor+Hex.m 文件中。我还需要做什么?

0 投票
1 回答
14472 浏览

postgresql - 如何在 Yii2 中设置默认模式

我的 Yii2 是用 PostgreSQL 设置的。我喜欢为每个项目使用模式,而不是每个项目使用单独的数据库。稍后设置的问题是我无法弄清楚如何通过配置选择默认模式“defaultSchema”。

我遇到了迁移表的问题,因为当我运行迁移命令时它默认为“公共”模式。默认的“公共”模式还阻止使用数据库用户的 search_path。尽管我使用“search_path=myschema, public”设置了我的 db 用户,但我仍然无法在没有额外配置的情况下使用迁移,因为在运行时 Yii 会在表名中查找模式,如果没有提供它,则回退到 defaultSchema 所以不管您在数据库用户的 search_path 中拥有的内容仍将使用“public.migrations”。

在 Yii2 中设置默认模式的最佳方法是什么?是否为模式选择指定了任何配置参数?毕竟每个连接都将使用一个模式,最好通过连接配置来设置它。

0 投票
1 回答
321 浏览

python - 创建pypy进程

我想创建一个运行 PyPy 的进程。我尝试了以下方法并且有效:

但是,当我删除chdiras 时:

我得到:

请问,有谁知道如何在不更改工作目录的情况下生成 PyPy 进程?

0 投票
0 回答
1000 浏览

postgresql - 错误:更新过程 0 的缓存查找失败

我在 PostgreSQL 中有下表

当我尝试在其上运行以下 sql 脚本时,它返回错误:

错误:

我用同一个数据库中的另一个模式对其进行了测试,它工作正常。我的问题是这个模式有很多表和函数。
我创建了一个新模式并使用我的测试表进行了测试,但在恢复转储文件后它不再工作。

我怎样才能解决这个问题?