GSoC 2026 Week 2 Report: Implementation of Planar Face Extraction and K-Core Decomposition Algorithms to pgRouting

Md Sakir Ahmed
Github id: sakirr05

Mentors: @cvvergara, @robe
Organization: OSGeo / pgRouting
OSGeo Profile: OSGeo Profile Link
Project Wiki: Github Wiki Link
Repository: Repo Link

Hello everyone,

This is my second weekly report of Official coding period for GSoC 2026.

Week 2 Report (1 June ~ 7 June)

What did I get done this week?

Attended Monday meeting where mentor Vicky reviewed Week 1 PRs and gave feedback on file structure and naming conventions.

pgr_planarFaces (PR #563):

  • Implemented the face traversal algorithm using Boost’s boyer_myrvold_planarity_test and planar_face_traversal with a custom FaceVisitor that records seq, face_id, edge_id, and side for each edge-face incidence
  • Removed old planarFaces_process.cpp and planarFaces_driver.hpp — replaced with the new driver pattern used across the planar directory
  • Fixed file naming convention removed incorrect pgr_ prefix from filenames
  • Added comprehensive pgtap tests 4 test files, 69 tests total:
    • edge_cases.pg (6 tests): empty graph, single edge, triangle, total rows = 2×edges, each edge appears exactly twice
    • types_check.pg (4 tests): function existence, return type, argument names
    • no_crash_test.pg (5 tests): NULL handling, valid input
    • inner_query.pg (54 tests): all column type permutations (SMALLINT, INTEGER, BIGINT, REAL, FLOAT8, NUMERIC)
  • Verified algorithm output against real PostgreSQL database

pgr_coreNumbers (PR #564):

  • Relocated all coreNumbers files from the standalone coreNumbers/ directory into the metrics/ module where they belong (alongside betweennessCentrality and bandwidth)
  • Renamed files to follow metrics naming convention removed pgr_ prefix, renamed _process.h_driver.h, _driver.hpp.hpp
  • Updated all build configurations: src/metrics/CMakeLists.txt, sql/metrics/CMakeLists.txt, configuration.conf, code_checker.sh
  • Fixed driver header, SQL files, and C SRF entry to follow the betweennessCentrality pattern (include guards, function signatures, LANGUAGE property)

Am I blocked on anything?

No

References:

1] Link to wiki page:
wiki page

2] Link to github repository:
github repository

3] Link to pull requests:
- PR #563 planarFaces
- PR #564 coreNumbers