@@ -469,7 +469,7 @@ String ServiceDatabase::getInstalledPackageHash(const PackageId &p) const
469469 return q.front ().hash .value ();
470470}
471471
472- int ServiceDatabase::getInstalledPackageId (const PackageId &p) const
472+ int64_t ServiceDatabase::getInstalledPackageId (const PackageId &p) const
473473{
474474 const auto ipkgs = db::service::InstalledPackage{};
475475 auto q = (*db)(select (ipkgs.installedPackageId ).from (ipkgs).where (ipkgs.path == p.ppath .toString () and ipkgs.version == p.version .toString ()));
@@ -480,7 +480,7 @@ int ServiceDatabase::getInstalledPackageId(const PackageId &p) const
480480
481481int ServiceDatabase::getInstalledPackageConfigId (const PackageId &p, const String &config) const
482482{
483- int pid = getInstalledPackageId (p);
483+ auto pid = getInstalledPackageId (p);
484484 if (pid == 0 )
485485 {
486486 LOG_DEBUG (logger, " PackageId is not installed: " + p.target_name );
@@ -804,11 +804,10 @@ IdDependencies PackagesDatabase::findDependencies(const UnresolvedPackages &deps
804804
805805 project.id = q.front ().packageId .value ();
806806
807+ project.id = getExactProjectVersionId (project, project.version , project.flags , project.hash , project.group_number , project.prefix );
807808 project.flags .set (pfDirectDependency);
808- project.id = getExactProjectVersionId (project, project.version , project.flags , project.hash , project.group_number );
809809 all_deps[project] = project; // assign first, deps assign second
810810 all_deps[project].db_dependencies = getProjectDependencies (project.id , all_deps);
811-
812811 }
813812
814813 // make id deps
@@ -839,7 +838,7 @@ void check_version_age(const std::string &created)
839838 throw std::runtime_error (" One of the queried packages is 'young'. Young packages must be retrieved from server." );
840839}
841840
842- db::PackageVersionId PackagesDatabase::getExactProjectVersionId (const DownloadDependency &project, Version &version, SomeFlags &flags, String &hash, PackageVersionGroupNumber &gn) const
841+ db::PackageVersionId PackagesDatabase::getExactProjectVersionId (const DownloadDependency &project, Version &version, SomeFlags &flags, String &hash, PackageVersionGroupNumber &gn, int &prefix ) const
843842{
844843 auto err = [](const auto &p, const auto &r)
845844 {
@@ -866,7 +865,7 @@ db::PackageVersionId PackagesDatabase::getExactProjectVersionId(const DownloadDe
866865
867866 id = version_ids[v.value ()];
868867 auto q = (*db)(
869- select (pkg_ver.hash , pkg_ver.flags , pkg_ver.updated , pkg_ver.groupNumber )
868+ select (pkg_ver.hash , pkg_ver.flags , pkg_ver.updated , pkg_ver.groupNumber , pkg_ver. prefix )
870869 .from (pkg_ver)
871870 .where (pkg_ver.packageVersionId == id));
872871 auto &row = q.front ();
@@ -875,6 +874,7 @@ db::PackageVersionId PackagesDatabase::getExactProjectVersionId(const DownloadDe
875874 flags = row.flags .value ();
876875 check_version_age (row.updated .value ());
877876 gn = row.groupNumber .value ();
877+ prefix = row.prefix .value ();
878878
879879 return id;
880880}
@@ -896,7 +896,7 @@ PackagesDatabase::Dependencies PackagesDatabase::getProjectDependencies(db::Pack
896896 dependency.id = row.packageId .value ();
897897 dependency.ppath = row.path .value ();
898898 dependency.range = row.versionRange .value ();
899- dependency.id = getExactProjectVersionId (dependency, dependency.version , dependency.flags , dependency.hash , dependency.group_number );
899+ dependency.id = getExactProjectVersionId (dependency, dependency.version , dependency.flags , dependency.hash , dependency.group_number , dependency. prefix );
900900 auto i = dm.find (dependency);
901901 if (i == dm.end ())
902902 {
@@ -940,7 +940,8 @@ Version PackagesDatabase::getExactVersionForPackage(const PackageId &p) const
940940 SomeFlags f;
941941 String h;
942942 PackageVersionGroupNumber gn;
943- getExactProjectVersionId (d, v, f, h, gn);
943+ int prefix;
944+ getExactProjectVersionId (d, v, f, h, gn, prefix);
944945 return v;
945946}
946947
0 commit comments